Home » Archimedes archive » Acorn User » AU 1997-Xmas A.adf » StrongHelp » !Manuals/SWI

!Manuals/SWI

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 1997-Xmas A.adf » StrongHelp
Filename: !Manuals/SWI
Read OK:
File size: 75048 bytes
Load address: 0000
Exec address: 0000
File contents
HELP(�����,����$DIR$���E������ !PreG����0
D!RootDG���L"-
,ABCLib_�G���S"-
,ABI_pG���\"-
(ADFS_�-G����"-
tArcFS_D8G����"-
pAudioManager_�=G����"-
,AWRender_�>G����"-
,BasicTrans_�>G����"-
,Borders_�?G����"-
�Buffer_GG����"-
,Cache_�GG���#-
,CAIFS_�HG���
#-
,ColourDbox_@IG���#-
,ColourExtend_�IG���#-
,ColourMenu_DJG���"#-
,ColourPicker_8KG���,#-
$ColourTrans_LlG���{#-
,DCS_�lG����#-
�DDEUtils_�rG����#-
PDebugger_�tG����#-
,DeviceFS_DuG����#-
,DitherExtend_�wG����#-
,DocumentManager_�xG����#-
�DOSFS_L�G����#-
,DragAnObject_��G����#-
�DragASprite_X�G����#-
,DrawFile_�G����#-
Draw_t�G���1$-
�Econet_x�G����$-
,Euclid_��G����$-
,FileBuffer_T�G����$-
�FileCore_`G���1%-
,FileInfo_�G���;%-
,FilerAction_�E������Filter4G���F%-
Filter_� G���`%-
,FontDbox_`!G���h%-
,FontDraw_�!G���p%-
,FontMenu_T"G���|%-
Font_@OG����%-
LFPEmulator_PG����%-
,Free_xPG����%-
,FrontEnd_�PG���&-
�fsys_PXG���&-
,GDraw_ZG���#&-
,GSpriteExtend_�ZG���+&-
,HelixBasic_[G���3&-
�Hourglass_�aG���P&-
,Hyphenator_�bG���X&-
,Iconbar_cG���`&-
,IIC_PcG���g&-
,ImageExtend_tdG���p&-
,Impulse_4eG���w&-
,Interface_<fG���&-
LJoystick_iG����&-
,LargerSupport_LjG����&-
,LZWB_�jG����&-
,Menu_HkG����&-
MessageTrans_yG����&-
,NetFS_zG����&-
,NetPrint_�zF������GNonOS�~G����&-
,OLE_`�G����&-
�OS_\eG���!--
�Parallel_PkG���8--
tPDriver_�oG���H--
,PDumper_�pG���P--
,Podule_xqG���X--
,PrintDbox_�qG���`--
,ProgInfo_trG���h--
,RamFS_�rG���o--
,ResourceFS_TsG���w--
,ROMCache_tG���~--
,SaveAs_xtG����--
,Scale_�tG����--
LScreenBlanker_vG����--
,SCSI_�vG����--
,SharedCLibrary_0wG����--
,Shell_�wG����--
PSound_�G����--
,Spch_��G����--
,Spell_H�G����--
,Squash_��G����--
,StreamSquash_��G����--
�Stream_|�G���*.-
,Super_؛G���3.-
Tswi_ПG���?.-
�TaskManager_��G���S.-
,TaskWindow_ �G���].-
�Territory_4�G����.-
,TinySupport_��G����.-
,Toolbox_T�G����.-
�Tracker_�
G���/-
Wimp_�G���3-
,VProtect_t�G���3-
,WimpExt_̤G���!3-
,ZapRedraw_T�G���(3-
,Window_8�G���03-
,Translator_��G���93-
,MakePSFont_�G���A3-
,NetMonitor_ԩG���J3-
,Diss_��G���Q3-
,MakeGIF_��G���Z3-
,Creator_d�G���a3-
,WimpKey_�F���!��DCreateHelp8�G���n3-
�ReadMail_��G����3-
tQTM_�G���
4-
,ArcFSMemMan_�G���4-
Director_�!G���84-
,RemotePrinterSupport_�"F������YNewAdded�"G���D4-
,PocketFS_$G���M4-
,PocketLink_�%G�����+
�Contributors�'G���Z4-
�JPEG_�>G����4-
,LineEditor_�?G����4-
,CompressJPEG_H@G����4-
Devent_pFG����4-
0Gdbm_DATA @-����X^�x^����DATADSWI
#Parent StrongHelp:!Menu
#Postfix _
#Table Columns 3
<ADFS>
<BasicTrans>
<Buffer>
<Cache>
<ColourTrans>
<ColourPicker>
<Debugger>
<DeviceFS>
<DOSFS>
<DragASprite>
<Draw>
<DrawFile>
<Econet>
<FileCore>
<FilerAction>
<Filter>
<Font>
<FPEmulator>
<Free>
<Hourglass>
<IIC>
<Joystick>
<JPEG>
<MessageTrans>
<NetFS>
<NetPrint>
<OS>
<Parallel>
<PDriver>
<PDumper>
<Podule>
<RamFS>
<ResourceFS>
<SCSI>
<ScreenBlanker>
<SharedCLibrary>
<Shell>
<Sound>
<Squash>
<Super>
<TaskManager>
<TaskWindow>
<Territory>
<Wimp>
#EndTable

<Non-OS calls=>NonOS>	<Contributors=>Contributors>
DIR$,,pF���M�b!RootDATAbABCLib
#Parent !Root
#Prefix ABCLib_
#Table Columns 2
Init
Register
Profile
WAC
#EndTable
DIR$,,F�����qm!RootDATAmABI
#Parent !Root
#Prefix ABI_
#Table Columns 1
Initialise
CloseDown
RenderSlab
Reset
Kill
#EndTable
DIR$((�F������!Root�F�����	ControllerType�F���,��םDrives<F������שDescribeDisc�F���N��לDiscOp�F���\���zECCSAndRetriesF����īףFreeSpace�F������rHDCF���T9�שIDEUserOp� F���D�לMiscOp`!F���Ҝ��<PowerControl�$F���fĬ�dRetries'F���nج��SetIDEController�(F������pVetFormatH-F���HK��jFlpProcessDCBDATA�ADFS
#Prefix ADFS_
#Parent !Root
#Table Columns 2
<ControllerType>
<DescribeDisc>
<DiscOp>
<Drives>
<ECCSAndRetries>
<FlpProcessDCB>
<FreeSpace>
<HDC>
<IDEUserOp>
<MiscOp>
<PowerControl>
<Retries>
<SetIDEController>
<VetFormat>
#EndTableDATA	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.
DATAjADFS_FlpProcessDCB (&40247)
This call is for internal use only, and not available under RISC OS 2.DIR$tt(/F����G���!Root�0F����Q��ArchiveInfo�1F���h���Statust3F���;����OpenArchive4F���a����CloseArchive�4F����ԋ�Encryption�5F���x���Compressionp6F������]compresstypes�6F���l"���CreateArchive|7F���^5���CompactDATA�ArcFS
#Parent !Root
#Prefix ArcFS_
#Table Columns 2
<ArchiveInfo>
<Status>
<OpenArchive>
<CloseArchive>
<Encryption>
<Compression>
<CreateArchive>
<Compact>
ReadOptions
HourglassOn
HourglassOff
SetEncryption
SetCompression
AutoCompOn
AutoCompOff
ArcInfo
OpenArc
CloseArc
CreateArc
CompactArc
ObjectInfo
ReadBufferSizes
SetRDBSize
SetRABSize
SetHeaderGaps
NamedArcInfo
GetArcName
ReadCompressed
WriteCompressed
EnsureGaps
#EndTable
DATAArcFS_ArchiveInfo  (&437C0)
#Parent ArcFS_
=>	R0 =	archive number
<=	R0 =	archive name (or null if not open)
	R1 =	archive path
	R1 =	pointer to archive headers (internal use)

This SWI gives the name and pathname of the archive whose number is given.
DATA�ArcFS_Status  (&437C1)
#Parent ArcFS_
<=	R0 =	status in form &vvbbffee

This SWI returns the current status of ArcFS.

#Tab
byte	meaning
#Line
vv	FF for read/write, 00 for read only
bb	number of bits for crunch / compress (0 otherwise)
ff	<compression format=>ArcFS_compresstypes>
ee	<bits=>.bits>
#subpage bits
ArcFS_Status bits
bit	meaning if set
#Line
0	files will be garbled
1-7	reserved.DATA�ArcFS_OpenArchive  (&437C2)
#Parent ArcFS_
<=	R0 =	pointer to filename
	R1 =	pointer to reference name

This SWI opens an archive.DATA�ArcFS_CloseArchive  (&437C3)
#Parent ArcFS_
<=	R0 =	pointer to reference name

This SWI closes an archive, returning an error if no archive with that name was open.DATAArcFS_Encryption  (&437C4)
#Parent ArcFS_
<=	R0 =	<encryption method=>.types>
	R1 =	pointer to password (up to 32 bytes)

This SWI sets the encryption method and password used.
#Subpage types
Encryption types
value	meaning
0	no encryption
1	garbled
DATA�ArcFS_Compression  (&437C5)
#Parent ArcFS_
<=	R0 =	<compression format=>ArcFS_compresstypes>
	R1 =	number of bits (if applicable)

This SWI sets the data compression format to be used.DATA]ArcFS Compression formats
code	type
#Line
&82	Store
&83	Pack
&88	Crunch
&FF	Compress
DATA�ArcFS_CreateArchive  (&437C6)
#Parent ArcFS_
<=	R0 =	pathname for new archive

This SWI creates (but does not open) a new archive.

Note: Read/Write version only.DATA�ArcFS_Compact  (&437C7)
#Parent ArcFS_
<=	R0 =	archive name (or 0 for CSD)

This SWI compacts an archive to removed gaps left by deletions and file overwrites.

Note: Read/Write version only.DIR$pp�8F���
�Nt!Root(:F���Nn�NAddEvent,;F���73��}eventsDATAtAudioManager
#Parent !Root
#Prefix AudioManager_
#Table Columns 2
Info
Reset
ListDrivers
Defaults
Driver
SelectSampler
SamplerStatus
StartSampling
StopSampling
DeselectSampler
PlaySample
FillBuffer
ReturnCursor
KillSample
AdjustPlay
ConvertPitch
Stereo
AttachVoice
SoundPacked
Sound
ReadCCB
WriteCCB
PlaySampleFromFile
QueueEvent
<AddEvent>
RedirectVIDC
#EndTable
DATAAudioManager_AddEvent
#Parent !Root
=>	R0 = <event number=>AudioManager_events>
	R1 = Audioworks file
	R2 = 1 to cache in RMA

This SWI adds a sample to a particular desktop event; this means that whenever the event occurs the sample will be played.DATA}Event numbers
Number	Event
#Line
1	Application save file
3	Application load file
5	Filer double-click file
9	Palette change
10	Desktop save
-4	System beep
-7	Fatal wimp error
-8	Wimp error
-9	Keypress: Space
-10	Keypress: Return
-11	Keypress: Other
&400C1	Mode change
&400C2	Task starting
&400C3	Task quitting
&400CA	Iconise window
&FF000001	Media not present
&FF000002	Media not known
&FF000004	Media search end
&FFFF0006	Delete file
&FFFF0008	Create directory
&FFFF0101	Create a file
&FFFF0103	Close a file
&FFFF0105	Rename file
&FFFFFF02	Window moving
&FFFFFF03	Window closing
&FFFFFF07	Drag finished
&FFFFFF09	Menu selection
DIR$,,�=F����I��!RootDATA�AWRender
#Parent !Root
#Prefix AWRender_
#Table Columns 2
FileInitAddress
RenderAddress
DocBounds
SendDefs
ClaimVectors
ReleaseVectors
FindFirstFont
FindNextFont
MemoryNeeded
#EndTable
DIR$,,�>F���[�3!RootDATA3BasicTrans
#Parent !Root
Error
HELP
MessageDIR$,,(?F���|��Y!RootDATAYBorders
#Parent !Root
#Prefix Borders_
TaskStart
TaskQuit
PlotFancyBorders
Poll0
DIR$��P@F���w�cۊ!Root�@F����!D GetInfo�AF����b��buffers�BF����Dzflags,CG���+[kCreate�EF����S��fremoveDATA�Buffer
#Parent !Root
#Prefix Buffer_
<Create>
Deregister
<GetInfo>
LinkDevice
ModifyFlags
<Remove>
Register
Threshold
UnlinkDeviceDATA Buffer_GetInfo (&42947)
#Parent Buffer_
=>	R0 = <buffer number=>Buffer_buffers>

\<=	R0 = <flags=>Buffer_flags>
	R1 = buffer start
	R2 = buffer end
	R3 = insertion offset
	R4 = removal offset
	R5 = bytes free
	R6 = bytes used

This SWI reads information about a particular buffer.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
DATAzBuffer flags
Bit	Meaning
#Line
0	Dormant
1	Generate event on empty
2	Generate event on full
3	UpCall on threshold
DATAkBuffer_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 unique, if it already exist, a new one is invented.
Note, that you are not needing any complicated calculations to write data into the buffer. It's a piece of memory like all others too. Get the address with <Buffer_GetInfo> and write to the buffer.DATAfBuffer_Remove (&42941)
#Parent Buffer_
=>	R0 =	Handle of buffer to be removed

This removes the buffer specified by its 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> but for buffers made using Buffer_Register you should use Buffer_DeRegister instead.DIR$,,,GF����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$,,�GF����f��!RootDATA�CAIFS
#Parent !Root
#Prefix CAIFS_
#Table Columns 2
CreateArchive
CompactFreeSpace
CloseGaps
FreeSpace
DirSize
CompactionType
LZWBits
CacheFile
ScrapFile
DirCache
ReadFileInfo
FixRMA
#EndTable
DIR$,,�HF���ؓ�S!RootDATASColourDbox
#Parent !Root
#Prefix ColourDbox_
ClassSWI
PostFilter
PreFilter
DIR$,,lIF���f��V!RootDATAVColourExtend
#Parent !Root
#Prefix ColourExtend_
Info
Control
InvalidateCache
DIR$,,�IF���-��S!RootDATASColourMenu
#Parent !Root
#Prefix ColourMenu_
ClassSWI
PostFilter
PreFilter
DIR$,,pJF���J��!RootDATA�ColourPicker
#Parent !Root
#Prefix ColourPicker_
#Table Columns 2
RegisterModel
DeregisterModel
OpenDialogue
CloseDialogue
UpdateDialogue
ReadDialogue
SetColour
HelpReply
ModelSWI
#EndTable
DIR$$$\NF���~we��!Root QF����e�0SetFontColoursPSF���wd�*ColourNumberToGCOL|TF����d۪GCOLToColourNumber(UF����d�*InvalidateCacheTVF����,d��ReturnColourNumber,WF����6d�ZReturnColourNumberForMode�XF����Qd��ReturnFontColoursh\F���"ad�IReturnGCOL�]F���\pd�QReturnGCOLForMode_F����d��ReturnOppColourNumber�_F���l�d�sReturnOppColourNumberForModeXaF�����d�ReturnOppGCOLbF���\�d�UReturnOppGCOLForModepcF���2�d�pSelectGCOLTable�dF����e�3SelectTablehF����Ce�[SetGCOLpiF����\e�'GCOLflags�jF����re۴SetOppGCOLDATA�ColourTrans
#Parent !Root
#Prefix ColourTrans_
#Table  18 27
<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
#EndTableDATA0ColourTrans_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.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.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.DATApColourTrans_SelectGCOLTable (&40741)
#Parent ColourTrans_
The registers for this call are used just as in <ColourTrans_SelectTable>.

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>.DATA3ColourTrans_SelectTable (&40740)
#Parent ColourTrans_
=>	R0 =	source mode or (if >= 256) pointer to sprite area
	R1 =	source palette pointer or (if >= 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
	R5 =	<flags=>.flags> (only used if R0 >= 256)

<=	All 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)
other bits reserved (must be zero)
DATA[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.DIR$,,xlF���L��E!RootDATAEDCS
#Parent !Root
#Prefix DCS_
ClassSWI
PostFilter
PreFilter
DIR$��dmF���yMҾ�!RootXoF���w����ThrowbackSendHqF����HҾ�ThrowbackStart0rF���zAҾ�ThrowbackEndDATA�DDEUtils
#Parent !Root
#Prefix DDEUtils_
#Table Columns 2
Prefix
SetCLSize
SetCL
GetCLSize
GetCl
ThrowbackRegister
ThrowbackUnRegister
<ThrowbackStart>
<ThrowbackSend>
<ThrowbackEnd>
#EndTable

Throwback protocol :
#Indent 4
#Table 4 24
<42580 ThrowbackStart=>wimp_um42580>
<42581 ProcessingFile=>wimp_um42581>
<42582 ErrorsIn=>wimp_um42582>
<42583 ErrorDetails=>wimp_um42583>
<42584 ThrowbackEnd=>wimp_um42584>
<42585 InfoForFile=>wimp_um42585>
<42586 InfoDetails=>wimp_um42586>
#EndTable
DATA�DDEUtils_ThrowbackSend  (&42588)
#Parent DDEUtils_
=>	R0 = <type=>.type>
	R1 = ?
	R2 = filename of file
	R3 = line number in file
	R4 = <seriousness=>.seriousness> (if error)
	R5 = pointer to message

This SWI is used to send data from a non-multitasking application to the throwback handler.
#subpage type
DDEUtils_ThrowbackSend type
Type	Meaning
#Line
0	Information
1	Error
#subpage seriousness
DDEUtils_ThrowbackSend seriousness'
Type	Meaning
#Line
0	Warning
1	Error
2	Serious Error
DATA�DDEUtils_ThrowbackStart  (&42587)
#Parent DDEUtils_
This SWI is used to start a DDEUtils throwback session. This should only be used in non-multitasking applications.

Use <DDEUtils_ThrowbackSend> to put data in the buffer.
DATA�DDEUtils_ThrowbackEnd  (&42589)
#Parent DDEUtils_
This SWI is used to end a DDEUtils throwback session. This should only be used in non-multitasking applications.
DIR$PP,sF���h�>!RootlsE�����DisassembleDATA>Debugger
#Parent !Root
#Prefix Debugger_
<Disassemble>DATADebugger_Disassemble  (&40380)
#Parent Debugger_
=>	R0 = instruction
	R1 = address it came from

\<=	R1 = string, \0 terminated
	R2 = length, incl \0

This SWI disassembles an instruction. The address in R1 is needed for PC relative instructions (like B, BL, LDR x,[PC,#..] )DIR$,,�tF���q��!RootDATA�DeviceFS
#Parent !Root
CallDevice
Deregister
DeregisterObjects
RecievedCharacter
Register
RegisterObjects
Threshold
TransmitCharacterDIR$,,puF����F�u!RootDATAuDitherExtend
#Parent !Root
#Prefix DitherExtend_
#Table Columns 2
SelectTable
SelectGCOLTable
ReturnGCOL
SetGCOL
ReturnColourNumber
ReturnGCOLForMode
ReturnColourNumberForMode
ReturnOppGCOL
SetOppGCOL
ReturnOppColourNumber
ReturnOppGCOLForMode
ReturnOppColourNumberForMode
GCOLToColourNumber
ColourNumberToGCOL
Info
Control
ReturnColourPattern
ReturnColourPatternTable
InvalidatePalette
Antialias
ReadPalette
ReturnColourPatternArray
SetHalftone
ReturnHalftone
SetHalftoneOrigin
ReturnHalftoneOrigin
SelectHalftoneTable
ReturnHalftoneIntensity
ReturnHalftoneTable
SetScreen
CacheScreen
SelectColourPatternTable
#EndTable
DIR$,,xF����"���!RootDATA�DocumentManager
#Parent !Root
#Prefix DocumentManager_
#Table Columns 3
Open
Close
File
Find
Args
GBPB
Compact
Reset
Stamp
#EndTable
DIR$��@yF���aXf�I!Root�yF����e�0DiscFormat�}F���m+fۃFormatSpec@F��� Nf�	LayoutStructureDATAIDOSFS
#Parent !Root
#Prefix DOSFS_
<DiscFormat>
<LayoutStructure>DATA0DOSFS_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 mat 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$,,x�F���?��D!RootDATADDragAnObject
#Parent !Root
#Prefix DragAnObject_
Start
Stop
DIR$��h�F����R1E!Root��F���!��$�Start��F���9�$1locflags܉F����M�$`box<�F���U�$StopDATAEDragASprite
#Parent !Root
#Prefix DragASprite_
<Start>
<Stop>DATA�DragASprite_Start  (&42400)
#Parent DragASprite_
=>	R0 =	Location <flags=>DragASprite_locflags>
	R1 =	<Sprite area=>OS_SpriteOp_Area> (0 for system, 1 for Wimp, otherwise an address)
	R2 =	Pointer to sprite name
	R3 =	Pointer to 16-byte block containing <drag box=>DragASprite_box>
	R4 =	Pointer to optional block containing <bounding box=>DragASprite_box>

This SWI starts dragging a sprite. The sprite you supply is copied, so there is no problem with you disposing of your copy of the sprite.
DATA1Drag location flags
Bits	Meaning
#Line
0-1	Horizontal location of sprite in box:
	 00	Left
	 01	Centre
	 10	Right
	 11	undefined
2-3	Vertical location of sprite in box:
	 00	Bottom
	 01	Centre
	 10	Top
	 11	undefined
4-5	Drag bounding box is:
	 00	Whole screen
	 01	Display area of window that the pointer's over
	 10	User specified
	 11	undefined
6	Bounding box applies to:
	 0	The box
	 1	The pointer
7	Control of drop-shadow:
	 0	Don't do a drop-shadow
	 1	Make a drop shadow when copying the sprite
8-31	Reserved for future use, should be set to 0.
DATA`Box block
Offset	Use
#Line
#Wrap Off
0	x0 (left)
4	y0 (bottom)
8	x1 (right)
12	y1 (top)
DATADragASprite_Stop  (&42401)
#Parent DragASprite_
No params

This SWI terminates any current drag operation and releases any drag-a-sprite workspace claimed to do a drag. It is expected that this SWI will be called when the user_drag_box reason is received by the application.
DIR$,,��F����G�e!RootDATAeDrawFile
#Parent !Root
#Prefix DrawFile_
#Table Columns 2
Render
BBox
DeclareFonts
#EndTable
DIR$�F���w>w!Rootl�F����[��Jfileformat��F���d�f��object0��F���͝f�object1��F����Agۓobject12$�F������"�object13̕F���h�f�object2L�F���稹"pobject5��E�����object6\�F����fۅobject7�F����g�object9�E����|�4pathstyle �F���,g�Atextbodyd�E���|�textstyle�F���t�fۄdashstyleDATAwDraw
#Parent !Root
Fill
FlattenPath
ProcessPath
Stroke
StrokePath
TransformPath

<File format=>Draw_FileFormat>DATAJFormat of Draw file (filetype aff)
File header

  0	4	"DRAW"
  4	4	Major version
  8	4	Minor version
 12	12	Name of producing prog. (Padded with space)
 24	4	x low
 28	4	y low   Bounding box
 32	4	x high
 36	4	y high

This is followed by 0 or more objects :

#tab
  0	4	Object type
	 	  0	<Font Table=>draw_object0>
	 	  1	<Text object=>draw_object1>
	 	  2	<Path object=>draw_object2>
	 	  5	<Sprite object=>draw_object5>
	 	  6	<Group object=>draw_object6>
	 	  7	<Tagged object=>draw_object7>
	 	  9	<Text area object=>draw_object9>
	 	  10	Text column object=>draw_object10
	 	  11	Options object=>draw_object11
	 	  12	<Transformed text object=>draw_object12>
	 	  13	<Transformed sprite object=>draw_object13>
  4	4	Size (word-aligned) incl header
  8	16	Bounding box (Not all types have this)
  n	n	Object specific data, if anyDATA�Font table object (0)
This object has no bounding box. It should only appear once, and before any text objects.

It consists of a series of :

1 byte font number
zero terminated fontname
0 to 3 zeros to pad to wordDATA�Text object (1)
Offset	Len	Contents
#Line
24	4	Text colour
28	4	Background hint
32	4	<Text style=>draw_textstyle>
36	4	x-size (in 1/640's)
40	4	y-size
44	4	x coord of start of baseline
48	4	y coord of it
52	n	zero terminated string
paddingDATA�Transformed text object (12)
Offset	Len	Contents
#Line
24	24	Transformation matrix
48	4	Font flags :
	 	  bit 0 set : kern text
	 	  bit 1 set : right to left

Rest are as for normal text object :

52	4	Text colour
56	4	Background hint
60	4	<Text style=>draw_textstyle>
64	4	x-size (in 1/640's)
68	4	y-size
72	4	x coord of start of baseline
76	4	y coord of it
80	n	zero terminated string
paddingDATA�Transformed sprite object (13)
This is followed by a 24 byte transformation matrix, and then a <sprite=>os_spriteop_ptr>. This is scaled to fill bounding box.DATAPath object (2)
Offset
24	4	Fill colour (-1 for none)
28	4	Outline col (-1 for none)
32	4	Outline width
36	4	<path style=>draw_pathstyle>
40	n	<Optional dash pattern=>draw_dashstyle>
	n	Path components :

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

+4	n	0-3	sets of (x,y) dependant on tag
...
DATApSprite object (5)
This is followed by a <sprite=>os_spriteop_ptr>, which is scaled to fill bounding box.DATA�Group object
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)
This consists of
�	1 word of tag id (allocated from acorn)
�	an object
�	optional extra data (word aligned)DATAText area object (9)
First, 1 or more text columns and then :

Offset	Len	Contents
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=>draw_textbody>
paddingDATA4Path style
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 lengthDATAAEscape sequences in Draw text area
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>	commentDATA�Text style
First (lowest) byte is fontnumber, and refers to font in font table.

The rest of word is reserved, and should be zeroDATA�Draw dash style block
Offset	Len	Contents
#Line
0	4	Offset to where to start
4	4	No of elements
8	n*4	Length of element
...
DIR$��h�F���y��!RootD�F���
���}CreateReceiveĥF������ExamineReceive�F����{��vstatuses\�F����Ն��ReadReceive�F���w���AbandonReceiveܪF����_���WaitForReceptionh�F���H����EnumerateReceive$�F������StartTransmit�F����.���PollTransmitܯF����r���AbandonTransmitl�F��������DoTransmit�F����܈��ReadLocalStationAndNet��F���0���ConvertStatusToString��F����j���ConvertStatusToErrorT�F���ۉ�protectsl�F������ReadProtection`�F�������SetProtection`�F���$"�PrintBanner�F���ӊ�nReadTransportType��F�����ReleasePort�F������AllocatePort�F���C��DeAllocatePort��F������ClaimPortp�F����H�StartImmediateDATA�Econet
#Parent !Root
#Prefix Econet_
#Table 12 22
<AbandonReceive>
<AbandonTransmit>
<AllocatePort>
ClaimPort
<ConvertStatusToError>
<ConvertStatusToString>
<CreateReceive>
<DeAllocatePort>
DoImmediate
<DoTransmit>
<EnumerateReceive>
<ExamineReceive>
<PollTransmit>
<PrintBanner>
<ReadLocalStationAndNet>
<ReadProtection>
<ReadReceive>
ReadStationNumber
<ReadTransportType>
<ReleasePort>
<SetProtection>
<StartImmediate>
<StartTransmit>
<WaitForReception>
#EndTableDATA}Econet_CreateReceive  (&40000)
#Parent Econet_
=>	R0 = port number
	R1 = station number
	R2 = net number
	R3 = 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>.DATAvEconet 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

Meanings:
#Tab
R	Receive blocks
W	<Econet_WaitForReception>
T	Trasmit blocks
DATA�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 = data buffer
	R6 = size of data received

This SWI returns information about a control block, given it's 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.
DATA�Econet_WaitForReception  (&40004)
#Parent Econet_
=>	R0 = handle
	R1 = delay of checks 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 = data buffer
	R6 = size of data received

This SWI checks the port repeatedly until either aborted, or the data is received.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.
DATA�Econet_StartTransmit  (&40006)
#Parent Econet_
=>	R0 = flag byte
	R1 = port number
	R2 = station number
	R3 = net number
	R4 = data buffer
	R5 = buffer size
	R6 = count
	R7 = delay in cs

<=	R0 = handle
	R1 corrupted
	R2 = buffer address
	R3 = station number
	R4 = net number

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 = data buffer
	R5 = buffer size
	R6 = count
	R7 = delay in cs

<=	R0 = <status=>econet_statuses>
	R1 corrupted
	R2 = buffer address
	R3 = station number
	R4 = net number

This SWI creates a block and repeatedly polls until the data is received, or an error at which point the block is abandoned.
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.DATA�Econet_ConvertStatusToString  (&4000B)
#Parent Econet_
=>	R0 = <status=>Econet_statuses>
	R1 = pointer to buffer for string
	R2 = buffer size
	R3 = station number
	R4 = net number

<=	R0 = buffer
	R1 = 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.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
	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.DATA�Econet_SetProtection  (&4000E)
#Parent Econet_
<=	R0 = EOR mask word
	R1 = AND mask word

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.
DATAnEconet_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
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.
DATAEconet_StartImmediate  (&40016)
#Parent Econet_
=>	R0 = operation type
	R1 = remote address, or procedure number
	R2 = station number
	R3 = net number
	R4 = data buffer address
	R5 = data size
	R6 = count
	R7 = delay in cs

<=	R0 = handle
	R1 corrupted
	R2 = buffer address
	R3 = station number
	R4 = net number

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.DIR$,,��F����L��!RootDATA�Euclid
#Parent !Root
#Prefix Euclid_
#Table Columns 2
Initialise
Draw
Load
Save
Append
Find
Create
Destroy
Set
Show
Insert
Delete
Translate
Zoom
Rotate
List
BoundingSphere
CloseDown
MiscOp
Compress
Expand
#EndTable
DIR$,,��F���R��!RootDATA�FileBuffer
#Parent !Root
#Prefix FileBuffer_
#Table Columns 2
Open
Close
Clear
Read
ReadByte
Write
WriteByte
ReadPTR
WritePTR
TaskStart
TaskQuit
#EndTable
DIR$��$�F������׺!Root��F������#DiscOp_flags�F���3��?DiscD�F���t���Format8�F���e�$&gdiscaddress��F���W��RCreate��F�������fsdescriptor��F��������DescribeDisc��F���;��׷DiscardReadSectorsCache��F���D���9DiscFormat��F�������densities��F����zformatspec(�F���x(�תDiscOp_reason��F����z�׷DiscOp��F���-�׸DiscOp0D�F����4��DiscOp1<�F����ƨ�}DiscOp15��F�������DiscOp2��F�������DiscOp3��F�������\DiscOp4�F���)��צDiscOp5��F���*¨�}DiscOp6D�F���^����DiscOp7-80�F����b�׷DiscOp9�F���΀��Drives�F��������FloppyStructure��F�������VFreeSpace�F���ug��,LayoutStructure,�F����ĩ�(MiscOpTF�������MiscOp_reasontF������1MiscOp0�F�������MiscOp1�F����H��fMiscOp2F����>���MiscOp3�F���
%�jmiscop4DATA�FileCore
#Parent !Root
#Prefix Filecore_
<Create>
<DescribeDisc>
<DiscardReadSectorsCache>
<DiscFormat>
<DiscOp>
<Drives>
<FloppyStructure>
<FreeSpace>
<LayoutStructure>
<MiscOp>DATA#FileCore_DiscOp flags
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.
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
16-1F	disc_name	disc name (spaced to 10 chars, no terminator)
20-23	disctype	<filetype given to disc=>Filetypes:!Root>
24-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
DATARFileCore_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  	   bits  0 -  7  number of floppies
	 	         8 - 15  number of harddiscs
	 	        16 - 24  default drive
	 	        25 - 31  start up options
	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 Descriptor
DATA�Filecore 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)
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>DATA9FileCore_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�DiscOp reason codes
Reason	Meaning
#Line
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>DATA�FileCore_DiscOp  (&40540)
#Prefix FileCore_DiscOp_
#Parent FileCore_
=>	R1 = <reason> and <flags>
	Dependant on reason

This SWI performs various low-level accesses on a disc.DATA�FileCore_DiscOp 0
Verify sectors

=>	R1 =	0 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
	R4 =	size
	
\<=	R2 =	next disc address
	R4 =	unverifiedDATA�FileCore_DiscOp 1
Read sectors from disc

=>	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 =	unreadDATA}FileCore_DiscOp 15
Specify ?

=>	R1 =	15 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
DATA�FileCore_DiscOp 2
Write sectors to disc

=>	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 =	unwritten ?DATAFileCore_DiscOp 3
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
Write or format track to disc

=>	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>

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
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
Restore ???

=>	R1 =	6 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
DATA�FileCore_DiscOp 7,8
Step in/out a track

=>	R1 =	7 or 8 + <flags=>FileCore_DiscOp_flags>

These are only supported by 1772 disc controllers, eg those found in the A5000, and should not be used so as to maintain compatibility.DATA�FileCore_DiscOp 9
Read sectors from disc via cache

=>	R1 =	9 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
	R3 =	pointer to block to read into
	R4 =	size
	R6 =	cache handle
	
\<=	R2 =	next disc address
	R3 =	next free address
	R4 =	unread
	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>.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.DATA�FileCore_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

<=	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. They must be byte addresses giving the start of defective sectors and terminated with &20000000.  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.
DATAVFileCore_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.DATA,FileCore_LayoutStructure
#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(FileCore_MiscOp (&40549)
#Parent FileCore_
=>	R0 =	<reason code=>FileCore_MiscOp_reason>
	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.DATAFileCore_MiscOp reason codes
R0	Meaning
#Line
0	<Mount=>FileCore_MiscOp0>
1	<Poll changed=>FileCore_MiscOp1>
2	<Lock drive=>FileCore_MiscOp2>
3	<Unlock drive=>FileCore_MiscOp3>
4	<Poll period=>FileCore_MiscOp4>

The whole set of FileCore_MiscOp's isn't available under RISC OS 2.DATA1FileCore_MiscOp 0
=>	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.

� If 'log2scesize'\<=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 correct 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
=>	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.
DATAfFileCore_MiscOp 2
=>	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
=>	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>'.DATAjFileCore_MiscOp 4
=>	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.DIR$,,�F������O!RootDATAOFileInfo
#Parent !Root
#Prefix FileInfo_
ClassSWI
PostFilter
PreFilter
DIR$,,F���:B��!RootDATA�FilerAction
#Parent !Root
#Prefix FilerAction_
#Table Columns 2
SendSelectedDirectory
SendSelectedFile
SendStartOperation
#EndTable
DATA�
� >SWI-filter

� code% 10*1024

� pass% = 0 � 2 � 2

      P% = code%

	[     OPT        pass%   


7      ; R0 = search word (Should never be modified)
8      ; R1 = buffer for storing modified search word

      ; R13 = small stack

G      ; Return ptr to search word in R0, or -1 to reject completely
I      ; (this can be initial R0 or R1 or a pointer into one of those)

      STMFD     R13!,{14}
      LDRB      R14,[R0]
      CMP       R14,#�"X"
      CMPne     R14,#�"x"
      ADDeq     R0,R0,#1
      LDMFD     R13!,{PC}^

]

�

)ș "OS_File",10,"!Pre",&FFC,,code%,P%
�
�DIR$8F����Vb��!Root�F���qb��RegisterPreFilter�F�����b�CfiltercodeF���w�fRegisterPostFilterxF�����b��DeRegisterPreFilter F�����?�DeRegisterPostFilterDATA�Filter
#Prefix Filter_
#Parent !Root
#Table Columns 2
<DeRegisterPostFilter>
<DeRegisterPreFilter>
<RegisterPostFilter>
<RegisterPreFilter>
#EndTableDATA�Filter_RegisterPreFilter
#Parent Filter_
=>	R0 =	Pointer to 0 terminated filter name. 
	R1 =	Address of <filter code=>Filter_filtercode>.
	R2 =	Value to be passed in R12.
	R3 =	Task handle of task to which filter is applied or 0 for all tasks.

\<=	Registers preserved.

Adds a new pre-filter to the list of pre-filters.

The address pointed to by R1 will be called whenever the task who's handle is passed in R3 calls <Wimp_Poll> with R12 equal to the value of R2 when this SWI is called.
DATACFilter code
#Wrap Off
=>	R0 =	Event mask as passed to <Wimp_Poll> for Pre filters.
	 	Event reason code being returned for Post filters.
	R1 =	User's event buffer.
	R2 =	Task handle of task that called Wimp_Poll.
	R12=	Value of R2 when filter registered
#Wrap On
\<=	Pre:	It may clear bits in r0 to provide a new event mask.
	 	It must preserve all other registers.

	Post:	The routine may modify the reason code in r0 and the contents of the buffer pointed to by R1 to provide a new event.
	 	R0 = -1 to prevent event being passed to task
	 	It must preserve R1 and R2.
DATAfFilter_RegisterPostFilter
#Parent Filter_
=>	R0 =	Pointer to 0 terminated filter name. 
	R1 =	Addresss of <filter code=>Filter_filtercode>.
	R2 =	Value to be passed in R12.
	R3 =	Task handle of task to which filter is applied or 0 for all tasks.
	R4 =	Event <mask=>Wimp_pollmask> (1 bit masks the event out as for <Wimp_Poll>).

\<=	Registers preserved.

Adds a new post filter to the list of post filters.
  
The address pointed to by R1 will be called whenever the Wimp is about to return to the task who's handle is passed in R3 from Wimp_Poll with R12 equal to the value of R2 when this SWI is called.
DATA�Filter_DeRegisterPreFilter
#Parent Filter_
=>	R0 =	Pointer to 0 terminated filter name. 
	R1 =	Addresss of <filter code=>Filter_filtercode>.
	R2 =	Value to be passed in R12.
	R3 =	Task handle of task to which filter was applied.

\<=	Registers preserved.
	Filter de-registered.

Removes a pre filter from the list of pre filters.

Note: All regosters must be the same as those passed to <Filter_RegisterPreFilter>.
DATA�Filter_DeRegisterPostFilter
#Parent Filter_
=>	R0 =	Pointer to 0 terminated filter name. 
	R1 =	Addresss of <filter code=>Filter_filtercode>.
	R2 =	Value to be passed in R12.
	R3 =	Task handle of task to which filter was applied.
	R4 =	Event <mask=>Wimp_pollmask>
	
\<=	Registers preserved.
	Filter de-registered.

Removes a post filter from the list of post filters.

Note: All must be the same as those passed to <Filter_RegisterPostFilter>
DIR$,,!F���?��O!RootDATAOFontDbox
#Parent !Root
#Prefix FontDbox_
ClassSWI
PostFilter
PreFilter
DIR$,,�!F���c��I!RootDATAIFontDraw
#Parent !Root
#Prefix FontDraw_
FindFont
LoseFont
Paint
DIR$,,"F���5��O!RootDATAOFontMenu
#Parent !Root
#Prefix FontMenu_
ClassSWI
PostFilter
PreFilter
DIR$l&F����c�]!Root�(E������CacheAddr�)E�����3Caret�*E�����QCharBBox(,E�����ConverttoOS�,E���!�Converttopoints|-E���x��CurrentFontT.E���,�mFindCaret�/E����m�FindCaretJx1E���\��rFindFont�2E������FutureFont4E���C���ListFonts�4E���A��LoseFont�5F����]VV�Paint7F�����$�paint09F���#*��paint1�;E����!��paint2�<E���,��wReadColourTable=E������ReadDefn>E�������ReadInfo�>E���n���ReadScaleFactor�?E�������eSetFont4@E�������SetFontColoursAE�����oSetPalette�BE���m���SetScaleFactor`CE���#��RStringBBox�DE���ʴ�8StringWidth�FE�����UnCacheFile�GF���z>c��ScanStringDATA]Font
#Parent !Root
#Prefix Font_
#Table 21 18
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>
#EndTableDATA�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.DATA3Font_Caret  (&40087)
#Parent Font_
=>	R0 = colour
	R1 = height (OS)
	R2 = <flags=>font_paint0>, only bit 4 used
	R3 = x
	R4 = y

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.DATAQFont_CharBBox  (&4008E)
=>	R0 = font handle
	R1 = character
	R2 = <flags=>font_paint0> (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)
=>	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)
=>	R1 = x OS
	R2 = y OS

\<=	R1 = x millipoints
	R2 = y millipoints

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

This SWI returns the current colour settings of the font manager.DATAmFont_FindCaret  (&4008D)
=>	R1 = string
	R2 = x offset in millipoints
	R3 = y offset in millipoints

\<=	R1 = ptr 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>DATA�Font_FindCaretJ  (&40096)
=>	R1 = string
	R2 = x offset in millipoints
	R3 = y offset in millipoints
	R4 = x justification offset
	R5 = y justification offset

\<=	R1 = ptr 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.DATArFont_FindFont  (&40081)
#Parent Font_
=>	R1 = font name (ctrl terminated)
	R2 = x points * 16
	R3 = y points * 16
	R4 = x dpi  (0 for default)
	R5 = y dpi  (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>.DATAFont_FutureFont  (&4008C)
#Parent Font_
\<=	R0 = font handle
	R1 = background col
	R2 = foreground col
	R3 = <foreground col 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 = 40-byte buffer
	R2 = count (0 for first call)
	R3 = path string, or -1 for Font$Path

\<=	R2 = count (-1 if no more)

This SWI returns, one at a time, the fonts found with the given path 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.DATA�Font_Paint  (&40086)
#Parent Font_
=>	R0 =	Font handle (if applicable)
	R1 =	<String=>font_paint1>
	R2 =	<Flags=>font_paint0>
	R3 =	x
	R4 =	y
	R5 =	pointer to block (if applicable)
	R6 =	pointer to transformation 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.DATA�Font_Paint Flags
bit	meaning
#Line
0	1 = justify, 0 = not
1	1 = rub-out box, 0 = not
4	1 = x and y are in OS, 0 = millipoints
5	Given block ?
6	Given transformation ?
7	Given 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. Zero

To use justify, first move to right side. To use rub-out box, first move to lower left and then to upper right of box.

If both, then do justify move last.DATA�Special characters
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	??				:	HomTrfm
 28	??				:	Transform
 
#tab
 9,11 : The 3 byte print-position is given in millipoints
   25 : pos & thickness is given in 1/256th of current font sizeDATA�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.DATAwFont_ReadColourTable (&40098)
=> R1 = 16-byte buffer

This SWI returns the 16 colours used to do anti-aliasing.DATA�Font_ReadDefn  (&40083)
#Parent Font_
=>	R0 = Font handle
	R1 = 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)
=>	R0 = font handle

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

This SWI returns, in OS units, the smallest possible box needed to cover any character in the given font.DATA�Font_ReadScaleFactor  (&4008F)
\<=	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 col
	R2 = foreground col
	R3 = <foreground col offset=>font_paint2>

This SWI sets the font colours and, optionally, the font.DATAoFont_SetPalette  (&40093)
=>	R1 = background logical col
	R2 = foreground logical col
	R3 = foreground col offset
	R4 = background physical col
	R5 = foreground physical col

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> or <ColourTrans_SetFontColours>DATA�Font_SetScaleFactor  (&40090)
=>	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>.DATARFont_StringBBox  (&40097)
#Parent Font_
=>	R1 = string

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

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.DATA8Font_StringWidth  (&40085)
#Parent Font_
=>	R1 = <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 = no 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.DATA�Font_UnCacheFile  (&4009A)
=>	R1 = full filename
	R2 = recache flag

This SWI either caches or uncaches a font.
This is used when the font file is altered.DATA�Font_ScanString  (&400A1)
=>	R0 = initial font handle, 0 for current
	R1 = string
	R2 = <flags=>.flags>
	R3,4 = (x,y) of mouse click or max w,h of string
	R5 = ptr to buffer holding spacing, split & bounding box
	R6 = transformation matrix
	R7 = length of string

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

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

	�	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.

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
Meaning of bits in R2 when set
0-4	0 (reserved)
5	R5 is pointer to buffer
6	R6 is pointer to transformation 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 no of split chars in R7 (bit 7 must also be set)
21-31	0 (reserved)DIR$LL�OG���\

>!Root�OG���$
MVersionDATA>FPEmulator
#Parent !Root
#Prefix FPEmulator_
<Version>DATAMFPEmulator_Version  (&40480)
=>	�
<=	R0 = version of FPEmulator * 100DIR$,,HPF�����.!RootDATA.Free
#Parent !Root
DeRegister
RegisterDIR$,,�PF�����M!RootDATAMFrontEnd
#Parent !Root
#Prefix FrontEnd_
ExtendedCmdLine
FreeCmdLine
DIR$���QF����q�׃ident,SF������{infoword�TF�����i��loadexec�UF���e�#objattr�VF����sL�objtypeDATA�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
#EndTableDATA{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
25	FS supports FSEntry_File 20
24	FS supports FSEntry_File 18
16-23	Reserved. Zero.
8-15	no of files. 0 if none.
0-7	<FS identification no.=>fsys_ident>DATA�Load and Exec address
If all 12 upper bits of the load address are set :

 Load addr	:	FFFtttcc	ttt is filetype
 Exec addr	:	dddddddd	ccdddddddd is date

otherwise load and exec address are exactly what they claim to be.
DATA#File 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.DATA�Object types
Type	Meaning
#Line
0	Object not found
1	File
2	Directory
3	Image

Image files only exist under RO3. 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.
DIR$,,|XF���F��!RootDATA�GDraw
#Parent !Root
#Prefix GDraw_
#Table Columns 2
ProcessPath
ProcessPathFP
Fill
FillFP
Stroke
StrokeFP
StrokePath
StrokePathFP
FlattenPath
FlattenPathFP
TransformPath
TransformPathFP
ProcessClipPath
ProcessClipPathFP
ClipPath
ClipPathFP
ClipPathToPath
ClipPathToPathFP
ClearClipRegion
SetClipRegion
SetFillStyle
FillRegion
SetPrintFlag
ReadFillStyle
GetClipRegion
#EndTable
DIR$,,,ZF����r�!RootDATA�GSpriteExtend
#Parent !Root
#Prefix GSpriteExtend_
#Table Columns 1
PlotSprite
SwitchOutputToSprite
ReadVariable
#EndTable
DIR$,,�ZF���9��;!RootDATA;HelixBasic
#Parent !Root
#Prefix HelixBasic_
Setup
DIR$��\F���e�-�i!Rootl\E���0���LEDsL]E������OffD^F���"�-��On_E������Percentage�_E�����Smash�`F���a�-�StartDATAiHourglass
#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_
No parms

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_
No parms

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_
No parms

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>.DIR$,,�aF����M��!RootDATA�Hyphenator
#Parent !Root
#Prefix Hyphenator_
#Table Columns 2
ResetDictionary
CreateDictionary
CopyDictionary
EnquireDictionary
FindWord
AddWord
RemoveWord
Hyphenate
GetWords
EnumWord
#EndTable
DIR$,,�bF�����M!RootDATAMIconbar
#Parent !Root
#Prefix Iconbar_
ClassSWI
PostFilter
PreFilter
DIR$,,,cF����]V�!!RootDATA!IIC
#Parent !Root
ControlDIR$,,|cF���PM��!RootDATA�ImageExtend
#Parent !Root
#Prefix ImageExtend_
#Table Columns 2
Info
PutSpriteTransformed
PutSpriteToBufferTransformed
PutStringTransformed
GetBBox
GetImageBBox
MakeMatrix
MakeHalftoneTile
AddKernelToMatrix
MakeSimpleScreenTile
#EndTable
DIR$,,�dF���.C��!RootDATA�Impulse
#Parent !Root
#Prefix Impulse_
#Table Columns 2
Initialise
Decode
SendMessage
TransmitData
FetchData
CloseDown
DeferReply
#EndTable
DIR$,,`eF���
N��!RootDATA�Interface
#Parent !Root
#Prefix Interface_
#Table Columns 2
SlabButton
Render3dWindow
Initialise
CloseDown
SetWorkareaPointer
RemoveWorkareaPointer
Poll
SendHelp
PreProcessKey
Plot3dIcon
BoundingBox
#EndTable
DIR$LL�fF����	�;u!RootgF���$�g�ReadDATAuJoystick
#Parent !Root
#Prefix Joystick_
<Read>

This is only available on machines with the proper hardware.DATAJoystick_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
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
&40	indicates up
&C0	indicates down
&4000	indicates right
&C000	indicates left
&10000	indicates fireDIR$,,4iF���f�!RootDATALargerSupport
#Parent !Root
#Prefix LargerSupport_
#Table Columns 2
WriteShift
ReadFastMove
EnableFilter
DisableFilter
ReadWindowsOpened
ReadPollWordAddress
Reorganise
FindLeft
FindRight
FindUp
FindDown
FindNone
CopySprite
ReadBackdropCommandTail
ReadRegister
#EndTable
DIR$,,xjF������P!RootDATAPLZWB
#Parent !Root
#Prefix LZWB_
Compress
Decompress
TaskStart
TaskQuit
DIR$,,�jF�����R!RootDATARMenu
#Parent !Root
#Prefix Menu_
ClassSWI
PostFilter
PreFilter
UpdateTree
DIR$dlF������!RootmE����)�CloseFile�mF����"���FileInfo�nE���9"�LookupXqE����P�MakeMenussE���LH�menudef�tF����~ܖ�OpenFile�xE����8�tokenDATA�MessageTrans
#Parent !Root
#Prefix MessageTrans_
<CloseFile>
CopyError
EnumerateTokens
ErrorLookup
<FileInfo>
GSLookup
<Lookup>
<MakeMenus>
<OpenFile>DATA�MessageTrans_CloseFile  (&41504)
#Parent MessageTrans_
=> R0 = 4-word data structure

This SWI closes the file previously opened with <MessageTrans_OpenFile>.DATA�MessageTrans_FileInfo  (&41500)
#Parent MessageTrans_
=>	R1 = 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 = 4-word data structure
	R1 = <Token=>messagetrans_token>
	R2 = buffer
	R3 = buffer size
	R4 = parameter 0 
	R5 = parameter 1 
	R6 = parameter 2 
	R7 = parameter 3
\<=	R1 = ptr 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=>MessageTrans_OpenFile>.DATA�MessageTrans_MakeMenus  (&41503)
#Parent MessageTrans_
=>	R0 = Data structure
	R1 = <Menu definition=>messagetrans_menudef>
	R2 = Destination buffer
	R3 = Size of buffer
\<=	R1 = Menu data
	R2 = Bytes remaining

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.DATA�Menu definition
0	Token for menu title ( \0 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 flagsDATA�MessageTrans_OpenFile  (&41501)
#Parent MessageTrans_
=>	R0 = 4-word data structure
	R1 = Filename
	R2 = Buffer for file data (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
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%
#f
#Indent

where FNalloc() allocates a buffer of a given size, by using the <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 \\0DIR$,,DyF������!RootDATA�NetFS
#Parent !Root
ConvertDate
DoFSOp
DoFSOpToGivenFS
EnumerateFSCache
EnumerateFSList
ReadCurrentContext
ReadFSName
ReadFSNumber
ReadFSTimeouts
SetCurrentContext
SetFSName
SetFSNumber
SetFSTimeoutsDIR$,,@zF�����i!RootDATAiNetPrint
#Parent !Root
ReadPSName
ReadPSNumber
ReadPSTimeouts
SetPSName
SetPSNumber
SetPSTimeoutsDATAGNon-Operating System SWI's
#Parent !Root
#Postfix _
Computer Concepts :
#Indent 3
#Table Columns 4
<ABI>
<ABCLib>
<AudioManager>
<AWRender>
<ColourExtend>
<DitherExtend>
<DocumentManager>
<FontDraw>
<GDraw>
<GSpriteExtend>
<Hyphenator>
<ImageExtend>
<Impulse>
<OLE>
<PocketFS>
<PocketLink>
<Spell>
<Stream>
<StreamSquash>
<WimpKey>
#EndTable

#Indent 0
Acorn utilities :
#Indent 3
#Table Columns 4
<ColourDbox>
<ColourMenu>
<CompressJPEG>
<DCS>
<DDEUtils>
<DragAnObject>
<FileInfo>
<FontDbox>
<FontMenu>
<FrontEnd>
<Iconbar>
<MakePSFont>
<Menu>
<PrintDbox>
<ProgInfo>
<RemotePrinterSupport>
<ROMCache>
<SaveAs>
<Scale>
<TinySupport>
<Toolbox>
<Window>
#EndTable

#Indent 0
John Kortink :
#Indent 3
#Table Columns 3
<Borders>
<Creator>
<FileBuffer>
<LZWB>
<MakeGIF>
<Translator>
#EndTable

#Indent 0
Miscellaneous :
#Indent 3
#Table Columns 4
<AEH=>AEHModule:!Root>
<ArcFS>
<ArcFSMemMan>
<CAIFS>
<Director>
<Diss>
<Euclid>
<Gdbm>
<HelixBasic>
<Interface>
<LargerSupport>
<LineEditor>
<NetMonitor>
<QTM>
<ReadMail>
<Spch>
<Tracker>
<VProtect>
<WimpExt=>WimpExt:!Root>
<ZapRedraw>
#EndTableDIR$,, F���?!RootDATA?OLE
#Parent !Root
#Prefix OLE_
#Table Columns2
Version
LinkFile
DeLinkFile
FileStatus
Invalidate
SimulateSession
#EndTable

Messages :
#Wrap off
#Indent 2
<80E1E OLE_FileChanged=>wimp_um80E1E>
<80E21 OLE_OpenSession=>wimp_um80E21>
<80E22 OLE_OpenSessionAck=>wimp_um80E22>
<80E23 OLE_CloseSession=>wimp_um80E23>
DIR$��X�G���@(
4!root��F����|��AddCallBack �F���bT���areas�E������BGet��E���}~�BinaryToDecimal��F�������BPut(�F���IQ�ChangeDynamicArea��F���P��>ClaimܡE���vX�iClaimScreenMemoryH�E���o&�pCRC��F���c/�EnterOS��F���/qEvaluateExpression�E������;ExitX�E���‰�ExitAndDie`�F������%1Find��F���H?\Z�GetEnvL�E������`Release��G���6
�SetECFOriginl�F�������SWINumberFromString,�F������=SWINumberToStringl�F�����k�GUpdateMEMC��F�������ValidateAddress��F���k�]��vectorchain(�F���{C4�vectorrules�F���V�l�lvectors��F���u���generateevent��F����a�eventv��F�����!�SpriteOph�F���T�c��Mouse,�F����$]��ChangeEnvironment�F���*6]�4handlersH�F���V��;4InsV|�F���\�a�vevents��F���#`^��Confirm��F����S�@SetVarVal��F����H���vartypesd�G���}'-
DArgsH�G����'-
,ByteHhG����(-
�File��G����(-
FSControlL�G���S)-
�SpriteOp_��G���*-
�Module$G���~*-
�Convert�,G����*-
�UpCall�fG���+-
GBPB~G���7+-
LPlot��G���D+-
�GS��G���\+-
pHeap,�G����+-
dRead�G����+-
hWord��G���,-
�Write��F���a�^�QFindMemMapEntries�F�����^�tmemmaprequestt�F���V�j�cSetMemMapEntries��F����l�<CallAfter�F����ml��RemoveCallBack��F���&Wl��RemoveTickerEventT�F���}�l�SCallEvery��G���8,-
hDynamicAreaXF�����V�uAddToVector�F����V�*BreakCtrl�F����V�vBreakPttF����1\��CallAVector$F�����\�NCallBackt
F�����\��ChangedBox\
F����`]��ChangeRedirection<F���X�]��CheckModeValid4F����^�`ClaimDeviceVector�F����^�zsystemdevicesF���F^�{CLI�F���Qt^�BControl�F���d�^�EDelinkApplication#F���i�`��GenerateError�#F�����c�:InstallKeyHandler%F�������intoff�%F����L��inton�&F���d��MouseButtonsL'F����d�lNewLine�'F����qd��	PrettyPrinth1F���u���PrintChar|2F����|i��ReleaseDeviceVector6F����i�RelinkApplication(7F�����i�"RemoveCursorsL8F���
�i��RestoreCursors�8F����i�@SerialOp0:F���A��L
SerialOpStatusdDF�����i��SerialOp1LEF���2g]��SerialOpFormat8GF���,j��SerialOp2�HF���{
j��SerialOp3hJF����z��serialop4\LF����&j��SerialOp5�LF���r/j��SerialOp6�MF��� �]�SerialOpSpeeds8NF�����j��SetCallBack�OF�����j�SetEnv�QG�������SetColour�SF���/^k��setcolouractions`UF���™k��SubstituteArgs]F����k�(UnusedSWI8^F����+l��WriteEnv�^F�����i��SerialOp|aG���7m
ClaimProcessorVector�cG����
�Reset,dG����
-ScreenModeDATA4OS
#Parent !Root
#Prefix OS_
#!Table 26 20
#Table Columns 4
<AddCallBack>
<AddToVector>
<Args>
<BGet>
<BinaryToDecimal>
<BPut>
<BreakCtrl>
<BreakPt>
<Byte>
<CallAfter>
<CallAVector>
<CallBack>
<CallEvery>
<ChangedBox>
<ChangeDynamicArea>
<ChangeEnvironment>
<ChangeRedirection>
<CheckModeValid>
<Claim>
<ClaimDeviceVector>
<ClaimProcessorVector>
<ClaimScreenMemory>
<CLI>
<Confirm>
<Control>
<Convert<name\><nr\>=>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>
<Module>
<Mouse>
<NewLine>
<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>
<SetEnv>
<SetMemMapEntries>
<SetColour>
<SetVarVal>
<SpriteOp>
<SubstituteArgs>
<SWINumberFromString>
<SWINumberToString>
<UnusedSWI>
<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=>OS_Module_Service> <Vectors>DATA�OS_AddCallBack  (&54)
#Parent OS_
=>	R0 = address to call
	R1 = value of R12 to be called with

\<=	R0 = preserved
	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. 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
	C clear if byte read.

This SWI reads a byte from the current sequential file pointer.DATAOS_BinaryToDecimal  (&28)
=>	R0 = integer
	R1 = 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.DATAOS_Claim  (&1F)
#Parent OS_
=>	R0 = <vector number=>os_vectors>
	R1 = address of claiming routine
	R2 = value to be passed in R12 when the routine is called.

\<=	R0-R2 preserved
                 
This call adds the <routine=>os_vectorrules> whose address is given in R1 to the <list=>os_vectorchain> 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.

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.DATAiOS_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?DATApOS_CRC  (&5B)
#Parent OS_
=>	R0 = CRC continuation value, or 0
	R1 = Start of block
	R2 = 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 = SVC R13
	R14 = SVC R14

This SWI sets the processor to Supervisor mode. Interrupt and Fast Interrupt status is unaltered.

#tab
To return to UserMode:
   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.DATAqOS_EvaluateExpression  (&2D)
#Parent OS_
=>	R0 = string
	R1 = 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
	R1 = "ABEX" (&58454241) If Return code
	R2 = Return code
   
\<=	Never returns

This SWI passes control over to the most recent exit handler.

If R1 = "ABEX", and 0 \<= R2 \<= Sys$RCLimit, then Sys$ReturnCode is set to R2.

See also <OS_ExitAndDie>DATAOS_ExitAndDie  (&50)
#Parent OS_
=>	R0 = Pointer to error block
	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.DATA1OS_Find  (&0D)
#Parent OS_
=>	R0 = reason code
	(R1 = filename)
	(R2 = pathname)

\<=	(R0 = file handle)

This SWI opens and closes files

#tab
R0	Action
#Line
&00	Closes file R1 (all if R1 = 0)
&4x	Open existing file with read-only access
&8x	Create empty file with read/write access
&Cx	Open existing file with read/write access

#tab
Bits of x:	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	0DATA�OS_GetEnv  (&10)
#Parent OS_
\<=	R0 =	Address of *command
	R1 =	RAM limit
	R2 =	Ptr to 5-byte time of prog start

The values returned by this SWI, can be set with <OS_WriteEnv>DATA`OS_Release  (&20)
#Parent OS_
=>	R0 = <vector=>os_vectors> 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 (terminated by a \<= 32 char)

\<=	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 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.DATA�Software Vectors Chain
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=>os_vectorrules>.
�	Do some processing before calling the standard routine, which then passes control back to the caller: By <passing=>os_vectorrules> 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.DATA�Software Vectors Rules
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 &02) are always executed in IRQ mode.
*	Routines vectored through EventV, InsV, RemV, CnpV (Vectors &10 to &16) and 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}.DATAlList of Software Vectors
Vector			No	Description of vector
#Line
UserV			00	User (reserved)
ErrorV			01	Error (<OS_GenerateError>)
IrqV			02	Interrupt
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=>OS_eventv>	10	Event vector (<OS_GenerateEvent>)
<InsV=>OS_insv>		14	Buffer insert (<OS_Byte>)
RemV			15	Buffer remove (<OS_Byte>)
CnpV			16	Count/Purge Buffer (<OS_Byte>)
UKVDU23V		17	Unknown VDU23 (<OS_WriteC>)
UKSWIV			18	Unknown SWI (SWI)
UKPLOTV			19	Unknown VDU25
MouseV			1A	Mouse (<OS_Mouse>)
VDUXV			1B	VDU (<OS_WriteC>)
TickerV			1C	100Hz pacemaker
<UpCallV=>OS_UpCallReasons>	1D	Warning vector
ChangeEnvironmentV	1E	Environment change (<OS_ChangeEnvironment>)
SpriteV			1F	OS_SpriteOp indirection
DrawV			20	Draw SWI (<Draw_xx=>Draw_>)
EconetV			21	Econet activity (<Econet_xx=>Econet_>)
ColourV			22	ColourTrans SWI (<ColourTrans_xx=>ColourTrans_>)
DATAOS_GenerateEvent  (&22)
#Parent OS_
=>	R0 =	<event number=>OS_Events>
	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>.
DATAEvent vector
=>	R0 = <Event number=>os_events>
	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>.DATA�OS_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 :

R0 bits
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.DATA�OS_Mouse  (&1C)
#Parent OS_
#Wrap Off
\<=	R0 = x co-ordinate
	R1 = y co-ordinate
	R2 = <buttons=>OS_mousebuttons>
	R3 = time of button change.
	
This SWI returns the current mouse status.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 rouine linked into this vector can stop the change from happening by setting R1 to zero and passing the call on.DATA4System control handlers
Number	Meaning
#Line
0	<Memory limit=>.limit>
1	Undefined instruction
2	Prefetch abort
3	Data abort
4	Address exception
5	Other exceptions (reserved)
6	Error
7	Call back
8	Break point
9	Escape
10	Event
11	Exit
12	Unused SWI
13	<Exception registers=>.registers>
14	<Application space=>.appspace>
15	Currently active object
16	Up Call
#Subpage limit
Memory limit
This is the maximum permitted RAM limit, as used by <OS_GetEnv>.
#Subpage appspace
Application space
This is the amount of read/write memory in application space. Consequently it should always be the case that Application space >= Memory Limit.
#Subpage registers
Exception registers
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.
DATA4Insert vector (&14)
=>	R1 = buffer number, bit 31 set for block insert
	R9 = &14

	If single byte :
	R0 = byte
\<=	R2 corrupt

	If block insert :
	R2 = pointer to data
	R3 = length of data
\<=	R2 = pointer to end of data
	R3 corrupt

All characters inserted into buffers are sent through this vector.DATAvEvent numbers
\#	Description
#Line
0	Output buffer has become empty
1	Input buffer has become full
2	Character placed in input buffer
3	ADC conversion ended in BBC I/O expansion card
4	VSync Event
5	Interval timer has crossed zero
6	Escape condition has been detected
7	Serial RS423 error has been detected
8	Econet user remote procedure called
9	User has generated an event
10	<Mouse transition=>event_10>
11	<Key transition=>event_11>
12	Sound system reached start of a bar
13	PC Emulator event
14	Econet recieve complete
15	Econet transmit complete
16	Econet OS remote procedure called
17	Midi system event
18	Reserved for external developers
19	Internet event
20	Reserved for external developers
21	Reserved for external developers
22	Device overrun
23	Reserved for external developers
24	Driver recieved frame for Internet
25	Driver completed Internet transmission request
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.DATAOS_SetVarVal  (&24)
#Parent OS_
=>	R0 =	Ptr to name
	R1 =	Ptr to value to set to
	R2 =	Length
	R3 =	Name ptr (0 for 1st call)
	R4 =	<Variable type=>OS_vartypes>
	
\<=	R3 =	New name ptr
	R4 =	Variable type

This SWI sets a variables value to that specified.DATA�Variable types
0	String		Pointer to string, which will be GSTransed now
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 :
  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
  8	Here your code may come
#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 = ptr 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.
DIR$DD��E�������!Root��F���廈�000l�E���~;�001$�E����9�{002��E���x8�0030�E����6�004��E����4�~005d�E���R3��0064�F���sCT�007��E����.�254��F���.��U�255DATA�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
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 no	(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.DATA{OS_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 = 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.DIR$,,t�E���`v�+!Root��F���M����004t�F����`ME121��F���:�54M121a�F����¦��200��F������/229�E���e���247�E����;�254pF����.���indexF���o�`MG013PF�����`MO014�F���!aM�161XF����;aM.162�G����'-
cmos@F����UW�T002`CF����jW��011 EF������byte012�FF����9��G015DHF�����W��019,IF����=�M020|JF�����W��021KF���xA��025�LF���9E��G106OF����`X��112QF���vrX�113RF����X��117�SF���׮X�31180VF����X�{134�WF���HY�135�YF���_/Y�|144<[F����Z��165(\F����P���177�]F���	�Z�196�^F����	[�M1970`F����r[��202dF����[��S255`fF���)-���012DATA+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:	R2 = &FF,	R1 = 0
To set:		R2 = 0,		R1 = new valueDATA�OS_Byte 4  Cursor Key Status
=>	R0 =	4 (&04)
	R1 =	<new state=>.status>

<=	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.
#Subpage status
Cursor key state
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	=> 15DATAEOS_Byte 121  Keyboard scan
=>	R0 = 121 (&79)
	R1 = key

\<=	R1 = key pressed
	R2 = corrupted

This checks which keys are being pressed.
To check single key, use <key number=>os_byte121a> EOR &80. &FF is returned if key is pressed.
To check range, use lowest key to be checked. Key pressed is returned, or &FF if none.DATAMInternal Keys
#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	downDATA�OS_Byte 200  Alter Break and Escape effect
=>	R0 =	200 (&C8)
	R1 =	EOR value
	R2 =	AND value

\<=	R0 =	preserved
	R1 =	state before being overwritten
	R2 =	keyboard disable flag (see OS_Byte 201)
                                                  
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
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)DATA/OS_Byte 229  Alter Escape key status
=>	R0 =	229 (&E5)
	R1 =	EOR value
	R2 =	AND value

\<=	R0 preserved
	R1 =	state before being overwritten
	R2 =	escape effects (see OS_Byte 230)
                                                  
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.

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 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
=>	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
=>	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 *fx 254 0 makes the keypad to act exactly like the cursor keys, including Shift, Ctrl or both.DATA�OS_Byte Index
0	&00	Display OS version info
1	&01	Write user flag
2	&02	<Specify input stream=>os_byte002>
3	&03	Specify output stream
4	&04	<Cursor key status=>os_byte004>
5	&05	Write printer driver type
6	&06	Write printer ignore char
7	&07	Write RS232 receive rate
8	&08	Write RS232 transmit rate
9	&09	Write duration of first colour
10	&0A	Write duration of second colour
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
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 country number
71	&47	Read alphabet number
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
117	&75	<Read VDU status=>os_byte117>
118	&76	<Reflect keyboard status in LEDs=>os_byte118>
120	&78	Write keys pressed information
121	&79	<Keyboard scan=>os_byte121>
122	&7A	Keyboard scan from 16 decimal
124	&7C	Clear escape condition
125	&7D	Set escape condition
126	&7E	Acknowledge escape condition
127	&7F	Check for end of file
128	&80	Get buffer/mouse status
129	&81	Scan for a particular key
134	&86	<Read text cursor position=>os_byte134>
135	&87	<Read char at text cursor, and screen mode=>os_byte135>
138	&8A	Insert char into buffer
139	&8B	Write filing system options
143	&8F	Issue module service call
144	&90	<Set vertical screen shift, and interlace=>os_byte144>
145	&91	Get char from buffer
152	&98	Examine buffer status
153	&99	Insert char into buffer
156	&9C	Read/Write asynchronous communication state
160	&A0	Read VDU variable value
161	&A1	<Read battery backed RAM=>os_byte161>
162	&A2	<Write battery backed RAM=>os_byte162>
163	&A3	Read/Write general graphics info
165	&A5	Read output cursor position
176	&B0	50 Hz counter
177	&B1	Read input source
178	&B2	Read/Write keyboard semaphore
181	&B5	Read/Write RS423 input interpretation status
182	&B6	Read/Write NoIgnore state
191	&BF	Read/Write RS423 bust flag
192	&C0	Read RS423 control byte
193	&C1	Read/Write flash counter
194	&C2	Read duration of second colour
195	&C3	Read duration of first colour
196	&C4	Read/Write keyboard auto-repeat delay
197	&C5	Read/Write keyboard auto-repeat rate
198	&C6	Read/Write *Exec file handle
199	&C7	Read/Write *Spool file handle
200	&C8	<Read/Write Break and Escape effect=>os_byte200>
201	&C9	Read/Write keyboard disable flag
202	&CA	Read/Write keyboard status byte
203	&CB	Read/Write RS423 input buffer minimum space
204	&CC	Read/Write RS423 ignore flag
211	&D3	Read/Write bell channel
212	&D4	Read/Write bell sound volume
213	&D5	Read/Write bell frequenzy
214	&D6	Read/Write bell duration
216	&D8	Read/Write length of function key string
217	&D9	Read/Write paged mode line count
218	&DA	Read/Write bytes in VDU queue
219	&DB	Read/Write Tab key code
220	&DC	Read/Write escape character
221	&DD	Read/Write interpretation of input values &C0-&CF
222	&DE	Read/Write interpretation of input values &D0-&DF
223	&DF	Read/Write interpretation of input values &E0-&EF
224	&E0	Read/Write interpretation of input values &F0-&FF
225	&E1	Read/Write function key interpretation
226	&E2	Read/Write Shift Fn interpretation
227	&E3	Read/Write Ctrl Fn interpretation
228	&E4	Read/Write Shift Ctrl Fn interpretation
229	&E5	<Read/Write Escape key status=>os_byte229>
230	&E6	Read/Write escape effects
236	&EC	Read/Write character destination status
237	&ED	Read/Write cursor key status
238	&EE	Read/Write numeric keypad interpretation
240	&F0	Read country flag
241	&F1	Read/Write user flag
242	&F2	Read RS423 baud rates
243	&F3	Read timer switch state
245	&F5	Read printer driver type
246	&F6	Read/Write printer ignore character
247	&F7	<Read/Write Break key actions=>os_byte247>
250	&FA	Read VDU driver screen bank number
251	&FB	Read display screen bank number
253	&FD	Read last break type
254	&FE	<Set effect of Shift-Ctrl on numeric keypad=>os_byte254>
255	&FF	<Read/Write boot option=>os_byte255>
DATAGOS_Byte 13  Disable event
=>	R0 = 13 (&0D)
	R1 = <event number=>os_events>
	
This call disables a particular event from being called though the <Event Vector=>os_eventv>. I assume that a count is maintained of the number of enables and disables set so that when no routines are claiming the event it really is disabled.DATAOOS_Byte 14  Enable event
=>	R0 = 14 (&0E)
	R1 = <event number=>os_events>
	
This call enables a particular event so that it is being called through the <Event Vector=>os_eventv>. I assume that a count is maintained of the number of enables and disables set so that when no routines are claiming the event it really is disabled.DATA�OS_Byte 161  Read CMOS RAM
=>	R0 = 161 (&A1)
	R1 = <byte number=>os_bytecmos>

<=	R2 = value

This call reads the battery backed RAM used to store configuration information.DATA.OS_Byte 162  Write CMOS RAM
=>	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$�F����EZ�(!Root�-F����pdMc10 .F�����Y��11/F���3�Y��15�/F�����Y��16$0F����P�O�17�0F����iM�28�1F����5���132\3F���#�Y�p133�4F����-hM�135T5F����fM�136�5F���(/fMY140<6F���OfM^148�6F����cZ�=188�7F���ϲfM�193�8F���?[@��195x9F���u�iM�198\:F����gMP208�:F���)�O�215t;F����|gM�2204<F���9iMW28a�<F����8iMU29�<F���e�iM_displayD=F���WjMlsort�=F���	ȠMG197�>F���O�216�?F�����Y�B24DATA(OS_Byte CMOS settings
0	&00	Econet station number
1	&01	Econet fileserver station number
2	&02	Econet fileserver network number/name
3	&03	Econet printer server station number
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
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
DATAcOS_Byte CMOS 10
Bit(s)	Meaning
#Line
0,1,2,3	Mode
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 <sort format=>os_bytecmosdisplay>
2	Use ArthurLib for library on Logon
3,4	NetFiler <display format=>os_bytecmossort>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	Host 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
#Subpage invalid
Invalid character codes
#Line
Value	Meaning for invalid characters
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 rateDATAYOS_Byte CMOS 140
Bit(s)	Meaning
#Line
0	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 options ?
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	BootNet
1	Dynamic station
2	CMOS reset
3	Power save
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!!!DATABOS_Byte CMOS 24
Bit(s)	Meaning
#Line
0-7	Territory number
DATATOS_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 by <OS_Byte177>
#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 centisecond

<=	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 12  Write keyboard auto repeat rate
=>	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_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_Byte197>.
DATAGOS_Byte 15  Flush buffer
=>	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
=>	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.
DATAMOS_Byte 20  Reset font definition
=>	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
=>	R0 =	21
	R1 =	buffer number

<=	R0,R1 preserved
	R2 corrupted

This call flushes the specified buffer.DATA�OS_Byte 25  Reset groups of font definition
=>	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+> 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
DATAGOS_Byte 106  Select pointer/activate mouse
=>	R0 =	106
	R1 =	<pointer shape and linkage flag=>flags>

<=	R0 preserved
	R1 =	shape and linkage flag before overwritten
	R2 corrupted

You can define four 'pointer buffers' using OS_Word 21, 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:
#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 set.
DATA�OS_Byte 112  Write VDU driver screen bank
=>	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.DATAOS_Byte 113  Write display hardware screen bank
=>	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.
DATA�OS_Byte 117  Read VDU status
=>	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
Bit	Status when set
#Line
0	Print output enabled by VDU 2
1	Unused
2	Paged scrolling selected by VDU 14
3	Text window in force ie software scrolling
4	In a shadow mode
5	In VDU 5 mode
6	Cursor editing in progress
7	Screen disabled with VDU 21
DATA3OS_Byte 118  Reflect keyboard status in LEDs
=>	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
=>	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.
DATAOS_Byte 135  Read char at cursor position and screen mode
=>	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
=>	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>.DATA�OS_Byte 165  Read output cursor position
=>	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
=>	R0 =	177
	R1 =	0
	R2 =	255

<=	R0 preserved
	R1 =	<value of stream selection=>.stream>
	R2 corrupted

This returns the number of the buffer from which character input gets characters. You MUST NOT use any numbers than 0 and 255 for R1 and R2, to change this variable better use <OS_Byte 2,=>OS_Byte002>.
#Subpage stream
Value	Meaning
#Line
0	Keyboard buffer
1	Serial input buffer
DATAOS_Byte 196  Read/Write keyboard auto repeat delay
=>	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.DATAMOS_Byte 197  Read/Write keyboard auto repeat rate
=>	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.DATA�OS_Byte 202  Read/Write keyboard status byte
=>	R0 =	202
	R1 =	EOR value
	R2 =	AND value

\<= R0 preserved
	R1 =	<status before overwritten=>.status>
	R2 =	serial input buffer space

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.DATASOS_Byte 255  Read/Write boot option
=>	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 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.
DATA�OS_Byte 12  Write keyboard auto repeat rate
=>	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_Byte197>.DIR$���iG����<
B!Root$oF���C�g�{0�pF����sL1�rF����6tL�12�tF����tL�5tvF����+tLm6�wE������a�xF���e�#b�yF���^��!�11�zF���h��!�7�{F���l;X�8p|F�����vL�20\~F����sL�c�F������24DATABOS_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
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_File20>
255	<Load named file=>OS_File12>
DATA{OS_File 0 and 10
Save a block of memory as a file

=>	R0 = 0 or 10
	R1 = pointer to filename
	if R0 =  0 :	R2 = <load address=>os_filea>
	 		R3 = <exec address=>os_filea>
	if R0 = 10 :	R2 = <filetype=>Filetypes:!Root>
	R4 = start address in memory
	R5 = end address in memory

\<= registers preserved

An error is returned if object is locked, is open or is a directory.
DATAOS_File 1,2,3,4,9 and 18
Write catalogue info for named object

=>	R0 = 1,2,3,4,9 or 18
	R1 = pointer to filename
	if R0 in (1,2)	: R2 = <load address=>os_filea>
	if R0 = 18	: R2 = <filetype=>Filetypes:!Root>
	if R0 in (1,3)	: R3 = <exec address=>os_filea>
	if R0 in (1,4)	: R5 = <attributes=>os_fileb>

\<=	registers preserved

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.DATA�OS_File 12,14,16 and 255
Load named file

=>	R0 = 12,14,16 or 255
	R1 = pointer to filename
	if R3 & FF = 0 :
	R2 = 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

\<=	R0 = <object type=>os_filec>
	R2 = <load address=>os_filea>
	R3 = <exec address=>os_filea>
	R4 = object length
	R5 = <object attributes=>os_fileb>

Error if not found, is directory, no read access or bad load addressDATA�OS_File 5,13,15 and 17
Read catalogue info for named object

=>	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=>os_filec>
	R2 = <load address=>os_filea>
	R3 = <exec address=>os_filea>
	R4 = object length
	R5 = <object attributes=>os_fileb>

R2-R5 corrupted if object not foundDATAmOS_File 6
Deletes a named object

=>	R0 = 6
	R1 = ptr to non-wildcarded object name

\<=	R0 = <object type=>os_filec>
	R2 = <load address=>os_filea>
	R3 = <exec address=>os_filea>
	R4 = object length
	R5 = <object attributes=>os_fileb>

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�Load and Exec address
If all 12 upper bits of the load address are set :

 Load addr	:	FFFtttcc	ttt is filetype
 Exec addr	:	dddddddd	ccdddddddd is date

otherwise load and exec address are exactly what they claim to be.DATA#File 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.DATA�OS_File 11
Create a stamped empty file

=>	R0 = 11
	R1 = ptr to non-wildcarded object name
	R2 = file type
	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
Create an un-stamped empty file

=>	R0 = 7
	R1 = ptr to non-wildcarded object name
	R2 = load address
	R3 = exec address
	R4 = 0
	R5 = size of file
	
This SWI attempts to create a file of a given size with a particular file type.DATA�OS_File 8
Create a directory

=>	R0 = 8
	R1 = ptr to non-wildcarded filename
	R4 = number of entries

It is not an error if the directory already exists.DATA�OS_File 20,21,22 and 23
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=>os_filec>
	R2 = <load address=>os_filea>
	R3 = <exec address=>os_filea>
	R4 = object length
	R5 = <object attributes=>os_fileb>
	R6 = <filetype=>Filetypes:!Root>
	
R2-R5 corrupted if object not foundDATA�Object types
Type	Meaning
#Line
0	Object not found
1	File
2	Directory
3	Image

Image files only exist under RO3. 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�OS_File 24  (&08)
=>	R0 =	24
	R1 =	ptr to file name
\<=	R2 =	natural block size in bytes
#line
*Use*:	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.DIR$��G���On

	!RootȍF�������xFlags@�F����m�DescriptorL�F����ƃ%27t�F���J�U28̓E���
�0��E���^��1��F����d7V�18h�E���a�31l�F���v��N26��F���E㟖{258�F���%_��13�G���fL
�33��G���2U
.37ПG����
,38��G���/G
�39��G���sE
�40<�G����?
_43��G���S>
a44�G����<
_45`�G����:
�47��G���9
�48��G����7
�49|�G���z5
�50,�G���3
u52��G���!.
�53X�G���2*
�54DATA
	OS_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
03 &03  Internal
04 &04  Run a file
05 &05  Catalogue a dir
06 &06  Examine current dir
07 &07  Catalogue library
08 &08  Examine library
09 &09  Examine objects
10 &0A  Set FS options
11 &0B  Set temporary FS
12 &0C  Add a FS
13 &0D  <Check for FS=>os_fscontrol13>
14 &0E  Select FS
15 &0F  Boot from FS
16 &10  Remove FS
17 &11  Add secondary module
18 &12  <filetype \=\> text=>OS_FSControl18>
19 &13  Restore current FS
20 &14  Read location of temp FS
21 &15  Return a file handle
22 &16  Close all open files
23 &17  Shutdown FS
24 &18  Set attribs of objects
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  <text \=\> filetype=>OS_FSControl31>
32 &20  Output a list of object names and information
33 &21  <Convert a filing system number to a name=>OS_FSControl33>
34 &22  Reserved
35 &23  Add an image filing system
36 &24  Remove an image filing system
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 file 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>
#EndTable
DATAxFlags for file operations
Bit	Use	Meaning
#Line
0	CWN	Recurse
1	CW	Force
2	CWN	Given times in block
3	CWN	Confirm operation
4	CWN	Verbose
5	C	Quick (use application area - not really safe)
6	C	Prompt for new disc
7	C	Delete after copy
8	CWN	Allow printing of progress
9	C	Access attributes as in source
10	C	Stamp files
11	C	Structure copy only
12	C	Newer than destination
13	C	<Use descriptor block=>OS_FSControlDescriptor>
14	C	Look 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.DATAFile descriptor blocks
Offset	Contents
#Line
0	Address of filename
4	Length of filename

This may not be exactly what the descriptor consists of. It is most likely that the address and lengths are repeated, or that the address is that of a block of filenames.DATA%OS_FSControl 27  (&29)
=>	R0 = 27
	R1 = ambigous filename of files to wipe
	R3 = <flags=>OS_FSControlFlags>
	R4 = start load
	R5 = start exec
	R6 = end load
	R7 = end exec
	R8 = <pointer to descriptor=>OS_FSControlDescriptor>

This SWI allows you to wipe files as in the *Wipe command.DATAUOS_FSControl 28  (&29)
=>	R0 = 28
	R1 = Ambigous filename of files to count
	R3 = <flags=>OS_FSControlFlags>
	R4 = start load
	R5 = start exec
	R6 = end load
	R7 = end exec
	R8 = <pointer to descriptor=>OS_FSControlDescriptor>

\<=	R2 = total length
	R3 = number of files

This SWI allows you to count files as in the *Count command.DATA�OS_FSControl 0  (&29)
=>	R0 = 0
	R1 = (wildcarded) filename

This SWI sets current directory and filing system. If a 0 pointer is used, the directory is set to the User Root DirectoryDATAOS_FSControl 1  (&29)
=>	R0 = 1
	R1 = (wildcarded) filename

This SWI sets the library directory and filing system. If a 0 pointer is used, the default for this filing system is used.

On FileCore-based filing systems, the default is to search &.Library, $.Library and @DATA�OS_FSControl 18  (&29)
=>	R0 = 18
	R2 = filetype (bits 0-11)

\<=	R2 = first four chars
	R3 = final four chars

This SWI issues OS_ServiceCall 66. If unclaimed, it builds a default string.DATAOS_FSControl 31  (&29)
=>	R0 = 31
	R1 = ptr to filetype string

\<=	R2 = filetype

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.DATANOS_FSControl 26  (&29)
=>	R0 = 26
	R1 = ambigous filename of files to copy
	R2 = destination
	R3 = <flags=>OS_FSControlFlags>
	R4 = start load
	R5 = start exec
	R6 = end load
	R7 = end exec
	R8 = <pointer to descriptor=>OS_FSControlDescriptor>

This SWI allows you to copy files from one directory to another or as a new name.DATA{OS_FSControl 25  (&29)
=>	R0 = 25
	R1 = original filename
	R2 = new filename

This SWI allows you to rename a file.DATA�OS_FSControl 13  (&29)
#Parent OS_FSControl
=>	R0 =	13
	R1 =	filing system number or pointer to name
	R2 =	depends on R1

<=	R0 preserved
	R1 =	filing system number
	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)
=>	R0 =	33
	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)
=>	R0 =	37
	R1 =	ptr to pathname to convert
	R2 =	buffer
	R5 =	buffer size
\<=	R5 =	No 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)
=>	R0 =	38
	R1 =	ptr to pathname
	R2 =	load address
	R3 =	exec address
	R4 =	length
	R5 =	Attributes
	R6 =	<Object type=>fsys_objtype>
\<=	R2 =	<File type=>FileTypes.!Root>

Supply the relevant information on entry and this call will return the file type of the object.DATA�OS_FSControl 39  (&29)
=>	R0 =	39
	R1 =	ptr to pathname
\<=	Registers preserved

Sets the User Root Directory (URD) to the given pathname.DATA�OS_FSControl 40  (&29)
=>	R0 =	40
\<=	Registers preserved

Performs the equivalent of {fcode}*Back{f}, i.e. swaps the previous directory with the current directory.DATA_OS_FSControl 43  (&29)
=>	R0 =	43
\<=	Registers preserved

Unsets the Current DirectoryDATAaOS_FSControl 44  (&29)
=>	R0 =	44
\<=	Registers preserved

Unsets the User Root DirectoryDATA_OS_FSControl 45  (&29)
=>	R0 =	45
\<=	Registers preserved

Unsets the Library DirectoryDATA�OS_FSControl 47  (&29)
=>	R0 =	47
	R1 =	ptr to name of object
\<=	R0,R1	preserved
	R2 =	boot option

Reads the boot option for a disc or imageDATA�OS_FSControl 48  (&29)
=>	R0 =	48
	R1 =	ptr to name of object
	R2 =	new boot option
\<=	Registers preserved

Sets the boot option for a disc or imageDATA�OS_FSControl 49  (&29)
=>	R0 =	49
	R1 =	ptr 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.DATA�OS_FSControl 50  (&29)
=>	R0 =	50
	R1 =	ptr to name of object
	R2 =	new disc name
\<=	Registers preserved

Renames the disc or image file containing the given object.DATAuOS_FSControl 52  (&29)
=>	R0 =	52
	R1 =	ptr to name of image file or disc
	R2 =	offset into image file or disc
	R3 =	ptr to buffer to receive object name
	R4 =	buffer length
\<=	Buffer contains object name
	R2 =	Object type (see below)
	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, map out a defect.

*Object type*:
	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)
DATA�OS_FSControl 53  (&29)
=>	R0 =	53
	R1 =	ptr to new path
	R2 =	directory to set (see below)
	R3 =	ptr to name of filing system
	R6 =	ptr 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.

*Directory types*:
	0	CSD (Currently Selected Directory)
	1	PSD (Previously Selected Directory)
	2	URD (User Root Directory)
	3	Library DirectoryDATA�OS_FSControl 54  (&29)
=>	R0 =	54
	R1 =	ptr to buffer to hold pathname
	R2 =	directory to set (see below)
	R3 =	ptr to name of filing system
	R5 =	size of buffer (or 0 to read required size)
\<=	Buffer is filled with pathname
	R1 =	ptr to rest of path, or 0 if directory is not set
	R5 =	(buffer length) minus (length of string (with terminator))
	R6 =	ptr to special field, terminated with null or "," (or 0 for none)

This call reads the path of the specified directory.

*Directory types*:
	0	CSD (Currently Selected Directory)
	1	PSD (Previously Selected Directory)
	2	URD (User Root Directory)
	3	Library Directory

*Notes*:	Like other OS_FSControl calls, use this call twice: after the first call (r5 = 0), and on exit r5 = -(bytes needed).DIR$���F���{��$�12��F���R��ڱ2D�F���8�ھ26�F����'���3�F���l��E34,�F���]���36�F���a��!R40d�F����o��49��F���2��!5ActionнF������dArea4�G���:�
�ptr��F����9�AReason�F�����MReason2,�F���:���8H�F���|���10L�F���F��څ11��F���T��13��F����K�ڪ14��F���$F��15��F���B��
16��F���<��24��F���
:�ږ25\�F����1��27\�F����-��28x�F���;)�ڱ29,�F���|��ڪ30��F���N���31��F���%����32��F�����ڤ33t�F��������35H�F���Ÿ���37,�F�������41<�F�������42@�F�������	43L�F���Z���44d�F���L���45x�F���B����46T�F������ڲ47�F��������48��F�������49�F���G���G50T�F���"���&51|�F�������W52��F���1���53��F���:����54��F���-���5556��F���(���f5758 �F�������S60t�F����{��M61�F����h���62DATA�Save sprite area  (12)
=>	R0 = <12=>OS_spriteop_Reason2>
	R1 = <Sprite area=>OS_SpriteOp_Area>
	R2 = filename

This call saves the entire sprite area to a file.DATA�Screen save  (2)
=>	R0 =	<2=>os_spriteop_reason2>
	R2 =	pathname
	R3 =	palette save (0,1=no,yes)

This SWI saves the current graphics window. Spritename is "screendump".DATA�Rename sprite  (26)
=>	R0 =	<26=>OS_spriteop_Reason2>
	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)
=>	R0 =	<3=>os_spriteop_reason2>
	R2 =	pathname

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.DATAEPut sprite at co-ords  (34)
=>	R0 = <34=>OS_spriteop_Reason2>
	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.DATA�Set pointer shape  (36)
=>	R0 =	<36=>OS_SpriteOp_Reason2>
	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 (0 for this mode)
	R7 =	pixel trans table

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	Ptr nr. (1-4)
4	0 => Set shape data
5	0 => Set palette
6	0 => Set ptr nr.
DATARRead sprite info  (40)
=>	R0 = <40=>OS_SpriteOp_Reason2>
	R1 = <Sprite area=>OS_SpriteOp_Area>
	R2 = Sprite name/ptr

\<=	R3 = width in pixels
	R4 = height in pixels
	R5 = 0,1 for mask no,yes
	R6 = Mode

This SWI returns info about the given sprite.
To find OS width and height, read <mode variables=>OS_ReadModeVariable> 4 and 5.DATA4Initialise area  (9)
=>	R0 = <9=>OS_spriteop_reason2>
	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 (ptr to first sprite)
12	16 (ptr to first free word)
DATA5Action 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 (can be added)
#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.DATAdFormat of sprite area
A sprite area consists of a control block followed by an optional extension area, sprites, and free space. Note that a sprite area is saved without its first word.

 0	Total size of sprite area
 4	Nr of sprites in area
 8	Offset to 1st <sprite=>os_spriteop_ptr>
 12	Offset to 1st free word
 16..	Extension words (usually none)DATA�Format of sprite
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=>.type>
44..	Palette data
#
#Subpage type
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-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_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)DATAAOS_SpriteOp reason codes
R0	Action
#Line
2	<Screen save=>os_spriteop_2>
3	<Screen load=>os_spriteop_3>
8	<Read area control block=>os_spriteop_8>
9	<Initialise sprite area=>os_spriteop_9>
A	<Load sprite file=>OS_SpriteOp_10>
B	<Merge sprite file=>OS_SpriteOp_11>
C	<Save sprite file=>OS_SpriteOp_12>
D	<Return name=>OS_SpriteOp_13>
E	<Get sprite=>OS_SpriteOp_14>
F	<Create sprite=>OS_SpriteOp_15>
10	<Get sprite from user coords=>OS_SpriteOp_16>
18	<Select sprite=>OS_SpriteOp_24>
19	<Delete sprite=>OS_SpriteOp_25>
1A	<Rename sprite=>OS_SpriteOp_26>
1B	<Copy sprite=>OS_SpriteOp_27>
1C	<Put sprite=>OS_SpriteOp_28>
1D	<Create mask=>OS_SpriteOp_29>
1E	<Remove mask=>OS_SpriteOp_30>
1F	<Insert row=>OS_SpriteOp_31>
20	<Delete row=>OS_SpriteOp_32>
21	<Flip about x axis=>OS_SpriteOp_33>
22	<Put sprite at user coords=>OS_SpriteOp_34>
23	<Append sprite=>OS_SpriteOp_35>
24	<Set pointer shape=>os_spriteop_36>
25	<Create/remove palette=>os_spriteop_37>
28	<Read sprite info=>os_spriteop_40>
29	<Read pixel colour=>os_spriteop_41>
2A	<Write pixel colour=>os_spriteop_42>
2B	<Read pixel mask=>os_spriteop_43>
2C	<Write pixel mask=>os_spriteop_44>
2D	<Insert column=>os_spriteop_45>
2E	<Delete column=>os_spriteop_46>
2F	<Flip about y axis=>os_spriteop_47>
30	<Plot sprite mask=>os_spriteop_48>
31	<Plot mask at user coords=>os_spriteop_49>
32	<Plot mask scaled=>os_spriteop_50>
33	<Paint char scaled=>os_spriteop_51>
34	<Paint sprite scaled=>os_spriteop_52>
35	<Put sprite grey scaled=>os_spriteop_53>
36	<Remove lefthand wastage=>os_spriteop_54>
37	<Plot mask transformed=>os_spriteop_5556>
38	<Plot sprite transformed=>os_spriteop_5556>
39	<Insert/delete rows=>os_spriteop_5758>
3A	<Insert/delete columns=>os_spriteop_5758>
3C	<Switch output to sprite=>os_spriteop_60>
3D	<Switch output to mask=>os_spriteop_61>
3E	<Read save area size=>os_spriteop_62>
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.
DATARead area control block (8)
=>	R0 =	<8=>os_spriteop_reason2>
	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.
DATALoad sprite file  (10)
=>	R0 =	<10=>os_spriteop_reason2>
	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)
=>	R0 =	<11=>os_spriteop_reason2>
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Pointer to pathname

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.DATAReturn name (13)
=>	R0 =	<13=>os_spriteop_reason2>
	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)
=>	R0 =	<14=>os_spriteop_reason2>
	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)
=>	R0 =	<15=>os_spriteop_reason2>
	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

This creates a blank sprite.DATA
Get sprite from coords (16)
=>	R0 =	<16=>os_spriteop_reason2>
	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.
DATASelect sprite (24)
=>	R0 =	<24=>os_spriteop_reason2>
	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)
=>	R0 =	<25=>os_spriteop_reason2>
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This deletes the sprite.DATA�Copy sprite (27)
=>	R0 =	<27=>os_spriteop_reason2>
	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. DATAPut sprite (28)
=>	R0 =	<28=>os_spriteop_reason2>
	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)
=>	R0 =	<29=>os_spriteop_reason2>
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This creates a mask with all pixels defined as solid.DATA�Remove mask (30)
=>	R0 =	<<30=>os_spriteop_reason2>=>os_spriteop_reason2>
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This removes the mask.
DATAInsert row (31)
=>	R0 =	<31=>os_spriteop_reason2>
	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.DATA�Delete row (32)
=>	R0 =	<32=>os_spriteop_reason2>
	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)
=>	R0 =	<33=>os_spriteop_reason2>
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This turns the sprite upside down.DATA�Append sprite (35)
=>	R0 =	<35=>os_spriteop_reason2>
	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.DATA�Create/Remove palette (37)
=>	R0 =	<37=>os_spriteop_reason2>
	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.
DATARead pixel colour (41)
=>	R0 =	<41=>os_spriteop_reason2>
	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.
DATAWrite pixel colour (42)
=>	R0 =	<42=>os_spriteop_reason2>
	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)
=>	R0 =	<43=>os_spriteop_reason2>
	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.DATAWrite pixel mask (44)
=>	R0 =	<44=>os_spriteop_reason2>
	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.DATAInsert column (45)
=>	R0 =	<45=>os_spriteop_reason2>
	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.
DATA�Delete column (46)
=>	R0 =	<46=>os_spriteop_reason2>
	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)
=>	R0 =	<47=>os_spriteop_reason2>
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This replaces the sprite with it's mirror image.DATA�Plot mask (48)
=>	R0 =	<48=>os_spriteop_reason2>
	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.DATAPlot mask at coords (49)
=>	R0 =	<49=>os_spriteop_reason2>
	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. DATAGPlot mask scaled (50)
=>	R0 =	<50=>os_spriteop_reason2>
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate
	R4 =	y coordinate
	R6 =	Scale factors

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)
=>	R0 =	<51=>os_spriteop_reason2>
	R1 =	Character code
	R3 =	x coordinate
	R4 =	y coordinate
	R6 =	Scale factors

This plots the specified colour in the forground colour (using the given scaling factors) with the bottom left corner at the given coordinates. DATAWPut sprite scaled (52)
=>	R0 =	<52=>os_spriteop_reason2>
	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=>SF> or 0 for 1:1 scaling
	R7 =	<Pixel translation table=>PT> or 0 for no translation

This plots the given sprite.DATA�Put sprite grey scaled (53)
=>	R0 =	<53=>os_spriteop_reason2>
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate
	R4 =	y coordinate
	R5 =	0
	R6 =	<Scale factors=>SF> or 0 for 1:1 scaling
	R7 =	<Pixel translation table=>PT> 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 who's pixels reflect a linear grey scale. Note this is considerably slower than <OS_SpriteOp 52=>os_spriteop_52>.DATA�Remove left hand wastage (54)
=>	R0 =	<54=>os_spriteop_reason2>
	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.DATAPlot mask/sprite transformed (55/56)
=>	R0 =	<55=>os_spriteop_reason2> (Plot mask) or <56=>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 =	Pointer to matrix (R3 bit 0 clear)
	 	R6+0,4,8,12,16,20 = matrix (as for Draw module)�(*** FIX ***)
	 	Pointer to destination coords (R3 bit 0 set)
	 	R6+0,4   = x0,y0 on screen (1/256th OS unit)
	 	R6+8,12  = x1,y1 on screen (1/256th OS unit)
	 	R6+16,20 = x2,y2 on screen (1/256th OS unit)
	 	R6+24,28 = x3,y3 on screen (1/256th OS unit)
	R7 =	<Pixel translation table=>PT> 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 matrix
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
DATAfInsert/Delete Rows/Columns (57/58)
=>	R0 =	<57=>os_spriteop_reason2> (Rows) or <58=>os_spriteop_reason2> (Columns)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	Row/Column number
	R4 =	+ve : Number of rows/columns to insert
	 	-ve : Number of rows/columns to delete

Insert or delete rows or columns from the sprite specified.DATASSwitch output to sprite (60)
=>	R0 =	<60=>os_spriteop_reason2>
	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.DATAMSwitch output to mask (61)
=>	R0 =	<60=>os_spriteop_reason2>
	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)
=>	R0 =	<62=>os_spriteop_reason2>
	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.DIR$��x�F���^�c�]!Root�E������#18�G���ـ
�_format�F���"�#�_service
F���x<�$�6�
F����M�$m7F���wl�$�13�F���OE�A�4�F���.mM+12�F���"8[W�10F����1[W�0�F���Sb�J2@F���Pdb�3TF����{b��5F����b�"88F���$�b��10F����b�M11PF�����b��14PF����b��15 F�����b��16�F����Rc�317F����Dc��19-20�"F���5Pc�tROMSectionsl#F���>�c��9DATA]OS_Module  (&1E)
#Parent OS_
=> R0 = Reason :
0	<Run=>OS_Module0>             	Other stuff:
1	<Load=>OS_Module1>		  <Service calls=>os_module_service>
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>
DATA#OS_Module 18
#Parent OS_Module
=>	R0 = 18
	R1 = name[%instantiation]

\<=	R1 = module number
	R2 = instantiation number
	R3 = module code
	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�Module format
Offset	Contains
#Line
&00	Start code
&04	Init code
&08	Exit code
&0C	Service handler
&10	Title String
&14	Help String
&18	Help/Command table
(&1C	SWI base number)
(&20	SWI handler)
(&24	SWI decode table)
(&28	SWI decode code)

All entries except &1C are offsets from the start of the module. Entry is 0 if it isn't used. The SWI entries are only used if they contain sensible values. This means that if the module hasn't got any SWIs, these four words *could* be used for something else.DATAService calls
#Table Columns 2
00 Call claimed
04 Unknown command
06 Error has occured
07 Unknown OS_Byte
08 Unknown OS_Word
09 *Help called
0B Release FIQ
0C Claim FIQ
11 MEMC remap warning
12 Start a FS (old)
27 Post-Reset
28 Unknown *Configure
29 Unknown *Status
2A New application
40 FS re-init
41 PDriver print
42 Lookup filetype
43 International service
44 Keyboard handler
45 Pre-Reset
46 Post-Modechange
47 Claim background FIQ
48 Econet reallocate ports
49 Start Wimp
4A Started Wimp
4B Start Filer
4C Started Filer
4D Pre-Modechange
4E Memory Moved
4F Filer is dying
50 Mode Extention
51 Mode Translation
52 Mouse Trap
53 Wimp Closedown
54 Sound
55 *Logon/*Bye (NetFS)
56 Econet dying
57 Wimp ReportError
59 ResourceFS Started
5A ResourceFS Dying
5B ColourTrans calibration changed
5C Wimp SaveDesktop
5D Wimp Palette
5E MessageTrans file closed
5F NetFS dying
60 ResourceFS Starting
64 Territory Manager Loaded
65 PDriver starting
66 PDumper starting
67 PDumper dying
68 CloseFile
69 Identify disc
6A Filer enumerate formats
6B ADFS identify format
6C ADFS display format help
6D Validate Address
6E Fonts changed
6F Buffer starting
70 DeviceFS starting
71 DeviceFS dying
72 Switching output to sprite
73 Module PostInit
75 Territory started
76 Monitor lead translation
78 PDriver GetMessages
79 DeviceFS device dead
7A Screen blanked
7B Screen restored
7C Desktop Welcome
7D Disc dismounted
7E Shutdown
7F PDriver changed
80 Shutdown Complete
81 DeviceFS close request
82 ColourTrans invalidate cache
83 Econet protocol dying
84 Econet find network driver
85 Wimp SpritesMoved
86 Wimp RegisterFilters
87 FilterManager installed
88 FilterManager dying
89 Mode changing
8B Network driver status
8C Syntax error
8D Enumerate screen modes
8E Pages unsafe
90 Created dynamic area
91 Remove dynamic area
92 Renumber dynamic area
93 Colour picker loaded
10800 ADFSPodule
10801 ADFSPodule IDE
10802 ADFSPodule IDE dying
400C0 Wimp ErrorStarting
400C1 Wimp ErrorButtonPressed
400C2 Wimp ErrorEnding
45540 DrawFile ObjectRender
45541 DrawFile DeclareFonts
#EndTable
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 = 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 ???

This SWI returns information about a module, given it's number.DATA�OS_Module 1
#Parent OS_Module
=>	R0 =	1
	R1 =	filename

This SWI loads a module. It is equivilent to the *RMLoad command.DATA�OS_Module 0
#Parent OS_Module
=>	R0 =	0
	R1 =	filename

This SWI run a module, calling its start address. It is equivilent to the *RMRun command. Use <OS_Exit> or <OS_ExitAndDie> to leave.DATAJOS_Module 2
=>	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, 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
=>	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.

(eg If version = 2.12 then BCD = &00021200)
DATAtROM Sections
\#	ROM Section
#Line
0-3	Expansion card 0-3
-1	System ROM
-2	System ROM 1
-3	System ROM 2 etc.
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$���$F����[��!Root|'F���b�_StandardDateAndTime�(F���k伈�FileSize�)F����jNjFixedFileSize@+F�����eDateAndTimeDATA�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 = 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,2,4,6,8	(nibbles)
  Cardinal		1,2,3,4		(bytes)
  Integer		1,2,3,4		(--"--)
  Binary		1,2,3,4		(--"--)
  SpacedCardinal	1,2,3,4		(--"--)
  SpacedInteger		1,2,3,4		(--"--)

In addition we have :
  OS_ConvertFixedNetStation
  OS_ConvertNetStation
  <OS_ConvertFixedFileSize>
  <OS_ConvertFileSize>
  <OS_ConvertDateAndTime>
  <OS_ConvertStandardDateAndTime>
DATA_OS_ConvertStandardDateAndTime  (&C0)
#Parent OS_
=>	R0 = Pointer to 5-byte time block
	R1 = Buffer for resulting string
	R2 = size of buffer

\<=	R0 = Buffer (R1 on entry)
	R1 = terminating \0 in buffer
	R2 = free bytes in buffer

This SWI converts a five-byte value representing centiseconds since 1900, into a string. It uses SYS$DateFormat.DATA�OS_ConvertFileSize  (&EC)
#Parent OS_
=>	R0 = File size
	R1 = Buffer for resulting string
	R2 = size of buffer

\<=	R1 = terminating \0 in buffer

This SWI converts a value to an amount of space in the form x bytes, x Kbytes, oor x Mbytes.DATAjOS_ConvertFixedFileSize  (&EB)
#Parent OS_
=>	R0 = File size
	R1 = Buffer for resulting string
	R2 = size of buffer

\<=	R1 = terminating \0 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 a the start padded with spaces.DATAeOS_ConvertDateAndTime  (&C1)
#Parent OS_
=>	R0 = Pointer to 5-byte time block
	R1 = Buffer for resulting string
	R2 = size of buffer
	R3 = <format string=>swi_dateformat>

\<=	R0 = Buffer (R1 on entry)
	R1 = terminating \0 in buffer
	R2 = free bytes in buffer

This SWI converts a five-byte value representing centiseconds since 1900, into a string.DIR$��|.F����o~�'1�/F���}�~��10p1F���-�~��11(3F����r~�R2|4F�����~�x256�7F���y�~��257�:F���X�~�:4�<F����l�@!RootAF���`�~��reasons�BG����*-
�3_�OF���\�~�3�UF����}�+1+2\F���w�~��6�`F���}�~��7�cF���:�~��8(eF����~��9DATA'Upcall 1 - Media not present
=>	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.
DATARUpcall 2 - Media not known
=>	R0 =	2
	R1 =	FS number
	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
DATAxOS_UpCall 256 - New Application
=>	R0 =	256 (New Application)
	R2 =	Currently Active Object pointer
   
<=	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
=>	R0 =	257 (Moving memory)
	R1 =	amount that application space is going to change by
              
<=	R0 =	0 to permit memory moved, else preserved
	R1 is 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.DATA@OS_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. 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$���DF����xm�Kreasons�FF���om��0�GF���җm��1|HF���p�m��2IF�����m��3�IF����m��48JF����m�t6�JF���n�m��7tKF�����m�8tLF���X�m��257<MF���l�m��258�MF�����m��520�NF�����m�I259OF�����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!
DATA+Any routines on this vector should :
#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=>OS_FSControl> 33 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
=>	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_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 caused 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$�gF���Sk`��!Root�jE���.�[1�kE������x3`mF�����h��9oF�����i�\10xqF���F�i��11tF���j�|12�vF���Cp_�Z5�yF���,x`�8DATA�OS_GBPB  (&0C)
#Parent OS_
This SWI Read/Writes a block from/to an open file

R0	Action
#Line
1	<Write bytes to given ptr=>OS_GBPB1>
2	<Write bytes to current ptr=>OS_GBPB1>
3	<Read bytes from given ptr=>OS_GBPB3>
4	<Read bytes from current ptr=>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>
DATA[OS_GBPB 1 and 2
=>	R0 = 1 or 2
	R1 = file handle
	R2 = buffer
	R3 = bytes to write
If R0 = 1 :
	R4 = file pointer

\<=	R2 = ptr to after buffer
	R3 = 0, or nr of bytes NOT transferred
	R4 = new filepointer
	C is clear

The 'EOF-error-on-next-read' flag is cleared.

Error is generated if invalid file handle, directory, or no write access.DATAxOS_GBPB 3 and 4
=>	R0 = 3 or 4
	R1 = file handle
	R2 = ptr to buffer
	R3 = bytes to read
If R0 = 3 :
	R4 = file pointer

\<=	R2 = ptr to after buffer
	R3 = nr of bytes NOT transferred
	R4 = new filepointer
	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.DATA�OS_GBPB  9
=>	R0 =	9
	R1 =	directory
	R2 =	buffer
	R3 =	no of objects to read
	R4 =	where to start (0 first time)
	R5 =	length of buffer
	R6 =	wildcarded name to match (if 0 or empty string, "*" is used)
\<=	R3 =	no of objects read
	R4 =	where to continue (-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 string in the buffer.
DATA\OS_GBPB  10
=>	R0 =	10
	R1 =	directory
	R2 =	<buffer=>.buffer>
	R3 =	no of objects to read
	R4 =	where to start (0 first time)
	R5 =	length of buffer
	R6 =	wildcarded name to match (if 0 or empty string, "*" is used)
\<=	R3 =	no of objects read
	R4 =	where to continue (-1 for no more)
	C flag is clear if R3 = 0, else it is set

This SWI reads entries from the specified directory.
#subpage buffer
OS_GBPB 10 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	name (0-terminated)
DATA�OS_GBPB  11
=>	R0 =	11
	R1 =	directory
	R2 =	<buffer=>.buffer>
	R3 =	no of objects to read
	R4 =	where to start (0 first time)
	R5 =	length of buffer
	R6 =	wildcarded name to match (if 0 or empty string, "*" is used)
\<=	R3 =	no of objects read
	R4 =	where to continue (-1 for no more)
	C flag is clear if R3 = 0, else it is set

This SWI reads entries from the specified directory.
#subpage buffer
OS_GBPB 11 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	Internal name
24	Time/Date (0 if not stamped)
28	name (0-terminated)
DATA|OS_GBPB  12
=>	R0 =	12
	R1 =	directory
	R2 =	<buffer=>.buffer>
	R3 =	no of objects to read
	R4 =	where to start (0 first time)
	R5 =	length of buffer
	R6 =	wildcarded name to match (if 0 or empty string, "*" is used)
\<=	R3 =	no of objects read
	R4 =	where to continue (-1 for no more)
	C flag is clear if R3 = 0, else it is set

This SWI reads entries from the specified directory.
#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)
DATAZOS_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
#Inent

The names are meant 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.
DIR$LLL~F����3j��!Root�~F���Fd]�IndexDATA�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.DATAPlot commands
#Align Centre
#f1:Plot Commands :

#Align
#TAB Align Right, Align Left, Align Right, Align Left
0	Solid line incl end pts		8	excl end pt
16	Dotted line incl end pts	24	excl end pt
32	Solid line excl first pt	40	excl both end pts
48	Dotted line excl first pt,	56	excl both end pts
	pattern continued
	 				 	Horizontal linefill:
64	Point plot			72	  (left&right) to non backgr
80	Triangle fill			88	  (to right) to backgr
96	Rectangle fill			104	  (left&right) to foregr
112	Parallellogram fill		120	  (to right) to non foregr
128	Flood to non-background		136	Flood to foreground
144	Circle outline			152	Circle fill
160	Circular arc			168	Segment
176	Sector				184	Block copy/move
192	Ellipse outline			200	Ellipse fill
208	Font printing (don't use)	232	Sprite Plot

#Align Centre
#f1:Modifiers :
#Align

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

DIR$����C���?�Ő0,�F���]��+1X�E���ޛ��Init8�F�����MRead@�E���m��_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
\<nr>	CTRL(nr)
\<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

\<=	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 = String, terminated by 10,13,0
	R1 = dest. buffer
	R2 = buffer size + <flags=>os_gs0>

\<=	R0 = Ptr to terminator+1
	R2 = Chars 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���!RootԋF���
�9HpSortD�E������sort0ЍF����QJsort1�F�����6H�sort2��F���5����0h�F������G�1�F���[����2đF���\��G�3d�F���z�G�4H�F���Z�]�%5p�F����ǻ��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.DATApOS_HeapSort  (&4F)
#Parent OS_
=>	R0 = no of elements
	R1 = ptr to word-array + <flags=>os_heapsort0>
	R2 = <type=>os_heapsort1> or <comparison routine=>os_heapsort2>
optional :
	R3 = workspace ptr
	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 pointersDATAStandard sort routines
R1 is array of :
 0 cardinal
 1 integer
 2 ptr to cardinal
 3 ptr to integer
 4 ptr to chars (case insensitive)
 5 ptr 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
=>	R0,R1	=	objects from R1 array
	R12	=	workspace ptr 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
	R3 = total free

This SWI reads the current status of a heap block.DATA�OS_Heap 2
#Parent OS_Heap
#Wrap off
=>	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 = new block pointer

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$dd��F���jb�DynamicArea��F���[�ALine�E���cQ��MemMapInfo�G�����
�ModeVariable��F����;hMonotonicTime��E����C��PointȡG���	z
!Unsigned�F�����4V�VarVal��G����
mSysInfo�G����
XArgsh�F����e��VduVariablesH�F���b�(�MemMapEntriesX�F����+�RAMFsLimits\�F�����d�cC��F���+�d�DefaultHandler̿F��� p���escapestate��F����Se�GPaletteDATAOS_ReadDynamicArea  (&5C)
#Parent OS_
=>	R0 =	<Area=>OS_Areas> to read, bit 7 set to read maximum size to R2

\<=	R0 =	start address of area (NOT corrupt as previously stated)
	R1 =	current number of bytes in area
	R2 =	maximum size of area
	
This SWI reads the size of an area.DATAAOS_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
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.DATA�OS_ReadModeVariable  (&35)
#Parent OS_
=>	R0 = screen mode (-1 for current)
	R1 = <variable number=>.variable>

\<=	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>.
#
#Subpage variable
Variable numbers
Nr	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
1	ScrRCol		Number of textcolumns -1
2	ScrBRow		Number of textrows -1
3	NColour		Max logical colour (1,3,15 or 63)
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 pr pixel = 1 \<\< Log2BPP
10	Log2BPC		Bytes pr char = 1 \<\< Log2BPC
11	XWindLimit	Number of x pixels on screen -1
12	YWindLimit	Number of y pixels on screen -1DATAhOS_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 = Flag

This SWI returns the colour and tint of a point. If point was off screen then R4 = -1, else R4 = 0DATA!OS_ReadUnsigned  (&21)
#Parent OS_
=>	R0 = Base (2-36 Default 10) + <flags=>.flags>
	R1 = String to convert
	(R2 = Max value)

\<=	R1 = ptr to terminator char
	R2 = value

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
Flagsbits 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 =	Ptr to (wildcarded) name
	R1 =	Ptr to buffer
	R2 =	Len of buffer
	R3 =	Name ptr (0 for 1st call)
	R4 =	<Variable type=>OS_vartypes>
	
\<=	R2 =	Bytes read
	R3 =	New name ptr
	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.DATAmOS_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
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
DATAXOS_ReadArgs  (&49)
#Parent OS_
=>	R0 = <syntax string=>.syntax>
	R1 = <input string=>.input>
	R2 = <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 =	ptr to input block
	R1 =	ptr 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.
#
#Subpage variables
VDU Variables
#wrap off
Nr	Name		Meaning
#Line
128	GWLCol		Graphics Window	Lefthand Column		(ic)
129	GWBRow		 		Bottom Row		(ic)
130	GWRCol		 		Righthand Column	(ic)
131	GWTRow		 		Top Row			(ic)

132	TWLCol		Text Window	Lefthand Column
133	TWBRow	 	 		Bottom Row
134	TWRCol	 	 		Righthand Column
135	TWTRow	 	 		Top Row

136	OrgX		x coord of graphics Origin	 	(ec)
137	OrgY		y coord of graphics Origin	 	(ec)

138	GCsX		Graphics Cursor X coord		 	(ec)
139	GCsY		Graphics Cursor Y coord		 	(ec)
140	OlderCsX	Oldest gr. Cursor X coord	 	(ic)
141	OlderCsY	Oldest gr. Cursor Y coord	 	(ic)
142	OldCsX		Previous gr. Cursor X coord	 	(ic)
143	OldCsY		Previous gr. Cursor Y coord	 	(ic)
144	GCsIX		Graphics Cursor X coord		 	(ic)
145	GCsIY		Graphics Cursor Y coord		 	(ic)
146	NewPtX		New point X coord		 	(ic)
147	NewPtY		New point Y coord		 	(ic)

148	ScreenStart	As used by VDU drivers
149	DisplayStart	As used by display hardware
150	TotalScreenSize	Memory allocated to screen

151	GPLFMD		GCOL action for foreground col
152	GPLBMD		GCOL action for background col
153	GFCOL		Graphics foreground col
154	GBCOL		Graphics background col
155	TForeCol	Text foreground col
156	TBackCol	Text background col
157	GFTint		Graphics foreground tint
158	GBTint		Graphics background tint
159	TFTint		Text foreground tint
160	TBTint		Text background tint

161	MaxMode		Highest (standard) mode available

162	GCharSizeX	X size of VDU5 chars (pixels)
163	GCharSizeY	Y size of VDU5 chars (pixels)
164	GCharSpaceX	X spacing of VDU5 chars (pixels)
165	GCharSpaceY	Y spacing of VDU5 chars (pixels)

166	HLineAddr	Addr of hor line-draw routine

167	TCharSizeX	X size of VDU4 chars (pixels)
168	TCharSizeY	Y size of VDU4 chars (pixels)
169	TCharSpaceX	X spacing of VDU4 chars (pixels)
170	TCharSpaceY	Y spacing of VDU4 chars (pixels)

171	GcolOraEorAddr	Addr of col blocks for current GCOLs

256	WindowWidth	Width of text window in chars
257	WindowHeight	Height of text window in charsDATAOS_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.DATAcOS_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, ie. you will only get the control back, when for example a key is pressed.

If cursor editing is enabled, the cursor keys will start this.
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.DATA�OS_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 or cleared using OS_Byte 124.

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 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.
DATAGOS_ReadPalette  (&2F)
=>	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:

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:

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
DIR$hhp�E���-z�!Root��E�����0��E������1��E������+10��F����qLS�14��E���"��B14,1��E������2��E���t��\22 �E�����^9��F����l�#index��F�����k��11��F���a��
12DATA�OS_Word  (&07)
#Parent OS_
=>	R0 = <reason code=>os_wordindex>
	R1 = parameter block

Action taken depends on reason code in R0DATA�OS_Word 0
=>	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
=>	R0 = 1
	R1 = 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.DATA+OS_Word 10
=>	R0 = 10
	R1 = 9 byte block :
	  0 character code
\<=	Buffer at R1 contains:
	  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
=>	R0 = 14
	R1 = parameter block
	R1+0 = reason code :
	  0 :	Read soft-copy of CMOS clock as string
	  1 :	<Read CMOS clock as BCD=>OS_Word14,1>
	  2 :	Convert BCD to string
	  3 :	Read soft-copy of CMOS clock as 5-byte integer
DATABOS_Word 14,1
=>	R0 = 14
	R1 = ptr to 7-byte block:
	R1+0 = 1

\<= Block contains:
	R1+0 = year		(0-99)
	R1+1 = month		(1-12)
	R1+2 = day of month	(1-31)
	R1+3 = day of week	(1-7, 1=Sunday)
	R1+4 = hour		(0-23)
	R1+5 = minute		(0-59)
	R1+6 = second		(0-59)

This OS_Word reads the time directly from the CMOS clock.DATA�OS_Word 2
=>	R0 =	1
	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.DATA\OS_Word 22
=>	R0 = 22
	R1 = 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 hardwareDATA^OS_Word 9
=>	R0 = 9
	R1 = 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>DATA#OS_Word index
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
4	&04	Write interval timer
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
14	&0E	<Read CMOS clock=>os_word14>
15	&0F	Write CMOS clock
21	&15	Define pointer and mouse parameters
22	&16	<Write screen base address=>os_word22>DATA�OS_Word 11
=>	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>.DATA
OS_Word 12
=>	R0 =	12
	R1 =	buffer:
	 	 0 logical colour to change
	 	 1 new physical colour
	 	 2 red component
	 	 3 green component
	 	 4 blue component

This is nearly equal to <VDU 19=>VDU:19>, but however it's faster and may be used in interrupt routines.DIR$��H�E����w��0$�E���q�I��E���`��|C �E����n�N��E����j��SDATA�OS_Write0  (&02)
#Parent OS_
=>	R0 = ptr to null-terminated string
\<=	R0 = ptr to terminating \\0

This SWI sends the string pointed to by R0 to all active output streams.
It uses <OS_WriteC> to write each char.DATAOS_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.DATA�OS_WriteN  (&46)
#Parent OS_
=>	R0 = pointer to string
	R1 = nr of bytes to write

This SWI sends the R1 bytes in R0 to all active output streams.DATA�OS_WriteS  (&01)
#Parent OS_
This SWI writes the null terminated string following this SWI in memory. It uses the value in R14 to find the string, and updates R14 to point after string.
This SWI cannot be conditionally executed..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	Inaccessable 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.DATA<OS_CallAfter  (&3B)
#Parent OS_
=>	R0 = delay in cs
	R1 = address to call
	R2 = value of R12 to be called with

\<=	R0 = preserved
	R1 = 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 = 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>.
DATASOS_CallEvery  (&3C)
#Parent OS_
=>	R0 = time to call in cs
	R1 = address to call
	R2 = value of R12 to be called with

\<=	R0 = preserved
	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$hh�F���_���!Root��G����Y
�0��F���t�Handler��F����Q&�=Handler0��F���+y���handler1X�F���-n&�kHandler2�F�����&��Handler3��F�����h��1��F�����hĘ2�F����
i�v3�F���Ai��4DATA�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_
=>	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=>.flags>
	R5 =	maximum size of area, in bytes (-1 for unlimited)
	R6 =	<handler routine=>OS_DynamicAreaHandler>
	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.
#Subpage flags
Dynamic 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)
DATA�Dynamic area handler code
=>	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
=>	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
=>	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. 
DATAkDynamic area PreShrink
=>	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.
DATA�Dynamic area PreShrink
=>	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_
=>	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_
=>	R0 =	2
	R1 =	area number
	
\<=	R0, R1 preserved
	R2 =	current size of area, in bytes
	R3 =	base logical address of area
	R4 =	area flags
	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).
DATAvOS_DynamicArea 3  (&66)
#Parent OS_
=>	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_
=>	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.
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.
DATAvOS_BreakPt (&17)
#Parent OS_
When this is executed, all user mode registers are saved into a block and the BreakPoint handler 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.
DATA�OS_CallAVector  (&34)
=>	R0-R8 =	vector routine parameters
	R9 =	<vector number=>os_vectors>
	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 or CnpV. Don't use this to call ByteV or so, 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.DATA�OS_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.
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 it's 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 recieves 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
� 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 'MOV PC,R14'
#Indet
You should take care of:
� a very high execution speed
� if your routine takes more than 100�s, you should re-enable interrupts, if previously disabled, to ensure eg. disc ops
� saveing R14_svc to a stack before calling SWIs and reloading it after it returns to prevent double using of R14_svc
� strictly avoiding the use of non re-entrant SWI, this is because the supervisor stack would become corrupted if used
� clearing the interrupt flags when finishing
� the SWI-error handling. You MUST use XSWIs. But there is no one to give the error through, so you must either handle this 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.
DATAzSystem Devices
All machines after the A3000 have these system device numbers:
Number	Device
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 recieve register full
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:
#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.
DATAEOS_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 they were activated, they would jump into whatever happened to be at this location in the new application running in that space.

The buffer is used to store details of the vectors used, so they can be restored afterwards. 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 match into it, are placed to the second one. When relinking you must pass all buffers returned 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.
DATA:OS_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

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)
DATAlOS_NewLine  (&03)
This sends a line feed followed by a carriage return to all active output streams.DATA�	OS_PrettyPrint
#Parent OS_
Write an indirected string with some formatting to all of the active output streams.

=>	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 varible. 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 "
DATAOS_PrintChar  (&5D)
#Parent OS_
=>	R0 =	character to print
<=	R0 preserved

This call sends a character to the printer. OS_Byte 3 and 5 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>.DATA"OS_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 provides this.DATA�OS_RestoreCursors  (&37)
#Parent OS_
This restores the cursor state previously saved on the internal stack using <OS_RemoveCursors>.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 flag 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	7200DATA�OS_SetCallBack  (&1B)
This sets the callback flag and so causes entry to the callback handler 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. Further infos in <OS_AddCallBack>.
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. It's 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�OS_WriteEnv  (&48)
<=	R0 =	pointer to environment string
	R1 =	pointer to start time

Sets the program environment command string and start time read by using <OS_GetEnv>.DATA�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 recieve baud rate=>OS_SerialOp5>
	<6 Read/write transmit baud rate=>OS_SerialOp6>
DATAOS_ClaimProcessorVector  (&69) (3.5)
#Parent OS_
=>	R0 =	Vector number
	 	 	0 - Branch through zero
	 	 	1 - Undefined instruction
	 	 	2 - SWI executed
	 	 	3 - Prefetch abort
	 	 	4 - Data abort
	 	 	6 - IRQ
	 	Bit 8 - set to claim, unset to release
	R1 =	(If claim) - Address to call
	R2 =	(If release) - Address used when the vector was claimed.
	 	(If claim) - Previous address used.
#line
*Use*:	This call is used to allow low-level code to claim the ARM's hardware vectors which are called when interrupts and aborts occur.DATA�OS_Reset  (&6A) (3.5)
#Parent OS_
=>	�
<=	�
#line
This SWI does the equivalent of pressing the Reset button. Use with {*}extreme{*} caution.DATA-OS_ScreenMode (&65) (3.5)
=>	R0 =	0 - Set
	 	1 - Read
	R1 =	(If R0=0) - Old style mode number or <a mode specifier block=>Wimp_ModeSelect>
\<=	R1 =	(If R0=1) - Mode number or pointer to a mode specifier block.
*Use*:	This call is used to change or read the screen mode.
See also <Wimp_SetMode>DIR$���eF�����b�E!Root@fF����c�OpTgF����c��Op1hF���xc��Op0�iF���L�c��Op2DATAEParallel
#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
=>	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
=>	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
=>	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
DIR$tt�kF������!Root�mF���.�!�gPageSize�nF����я!SelectJobDATA�PDriver
#Parent !Root
#Prefix PDriver_
#Table 15 20
 AbortJob
 CancelJob
 CancelJobWithError
 CheckFeatures
 CurrentJob
+DeclareDriver
+DeclareFont
 DrawPage
 EndJob
+EnumerateDrivers
 EnumerateJobs
 FontSWI
 GetRectangle
 GiveRectangle
 Info
 InsertIllustration
+MiscOp
+MiscOpForDriver
 <PageSize>
+RemoveDriver
 Reset
 ScreenDump
+SelectDriver
 SelectIllustration
 <SelectJob>
+SetDriver
 SetInfo
 SetPageSize
 SetPrinter
#EndTableDATAgPDriver_PageSize  (&80142)
\<=	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 millipointsDATAPDriver_SelectJob  (&80145)
=>	R0 =	File handle, or 0 to cancel current job
	R1 =	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.DIR$,,pF�����s!RootDATAsPDumper
#Parent !Root
Claim
CopyFilename
Find
Free
Info
LookupError
PrepareStrip
SetColour
StartJob
TidyJobDIR$,,�pF������!RootDATA�Podule
#Parent !Root
CallLoader
EnumerateChunks
EnumerateChunksWithIn
HardwareAddress
HardwareAddresses
RawRead
RawWrite
ReadBytes
ReadChunk
ReadHeader
ReadID
ReturnNumber
WriteBytesDIR$,,�qF�����Q!RootDATAQPrintDbox
#Parent !Root
#Prefix PrintDbox_
ClassSWI
PostFilter
PreFilter
DIR$,,$rF������O!RootDATAOProgInfo
#Parent !Root
#Prefix ProgInfo_
ClassSWI
PostFilter
PreFilter
DIR$,,�rF�����G!RootDATAGRamFS
#Parent !Root
DescribeDisc
DiscOp
Drive
FreeSpace
NOP
NOPDIR$,,sF�����>!RootDATA>ResourceFS
#Parent !Root
DeregisterFiles
RegisterFilesDIR$,,�sF���qL��!RootDATA�ROMCache
#Parent !Root
#Prefix ROMCache_
#Table Columns 2
Cache
Link
Load
Swap
Uncache
Save
SetState
Allocate
#EndTable
DIR$,,,tF���j��K!RootDATAKSaveAs
#Parent !Root
#Prefix SaveAs_
ClassSWI
PostFilter
PreFilter
DIR$,,�tF�����I!RootDATAIScale
#Parent !Root
#Prefix Scale_
ClassSWI
PostFilter
PreFilter
DIR$LL<uG����*
D!Root�uG���37
�ControlDATADScreenBlanker
#Parent !Root
#Prefix ScreenBlanker_
<Control>DATA�ScreenBlanker_Control  (&43100)
=>	R0 =	0

Blanks screen immediately.
There are probably other flags, but I (ICT) don�t know them.DIR$,,8vF�����y!RootDATAySCSI
#Parent !Root
Command
DescribeDisc
DiscOp
Drives
EEProm
FreeSpace
Hardware
Reset
Status
TestMounted
UserCodeDIR$,,�vF�����g�P!RootDATAPSharedCLibrary
#Parent !Root
LibInitAPCS_A
LibInitAPCS_R
LibInitModule  DIR$,,\wF�����*!RootDATA*Shell
#Parent !Root
Create
DestroyDIR$PP�xF�����F!Root zF���6BmH�AttachNamedVoice{E�����AttachVoice�|E�������Configure�E������<EnableЀF���HmH�InstallVoice��F����amH�RemoveVoice��E���i��SoundLog��F�����tO:VolumeDATAFSound
#Parent !Root
#Prefix Sound_
#Table 13 18
<AttachNamedVoice>
<AttachVoice>
<Configure>
Control
ControlPacked
<Enable>
<InstallVoice>
LogScale
Pitch
QBeat
QFree
QInit
QInterface
QRemove
QShedule
QSDispatch
QTempo
ReadControlBlock
<RemoveVoice>
<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.DATA�Sound_Configure  (&40140)
#Parent Sound_
=>	R0 = number of channels; rounded to 1,2,4 or 8
	R1 = DMA buffer size, in bytes for one channel
	R2 = sample period in �s (overall)
	R3 = pointer to Channel Handler (0 to preserve)
	R4 = pointer to 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:
	  0 for OFF
	  1 for closedown imminent
	  2 for closedown in progress
	  3 for active ON

This SWI is used to enable or disable all Sound interrupts and DMA activity.DATA�Sound_InstallVoice  (&40183)
#Parent Sound_
=>	R0 =	pointer to Voice Generator (0 to read)
	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.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!).DATA:Sound_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.DIR$,,�F����C��!RootDATA�Spch
#Parent !Root
#Prefix Spch_
#Table Columns 2
Ready?
Oldchannel
Error
Say
SayW
Speak
SpeakW
Pitch
Speed
Mouth
Tongue
GetDictionary
Reset
Level
#EndTable
DIR$,,�F����K�e!RootDATAeSpell
#Parent !Root
#Prefix Spell_
#Table Columns 2
Typo
Anagram
Fuzzy
CheckWord
AddWord
GetWord
GetNextWord
EnumWord
CreateUser
LoadUser
SaveUser
UserToFile
FileToUser
GetDictionaryName
RemoveDictionary
DeleteWord
ResetIgnore
AddToIgnore
BrowseWindow
SpellOp
FindWord
ImpressionInfo
ImpressionQuickCheck
FileToFile
SaveDictionaryWithPath
#EndTable
DIR$,,t�F�����0!RootDATA0Squash
#Parent !Root
Compress
DecompressDIR$,,ЉF����F��!RootDATA�StreamSquash
#Parent !Root
#Prefix StreamSquash_
#Table Columns 2
Initialise
InfoCompress
OpenCompress
CompressBlock
CloseCompress
InfoDecompress
OpenDecompress
DecompressBlock
CloseDecompress
Exit
#EndTable
DIR$��D�F���1V� �!Root�F����5� #Enable8�F����Ѹ �Disable�F���6� SKillT�F����1� eUnKill��F���T�� �Intercept��F����
� �NoInterceptD�F����&� tShowCodes��F����6� �NoCodesD�F����E� mReset��F���>K� �FlushText4�F�����MGDirectDATA�Stream
#Parent !Root
#Prefix Stream_
#Table Columns 2
<Enable>
<Disable>
<Kill>
<UnKill>
<Intercept>
<NoIntercept>
<ShowCodes>
<NoCodes>
<Reset>
<FlushText>
<WriteC=>Stream_direct>
<WriteS=>Stream_direct>
<Write0=>Stream_direct>
<WriteN=>Stream_direct>
<NewLine=>Stream_direct>
<WriteT32=>Stream_direct>
<WriteT24=>Stream_direct>
<WriteT16=>Stream_direct>
<WriteT8=>Stream_direct>
<WriteH32=>Stream_direct>
<WriteH24=>Stream_direct>
<WriteH16=>Stream_direct>
<WriteH8=>Stream_direct>
<WriteD32=>Stream_direct>
<WriteD24=>Stream_direct>
<WriteD16=>Stream_direct>
<WriteD8=>Stream_direct>
<WriteB32=>Stream_direct>
<WriteB24=>Stream_direct>
<WriteB16=>Stream_direct>
<WriteB8=>Stream_direct>
WriteRegs
#EndTable
DATA#Stream_Enable (&81940)
#Parent Stream_
No parameters

VDUStream will claim the Write character vector and sit around waiting for characters to be printed. These are stacked in the modules temporary RMA space until the main application is called via <Wimp_Poll>. Characters found to have been written to the RMA buffer are squirted into VDUStreams resizable application memory during null events.

This call can be stacked to any level, but the stream will not be released until n <Stream_Disable>s have been called, or one <Stream_Reset>.
DATA�Stream_Disable (&81941)
#Parent Stream_
No parameters

This swi decrements the claim count and releases WrchV if it is zero. Subsequent text will appear as normal if the stream is released.
DATASStream_Kill (&81942)
#Parent Stream_
No parameters

Stream_Kill will set a flag internally to prevent <Stream_Enable> from being handled in the usual way. All calls to Stream_Enable will be ignored. This allows one piece of code which calls another routine or routines to prevent debugging being generated from the called routines.DATAeStream_UnKill (&81943)
#Parent Stream_
No parameters

Allows access to <Stream_Enable> again.DATA�Stream_Intercept (&81944)
#Parent Stream_
No parameters

All printable characters will be intercepted by VDUstream when the stream is enabled rather than being passed on to the default handler.DATA�Stream_NoIntercept (&81945)
#Parent Stream_
No parameters

Passes character codes on to the next interrupt handler on the WrchV as
normal. Reverses effect of <Stream_Intercept>.DATAtStream_ShowCodes (&81946)
#Parent Stream_
No parameters

Show control codes as [##] values when intercepted.DATA�Stream_NoCodes (&81947)
#Parent Stream_
No parameters

Ignore all control codes received. Reverses the effect of <Stream_ShowCodes>.DATAmStream_Reset (&81948)
#Parent Stream_
No parameters

Throws away all stacked calls to <Stream_Enable> and releases the WrchV. This should be used incase of emmergency. (ie when a client application has crashed and not called <Stream_Disable>. You will notice this by error boxes with no text in them appearing along with the desktop rendering sprites only)
DATA�Stream_FlushText (&81949)
#Parent Stream_
No parameters

Throws away the current text in the application space and RMA.
DATAGDirect stream drivers
#Parent Stream_
VduStream 1.09 onwards provides direct stream access so that applications can send text to the stream when the operating system <OS_WriteC> is being intercepted by someone else earlier in the chain. eg during printing.

The following direct swis are provided:
#Indent 1
Stream_WriteC	: Write R0 charater to the stream
Stream_Write0	: Write null terminated string. R0=ptr
Stream_WriteS	: Write in line string.
Stream_WriteN	: Write counted string. R0=ptr, R1=number
Stream_NewLine	: Write newline

Stream_WriteTxx	: Write r0 as characters. "." replaces non-alphanumeric
Stream_WriteHxx	: Write hex conversion of R0
Stream_WriteDxx	: Write decimal conversion of R0
Stream_WriteBxx	: Write binary conversion of R0

#Indent
Where xx is 32, 24, 16, or 8 depending on the number of bits to display.
DIR$,,��F�����-!RootDATA-Super
#Parent !Root
Sample45
Sample90DIR$TT,�F���|�Herrorblockt�F���w��YdateformatDATAHSWI 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 (long list)
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 EconetDATAYDate 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)
DIR$��t�F����ah�q!Root�G�����{6EnumerateTasks �F���"|OTaskNameFromHandle8�F����Xh�]shutdownDATAqTaskManager
#Parent !Root; Prefix TaskManager_; Wrap off
<EnumerateTasks>
<Shutdown>
<TaskNameFromHandle>DATA6TaskManager_EnumerateTasks  (&42681)
#Parent TaskManager_
=>	R0 = 0 for first call
	R1 = buffer
	R2 = size of buffer

<=	R0 = value to use for next call, or \< 0 for no more
	R1 = 1st byte not used
	R2 = bytes not used

This SWI returns information about the running tasks. (Same list as TaskManager displays.) For each task a 4 word block is returned :

#Tab
0	Task handle
4	Task name
8	Slot size
12	<Flags=>.flags>
#Subpage flags
Task flags
Bit	Meaning if set
#Line
0	module task (otherwise application task)
1	slot bar can be dragged (otherwise it can't)
DATATaskManager_TaskNameFromHandle  (&42680)
#Parent TaskManager_
=>	R0 = Taskhandle
\<=	R0 = Pointer to Taskname

This SWI gives returns the description string which the task used when it called <Wimp_Initialise>. This is also the string shown in the list-of-tasks window.DATA]TaskManager_Shutdown
#Parent TaskManager_
=>	R0 =	<Shutdown flags=>.flags>

This call initialises a desktop shutdown. The actions preformed are controlled by the shutdown flags.
#Subpage flags
TaskManager_Shutdown types
Bit	Meaning when set
#Line
0	don't display restart dialogue
1	don't broadcast message_PreQuit
2	flag in <CMOS=>OS_ByteCMOS> as portable PowerDown
3	send a Message_Shutdown
4	reject OS_Upcall 1 and 2
5-31	must be zero

If the bit 2 is set, in CMOS is stored that the last shutdown happened because the CMOS battery was down, at next Desktop start a message telling that appears.DIR$,,ĦF���@��[!RootDATA[TaskWindow
#Parent !Root
TaskInfo

Message calls :
#Indent 3
#Table 4 24
<808C0 TW_Input=>wimp_um808c0>
<808C1 TW_Output =>wimp_um808c1>
<808C2 TW_Ego=>wimp_um808c2>
<808C3 TW_Morio=>wimp_um808c3>
<808C4 TW_Morite =>wimp_um808c4>
<808C5 TW_NewTask=>wimp_um808c5>
<808C6 TW_Suspend=>wimp_um808c6>
<808C7 TW_Resume =>wimp_um808c7>
#EndTable
DIR$��ԩF���WG��!Roott�F�����V�{Number�F���'Y��Register��F����Y��Deregister@�F�����X��NumberToName�F����W��ExistsЯF���+ X�pConvertTimeToUTCOrdinals@�F����TX��AlphabetNumberToName �F����Y��SelectAlphabet̲F���O�X��SetTimeT�F���٥X��ReadCurrentTimeZoneDATA�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
#EndTableDATA{Territory_Number  (&43040)
#Parent Territory_
<=	R0 = Current territory number

Reads the current territory number.DATA�Territory_Register  (&43041)
#Parent Territory_
=>	R0 =	territory number
	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

Removes a territory from the list of active territories.
DATA�Territory_NumberToName  (&43043)
#Parent Territory_
=>	R0 = territory number
	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
<=	Z flag set if the territory is loaded (ie is EQ)

Checks to see if the given territory is present.
DATApTerritory_ConvertTimeToUTCOrdinals  (&43049)
#Parent Territory_
=>	R1 = pointer to 5 byte time block
	R2 = pointer to buffer to hold <result=>.usable>
	
Returns the time block as a set of useful numbers.
#Subpage usable
Usable time block
Byte	Contents
#Line
0	centisecond
4	second
8	minute
C	hour
10	day within month
14	month in year
18	year
28	day of the weekDATA�Territory_AlphabetNumberToName  (&43045)
#Parent Territory_
=>	R0 = alphabet number
	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, 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.DIR$,,`�F���-��@!RootDATA@TinySupport
#Parent !Root
#Prefix TinySupport_
Init
Die
DIR$,,̴F���6��!RootDATA�Toolbox
#Parent !Root
#Prefix Toolbox_
#Table Columns 2
CreateObject
DeleteObject
CopyObject
ShowObject
HideObject
GetObjectInfo
ObjectMiscOp
SetClientHandle
GetClientHandle
GetObjectClass
GetParent
GetAncestor
GetTemplateName
RaiseToolboxEvent
GetSysInfo
Initialise
LoadResources
TemplateLookUp
GetInternalHandle
RegisterPostFilter
RegisterPreFilter
RegisterObjectModule
#EndTable
DIR$���F������!Root��F����،�
VersionмF���C����Load��F���=���memoryload@�F����⌥�Play��F���^댥�Stop��F���<_Pause �F���6Ō��Stereo��F����ˌ��SetPos��F���kԌ��ReadPos�F�������PlayNote��F�����ETuneInfo�F������<SoundInfoX�F�������ReadSampleTable�F����ō�cWriteSampleTableh�F���L]��Lock��F���8R��LUnlock��F���"q���MuteChannelT�F���΁��/RestoreChannel��F������Speed��F������Volume��F���Mٍ�DTranslateVolume��F����BUpdateData(�F�������NoteTable �F�������commands�F����G��Errors�F���?�SoundBlockDATA�Tracker
#Parent !Root
#Prefix Tracker_
#Table Columns 2
<Version>
<Load>
<MemoryLoad>
<Play>
<Stop>
<Pause>
<Stereo>
<SetPos>
<ReadPos>
<PlayNote>
<TuneInfo>
<SoundInfo>
<ReadSampleTable>
<Lock>
<Unlock>
<MuteChannel>
<RestoreChannel>
<Speed>
<Volume>
<WriteSampleTable>
<TranslateVolume>
<UpdateData>
#EndTable

Other information :
#Indent 3
<Note translation table=>Tracker_NoteTable>
<Tracker commands=>Tracker_Commands>
<Errors>DATA
Tracker_Version  (&43200)
#Parent Tracker_
=>	R0 =	version number*100  (ie. for v1.23 = 123)

Use this call to ensure that the TrackerModule installed is a recent enough version to support the SWI's you wish to use. Versions 4.00 onwards incorporate the SWI's.
DATA�Tracker_Load  (&43201)
#Parent Tracker_
=>	R0 =	pointer to filename of soundtracker/tracker module
\<=	R0 preserved

This call will claim memory from the RMA and load the specified tune module, initialise the sound system, and set the playroutine in pause mode. You must then use <Tracker_Play> to start the tune playing. The command *PlayMod calls this routine, and then <Tracker_Play>.

An error will be generated if the module cannot be loaded or not enough memory can be claimed.
DATA�Tracker_MemoryLoad  (&43202)
#Parent Tracker_
=>	R0 =	pointer to first word of soundtracker/tracker module in memory (NB must be word-aligned)
	R1 =	length of module in bytes
\<=	R0 and R1 preserved

This call can be used by a non-multitasking application to specify an area of memory as a tune module, and thereby remove the need for a seperate file to hold a tune, and there is no need to claim a large amount of RMA space. Once this SWI is called, the module will be treated as if it was loaded in the module's own workspace.
When a soundtracker module is loaded, the pattern data is converted to Tracker format data (except for volumes which remain 0-64), so  for the purposes of editing, as long as <Tracker_ReadPos>/<Tracker_WriteSampleTable> are used, the module can be considered as a Tracker module. When <Tracker_Stop>/*PlayStop is called, the data is converted back.

Important: You must tell the TrackerModule to forget the module if the memory will be overwritten, otherwise the module may crash. (*PlayStop or <Tracker_Stop>)

NB: This call will not work for programs running under the desktop if the module is loaded in user memory.DATA�Tracker_Play  (&43203)
#Parent Tracker_
This call will restart a tune after it has been paused or loaded with the <Tracker_Load> or <Tracker_MemoryLoad> SWI.
DATA�Tracker_Stop  (&43204)
#Parent Tracker_
This performs the same actions as *PlayStop. Using *PlayStop or this SWI is the only way to get the trackermodule to release the memory taken up by the tune module, or to force it to forget the address of a module if it has been loaded with <Tracker_MemoryLoad>. If the module is soundtracker and has been loaded with <Tracker_MemoryLoad>, calling this SWI or *PlayStop will convert the data back to the original format.
DATA_Tracker_Pause  (&43205)
#Parent Tracker_
This performs the same actions as *PlayPause.
DATA�Tracker_Stereo  (&43206)
#Parent Tracker_
=>	R0 = Stereo setting (0-4) or -1 to read current setting

\<=	If R0>=0 on entry:
	  R0 preserved
	If R0=-1 on entry:
	  R0 = current PlayStereo setting
	  R1 = pointer to 8-byte stereo position table

This performs the same actions as *PlayStereo, with R0 passed as a parameter. If R0 is set to 4 on entry, then the stereo settings will be unaltered whenever a module is loaded or killed, and disables any stereo commands in tracker modules. This is to allow interfacing programs to provide their own stereo options, or to allow adjustment to the stereo positions while tracker tunes are playing (which have default stereo settings stored as part of the tune).

Alternatively, if R0=-1 on entry, R0 will be the last parameter passed to this SWI or the *PlayStereo command, and R1 points to an 8-byte table (one byte per channel) which is updated every time either a tune starts; this SWI or *PlayStereo is called with a parameter of 0-3; or if a stereo command is executed in a Tracker tune. The byte will be in the range of 1-7 (where 1 is full left, 7 is full right, and 4 is centre). Some Tracker tunes may contain stereo settings out of range.
DATA�Tracker_SetPos  (&43207)
#Parent Tracker_
=>	R0 = New sequence position (0-127 max)
	R1 = Event (0-63 max)
\<=	R0 preserved

This performs the same actions as *PlayPos, except that the event with the pattern can be specified (0-63 normally). If an event number higher than the number of events in the current pattern is specified, the pattern will begin at event 0.

If there is no tune currently loaded, an error is generated.
DATA�Tracker_ReadPos  (&43208)
#Parent Tracker_
=>	R0 =	Current position in sequence table (0-127 max)
	R1 =	Current position in pattern (0-63 max)
	R2 =	Maximum position in sequence table

This performs the same actions as *PlayPos with no parameters, but also returns the current position in the current pattern (in case some applications need to synchronize events with the tune being played).DATA�Tracker_PlayNote  (&43209)
#Parent Tracker_
=>	R0 =	Sound channel to sound note on (1-8 max)
	R1 =	Tracker format note number (1-36)
	R2 =	Sample to play (1-36)
	R3 =	Volume (0-255) [Tracker volume even if soundtracker tune loaded].
\<=	R0-R3 preserved
	If tune not paused then C flag set otherwise C flag cleared.

If there is no tune loaded, an error will be generated.

It plays one of the samples which are part of the paused tune at a given pitch (1=low, 36=high) and volume (0=silent, 255=loud). If any of the values are out of range, an error will be reported.
The number of sound channels that can be used depends on the module loaded (soundtracker modules will always use 4 voices, whereas Tracker modules can use up to 8). Use <Tracker_TuneInfo> to find out the maximum number of voices if you intend to play more than one note at a time.

NB: This call should be avoided if possible, unless the purpose is to hear each sample seperately.
DATAETracker_TuneInfo  (&4320A)
#Parent Tracker_
\<=	R0 =	Sequence table length (1-128)
	R1 =	Number of voices (1-8)
	R2 =	Current speed (1-15)
	R3 =	Pointer to tune name (terminated by 0, max length 32 chars)
	R4 =	Pointer to author's name (0 terminated, max length 32 chars) or zero if soundtracker format module (not applicable)
	R5 =	Address of currently loaded tune module
           
If the tune is paused, the C flag is set, otherwise the C flag is cleared. If there is no tune loaded, R0 is set to zero, and R1-R5 are preserved.

This call provides miscellaneous information about the tune currently loaded.

You should not need to directly access the tune module (using the address passed in R5), because all information is available via the various SWI's, and soundtracker format modules will have been converted partially to Tracker format when loaded (and therefore in an unknown format). This information is provided if, for example, multi-tasking players/editors need to know if the tune currently playing is running from ordinary RMA, or the player's/editor's own workspace.
DATA<Tracker_SoundInfo  (&4320B)
#Parent Tracker_
=>	R0 =	Pointer to word-aligned 256 byte block to hold <sound data=>Tracker_Soundblock>
\<=	R0 preserved

	If the tune is paused, the C flag will be set, otherwise the C flag will be cleared.

If there is no tune loaded an error will be generated.

This call is only provided for advanced uses of the trackermodule, and involves information of a highly technical nature. It is advised that you do not use this call if you can avoid it.

The call will transfer the current contents of the sound voice info table to the location pointed to by R0. 256 bytes (64 words) will be transferred in total (8 words per sound channel), regardless of the number of voices actually active.

When a note is played and then ends, word 6 of the appropriate channel is zeroed. The sound routines will only try and play the sample if this word is non-zero.

When a tune is paused, the block is saved and overwritten with zeros. When the tune is restarted, the old contents are restored, so that the samples will continue to play from the same point.
DATA�Tracker_ReadSampleTable  (&4320C)
#Parent Tracker_
=>	R0 =	Sample number (1-36)
\<=	R0 preserved
	R1 =	Pointer to sample name (0-terminated, max length 22 chars) 
	R2 =	Sample volume (0-255, 255=maximum volume, 0=silent) (or for sound tracker 0-64, 64=max vol.) 
	R3 =	Sample length (bytes)
	R4 =	Repeat offset (bytes)
	R5 =	Repeat length (bytes)
	R6 =	Address of raw sample data

This call returns all relevant information about the specified sample. 

If there is no tune loaded, an error will be generated.

If the sample number is out of range (for example, if reading sample 16 on a 15-instrument module), R1 and R6 will point to a zero, and R2-R5 will contain a zero.
DATAcTracker_WriteSampleTable  (&43213)
#Parent Tracker_
=>	R0 =	Sample number (1-36)
	R1 =	New sample volume (0-255/0-64) or -1 to leave unchanged.
	R2 =	Repeat offset (bytes) or -1 to leave unchanged.
	R3 =	Repeat length (bytes) or -1 to leave unchanged.

You should use this SWI if you wish to alter the sample data without needing to know the relevant module format. Sample length is not alterable, because the occasions when this is necessary (eg. loading new sample in) need direct manipulation of the module in memory anyway, and problems occur when the sample length is set above the actual length.

Versions between 3.00 and 4.05 copied the sample information into a more convenient format when the module was initialised, and so altering the data directly would have had no effect (causing problems for editors which needed to do this..).

Should you wish to alter any other aspect of the module directly which might affect the playroutine (ie. number of voices), you should call <Tracker_UpdateData>.

An error is generated if:
#Indent 2
#Tab
�	No module is loaded
�	The sample number to change exceeds the max. of the format (ie. 15/31/36)
�	The relevant information is out of range (ie. vol > [64 or 255])
�	A combination of repeat offset and repeat length would cause the player to loop outside the sample limit.
#Indent

This SWI is part of the locking system.
DATATracker_Lock  (&4320D)
#Parent Tracker_
=>	R0 =	locking code (passed in R4 to SWI's)

This SWI and the corresponding <Tracker_Unlock> SWI are provided to prevent user intervention with any of the features of the module when this would be undesirable for any multi-tasking applications using the module (for example issuing a *PlayStop command). By calling this SWI, an application can gain complete control of the module, but as a result, this feature must be used carefully, because the module cannot then be unlocked unless the code specified in the lock SWI is known (and if not, the module must be re-initialised).

When the module is locked, calling any commands or SWI's which alter anything (such as changing the current play position, loading or killing tunes, playing notes) will cause an error, but SWI's returning information will function as normal. For the application which is responsible for the locking to be able to use the affected SWI's, R4 must be set to the locking code (passed in R0) before any of the affected SWI's is called (no commands will work even if the locking code is known).

If the TrackerModule is already 'locked' when this SWI is called, an error will be generated. It is advisable to avoid using this call unless absolutely neccessary.

The restricted commands are:
*PlayMod, *PlayPause, *PlayStart, *PlayPos, *PlayStereo, *PlayStop, *PlayVolume.

The restricted SWI's :
<Tracker_Load>, <Tracker_MemoryLoad>, <Tracker_Play>, <Tracker_Stop>, <Tracker_Stereo>, <Tracker_SetPos>, <Tracker_PlayNote>, <Tracker_Volume>.
DATALTracker_Unlock  (&4320E)
#Parent Tracker_
=>	R0 =	locking code (specified in Tracker_Lock)

This SWI should be called to unlock the module after it has been locked with <Tracker_Lock>. If the value passed in R0 is different to the locking code given in the lock SWI, or the module has not been locked, an error is generated.DATA�Tracker_MuteChannel  (&4320F)
#Parent Tracker_
=>	R0 =	channel to mute (1-8)

This SWI allows you to turn off selected channels while leaving all the other channels unaffected. The channels can be turned back on by using the <Tracker_RestoreChannel> SWI.

No error is generated if the channel number is higher than the number of channels actually being used by the TrackerModule.DATA/Tracker_RestoreChannel  (&43210)
=>	R0 = channel to turn on (1-8)

This SWI will reverse the effect of a <Tracker_MuteChannel> SWI, and turn the selected channel back on.

No error is generated if the channel number is higher than the number of channels actually being used by the TrackerModule.DATATracker_Speed  (&43211)
#Parent Tracker_
=>	R0 =	new speed setting (0-3)

This SWI will select the future sample rate and overall pitch to cater for VIDC enhancers and 8-channel tunes, taking effect immediately if a tune is currently playing.

For details of the different options see the command *PlaySpeed. This SWI is not included in the locking system because it was only introduced in version 4.04, and some programs may have already been written which use the locking system but don't control the sample speed/pitch etc. DATATracker_Volume  (&43212)
#Parent Tracker_
=>	R0 =	new overall volume (0-127) or -1 to read volume
<=	R0 =	old volume

This SWI will set the overall volume of any tunes playing by subtracting (254-volume*2) from the volume of any sample playing. This takes effect immediately, and also affects samples which are in mid-play.  Calling the SWI with R0=-1 will return the current volume in R0. You can use this SWI to provide smooth fade-outs and fade-ins, for example.

This SWI is part of the locking system.
DATADTracker_TranslateVolume  (&43214)
#Parent Tracker_
=>	R0 =	Soundtracker volume to convert (0-64)
<=	R0 =	Logarithmic volume (0-255), 255=max.

This SWI will convert a soundtracker volume (as returned by <Tracker_ReadSampleTable> when a soundtracker tune is playing) into a Tracker format logarithmic volume (0-255).
DATABTracker_UpdateData  (&43215)
#Parent Tracker_
This is really an editor SWI which you should call whenever you alter one of the following, so that the module can update its data:-
#Indent 2
�	Number of voices (and therefore pattern length)
�	Sample length/load new sample
�	Music length
�	Stereo settings (Tracker)
DATA�Note translation table
\#	Note	Sample period
#LINE
1	C -1	&358
2	C#-1	&328
3	D -1	&2FA
4	D#-1	&2D0
5	E -1	&2A6
6	F -1	&280
7	F#-1	&25C
8	G -1	&23A
9	G#-1	&21A
10	A -1	&1FC
11	A#-1	&1E0
12	B -1	&1C5
13	C -2	&1AC
14	C#-2	&194
15	D -2	&17D
16	D#-2	&168
17	E -2	&153
18	F -2	&140
19	F#-2	&12E
20	G -2	&11D
21	G#-2	&10D
22	A -2	&FE
23	A#-2	&F0
24	B -2	&E2
25	C -3	&D6
26	C#-3	&CA
27	D -3	&BE
28	D#-3	&B4
29	E -3	&AA
30	F -3	&A0
31	F#-3	&97
32	G -3	&8F
33	G#-3	&87
34	A -3	&7F
35	A#-3	&78
36	B -3	&71
DATA�Tracker and Soundtracker commands
In all tunes, there are special commands which have a type (0-&F for amiga, 0-9 & A-Z for Tracker) and data (usually presented as a hex byte, ie. &XX), which is sometimes treated as two seperate nibbles (ie. arpeggio).
A list of the commands found in Tracker/STracker tunes is as follows:

Command	 Effect
#LINE
0 (both)	Arpeggio -
		note2=<base note=>Tracker_NoteTable>+(first digit of data) semitones
		note3= " " +(second ""	 ") "
	Play note3 for one vsync, then note2, base note, note3, note2 and then the base note to achieve a chord effect (ie. C-2 with command 0 data '&47' (hex) would play a major arpeggio of C-2, E-2, G-2.If the speed is less than 6, the arpeggio will be cut short.

1 (both)	Pitch slide (portamento up) -
	While the command is playing, DECREMENT the sample period by \<parameter> (0-15 usually). This has the effect of INCREASING the pitch smoothly without restarting the sample. Note that the pitch gained by a fixed change to the sample period is not constant over the 3 octaves.

2 (both)	Pitch slide (portamento down) -
	Like command 1 but slides the pitch down.

3 (amiga only)	Portamento -
	Sounds similar to commands 1 & 2, but behaves differently. When you use command 3 with a note specified, the note is not played, but the pitch of the note is set as the 'goal' of the portamento. Then, whenever a command 3 comes up, the pitch is automatically slided in the appropriate direction by the value last given as a parameter for command 3, until the 'goal' is met, and further command 3's will have no effect.

4 (amiga only)	Vibrato -
	This causes the volume to rise and fall in a warbling effect. The first digit gives the speed of the volume change (1=slow, &F=fast), and the second digit gives the magnitude of the vibrato. The vibrato is created by subtracting a sinusoidally varying amount from the volume of the channel.

5,6,7 (amiga)	Combinations of the volume and pitch slides (Not implemented)

9 (amiga only)	Set sample offset (Not implemented).

A (amiga)	Volume slide -
	If the first nibble is non-zero, add this value to the current volume every vsync, else subtract the second nibble in a similar fashion.

G, H (Tracker)	Volume slide up, down -
	These commands are the same as the A command on the amiga, but take a byte parameter.

B (amiga)	Position jump -
J (Tracker)	When this command is met, jump to position \<parameter> in song.

B (Tracker)	Break pattern -
	Equivalent to amiga command D

C (amiga)	Set volume -
V (Tracker)	Alters the current volume of the channel to the value specified (0-64 amiga, 0-255 arc). Volume 0 means mute sound.

D (amiga)	Break pattern -
B (Tracker)	When this command is encountered, the pattern is ended, and the next pattern jumped to.

E (amiga)	Various commands (ie. h/w filter commands) [Not implemented].

E (Tracker)	Set stereo -
	Set the stereo position (1-7) of the current sound channel
	(1-8).

F (amiga)	Set speed -
S (Tracker)	Sets the speed (number of vsyncs between events) to parameter.
DATA�Errors generated by TrackerModule
Error	Name	Meaning
#LINE
&43200	No tune loaded        	An operation was attempted which requires a tune to be loaded into memory before hand using *PlayMod or <Tracker_Load>.
&43201	Sequence position out of range	The sequence position given with *PlayPos or SWI <Tracker_SetPos> was higher than the actual number of patterns in the song.
&43202	No room for module    	The trackermodule could not claim enough RMA workspace to load the module. To get more memory, quit basic to the supervisor prompt, and retry. If you are using the desktop instead, remove an application and retry.
&43203	Channel number out of range	The sound channel number was not a value between 1 and the number of sound channels used for that particular tune.
&43204	Sample number out of range	The sample number was not within the range of 1-36.
&43205	Note number out of range	The note number was not within the range of 1-36.
&43206	Volume out of range	The volume was not within the range of 0-255
&43207	Module already locked	<Tracker_Lock> was called when the module was already locked. The module can only be unlocked when the application in control of the module issues <Tracker_Unlock>.
&43208	Unlock failed	<Tracker_Unlock> was called but either the wrong locking code was specified, or the module was not locked at the time.
&43209	TrackerModule in use	An attempt was made to execute one of the restricted commands or SWI's while the module was locked (see <Tracker_Lock>)
&4320A	Speed not implemented	<Tracker_Speed> was called with R0 outside the range of values currently accepted.
&4320B	Bad sample looping	Values of repeat offset/repeat length would cause sample to loop outside its limit.
DATATrackerModule sound data block
Offset	Data
#LINE
0	The current pitch accumulator. (shift right 16 bits to get the actual byte offset into the sample being played).
4	The current pitch increment (added to accumulator after every byte filled). This is obtained using internal tables given the sample period (word 7)
8	The sample loop offset (given in bytes). When the routine reaches the end of a sample or the sample length, the accumul- ator is loaded with this value shifted left 16 bits (ie. to give a byte offset). If this is a zero value, the sample will stop instead of looping.
12	The sample length / repeat length (in bytes). The routine checks every 4 bytes filled to see if the current accumulator exceeds this value when shifted right 16 bits. (See above)
16	The sample number (1-36).
20	The current volume (0-255). This value is subtracted from every byte filled, therefore 0 = maximum volume and 255 = silent. NB This is the reverse of the normal volume command.
24	This is the tracker format note number of the sample being played (1-36, 1=C octave 1 36=B octave 3). The arpeggio command makes use of this word. If this word is zero, no sound will be played.
28	This is a copy of the sample period (from which the pitch increment value is calculated), and is used by the portamento commands. The range of the sample period is from 1 to hex &400 (although the portamento commands have smaller limits in practice).
32	Word 0 of sound channel 2...
36	Word 1 of sound channel 2...  etc. 
     
etc until word 8 of sound channel 8
DIR$�G����
g!Root4E������BaseOfSprites(F����v�""BlockCopyLE���wW�Fcarethf�E���
�oClaimFreeMemory F���ƈ�*�CloseDown� E�����CloseTemplate`!E������CloseWindow4"E�����^CommandWindow�$G�����
�CreateIcon@'F�����տ�CreateMenu�,E���4��TCreateSubMenu.E������CreateWindow/E������DecodeMenu1E���<��WDeleteIconp2E������DeleteWindowx3E������ForceRedraw,5E�����iconblock�5E�����eiconbuttonP8E������icondata;F����xN�iconflags�=E������iconpositions�@F������*\Initialise�AF���SD�%"LoadTemplateDF���C�B��OpenTemplate�DF���yL8OpenWindow0GE���Y/�PlotIcon�GF����P�ProcessKey�IE���'��RedrawWindow�JF���&�ږ�ReportError�MF���K[ږreporterror0�PF���h� �SlotSize�QF���b��%'SpriteOp�RE���-r��StartTask�SE����n�TextColour$TE���b�BTransferBlockhUE���C��UpdateWindow�WG����� 
�validationstring�dF����g�*WhichIconfF�����YTwindowblockTjF���h�MwindowflagshnF����O-D�workareabuttonflags4pG����/-
�
UM�:F���*��AddMessages�;F���+����RegisterFilter�<F���Bz��RemoveMessages|=F����_��TextOp8AF����E�?DragBoxxEG���02-
�Get<UG���a2-
LSet�aG����2-
�Poll�~G����2-
�SendmessageH�G����2-
Read�G���LH
�ModeSelect�G����d
ModeString�G���‰
ResizeIconDATAgWIMP
#Parent !Root
#Prefix Wimp_
#Table Columns 3
<AddMessages>
<BaseOfSprites>
<BlockCopy>
<ClaimFreeMemory>
<CloseDown>
<CloseTemplate>
<CloseWindow>
<CommandWindow>
<CreateIcon>
<CreateMenu>
<CreateSubMenu>
<CreateWindow>
<DecodeMenu>
<DeleteIcon>
<DeleteWindow>
<DragBox>
<ForceRedraw>
<GetCaretPosition>
<GetIconState>
<GetMenuState>
<GetPointerInfo>
<GetRectangle>
<GetWindowInfo>
<GetWindowOutline>
<GetWindowState>
<Initialise>
<LoadTemplate>
<OpenTemplate>
<OpenWindow>
<PlotIcon>
<Poll>
<PollIdle>
<ProcessKey>
<ReadPalette>
<ReadPixTrans>
<ReadSysInfo>
<RedrawWindow>
<RegisterFilter>
<RemoveMessages>
<ReportError>
<ResizeIcon>
<SendMessage>
<SetCaretPosition>
<SetColour>
SetColourMapping
<SetExtent>
<SetFontColours>
<SetIconState>
<SetMode>
<SetPalette>
<SetPointerShape>
<SetWatchdogState>
<SlotSize>
<SpriteOp>
<StartTask>
<TextColour>
<TextOp>
<TransferBlock>
<UpdateWindow>
<WhichIcon>
#EndTable

Related topics :
#INDENT 4
#Table Columns 3
<Messages=>Wimp_sendmessage0>
<Poll codes=>Wimp_Poll>
<Window flags=>Wimp_windowflags>
<Icon flags=>Wimp_iconflags>
<Icon buttons=>Wimp_iconbutton>

#EndTable
DATA�Wimp_BaseOfSprites  (&400EA)
#Parent Wimp_
\<=	R0 = Base of ROM sprites
	R1 = Base of RMA sprites

This SWI gives you the two areas that makes up the Wimp sprite pool. Note that the RMA area may move around (when sprites are added.)

You can use these addresses with OS_SpriteOp, but you should always use Wimp_SpriteOp.

The only(?) real use for this SWI, is for saving the ROM sprites to a file :

  SYS "Wimp_BaseOfSprites" TO ROMBase%,RMABase%
  SYS "OS_SpriteOp",12,ROMBase%,"filename"DATA"Wimp_BlockCopy  (&400EB)
#Parent Wimp_
=>	R0 = Window handle
	R1 = Source	minx (incl)
	R2 =		miny (incl)
	R3 =		maxx (excl)
	R4 =		maxy (excl)
	R5 = Dest	minx (incl)
	R6 =		miny (incl)

This SWI copies as much as possible of source-rectangle, to given dest. The rest is invalidated.DATAFCaret height and flags
Bits	Meaning
#Line
0-15	Height of caret in OS units.
16-23	Colour (if bit 26 is set)
24	1 => Use VDU5 type caret.
	0 => Use anti-aliased caret.
25	1 => Caret is invisible.
26	1 => Use bits 16-23 for colour.
	0 => Use wimp colour 11.
27	1 => 16-23 is untranslated col.
	0 => 16-23 is wimp colour.DATAoWimp_ClaimFreeMemory  (&400EE)
#Parent Wimp_
=>	R0 = 1 to claim, 0 to release
	R1 = amount required

\<=	R0 = amount available
	R1 = start addr, or 0 if not enough

This call is analogous to <OS_ClaimScreenMemory>. It claims all the memory in the free-pool. The memory must be accessed in SVC-mode, and Wimp_Poll should not be called while memory is reserved.DATA�Wimp_CloseDown  (&400DD)
#Parent Wimp_
=>	R0 =	Taskhadle returned by <Wimp_Initialise>
	R1 =	"TASK" (&4B534154)

This must be called immediately before the task terminates by calling <OS_Exit>.DATA�Wimp_CloseTemplate  (&400DA)
#Parent Wimp_
This call closes the currently open template file, previously opened by <Wimp_OpenTemplate>.DATA�Wimp_CloseWindow (&400C6)
#Parent Wimp_
=>	R1 = Pointer to block :
	  0  Window handle

This call removes the window from the list of active windows.

The Wimp will issue any necessary redraw messages.DATA^Wimp_CommandWindow  (&400EF)
#Parent Wimp_
=>	R0 = operation

#Tab
Operations
 -1	Command window is closed whether it is was used or not.
  0	Same as -1, but if output, do a "Press SPACE or click mouse to continue"
  1	Command window is set to 'active'
 >1	Pointer to title. Command window is set to 'pending', and next time VDU4 output is generated, the window will open.

This SWI opens a textwindow in which VDU4-type output can be displayed.

When the Wimp starts a task, it does a
  SYS "Wimp_CommandWindow","program name"
When Wimp_Initialise is reached, it does
  SYS "Wimp_CommandWindow",-1DATA�Wimp_CreateIcon  (&400C2)
#Parent Wimp_
=>	R1 =	Pointer to block :
		0..3	Window handle, or <iconbar location=>.position>
		4..31	<Icon block=>Wimp_iconblock>

\<=	R0 =	icon handle (unique within window)

This SWI adds a new icon to a window.
#
#Subpage position
Iconbar positions
Value	Meaning
#Line
-1	Right side of icon bar
-2	Left side of icon bar
-3	Left relative
-4	Right relative
-5	Left high priority
-6	Left low priority
-7	Right low priority
-8	Right high priority

The actual meaning of any of this is somewhat unclear to me, but I think that if R0 is set to an icon number (for relative) or a value x\<\<28, then the position will change relative to other icons.DATA�Wimp_CreateMenu  (&400D4)
#Parent Wimp_
=>	R1	=	pointer to <menu block=>.block>
	R2,R3	=	x,y coordinate of top-left corner of top-level menu.

If R1 = -1 on entry, then any open menu will be closed. If R1 is a window handle, then this window will be opened as a menu.
#
#Subpage block
Menu block
  0	menu title (if 0 string, no title)
 12	title foreground and frame colour	Def:  7
 13	title background colour			Def:  2
 14	work-area foreground colour		Def:  7
 15	work-area background colour		(Def:  0)
 16	width of menu items
 20	height of menu items			Def: 44
 24	vertical gap between items		Def:  0
 28	<menu items=>.item> (24 bytes each)

If bit 8 of the flags for the first item is set, then the menutitle is indirected, and the 3 first words are as for an indirected texticon.

If menutitle begins with an "\\", then this menu and all its submenus are "reversed"
#
#Subpage item
Menu item
#wrap off
  0	<item flags=>.flags>
  4	submenu ptr, or window handle or -1 if nothing
  8	<icon flags=>wimp_iconflags> (as for normal icon)
 12	12 bytes of <icon data=>wimp_icondata> (as for normal icon)
#
#Subpage flags
Item flags
Bit	Meaning
#Line
0	Tick to left of item
1	Dotted line following item
2	Item is writable
3	Generate message when submenu
4 +	Submenu can be opened even when greyed out
7	This is last item in menu
8 +	(Only in first menuitem) Menu title is indirected

Rest of bits must be 0DATATWimp_CreateSubMenu  (&400E8)
#Parent Wimp_
=>	R1	=	ptr to <submenu block=>wimp_menublock>, or window handle
	R2,R3	=	x,y coordinate of top-left of submenu.

This call is made when a MenuWarning message is received. This message is sent by Wimp when pointer is over the submenu arrow of a menu item with the Generate Message bit set.DATAWimp_CreateWindow  (&400C1)
#Parent Wimp_
=>	R1 = Pointer to <window block=>wimp_windowblock>
\<=	R0 = Window handle

This tells the Wimp what the characteristics of a window are. The Wimp takes a copy of this block, so you could throw it away afterwards.DATA�Wimp_DecodeMenu  (&400D5)
#Parent Wimp_
=>	R1 = pointer to menu data structure
	R2 = pointer to list of menuselections
	R3 = pointer to buffer for answer.

\<=	Buffer pointed to by R3, contains menu item texts, separated by '.'s

This SWI isn't too useful. The only use I can think of, is in something like a font menu : The menu 'Trinity' contains, among others, 'Medium'. So, when the user selects a font, you use this call to get the string 'Trinity.Medium'

Anyway: I haven't used this SWI yet..DATAWWimp_DeleteIcon  (&400C4)
#Parent Wimp_
=>	R1 = pointer to :
	  0  Window handle  (or -1,-2 for iconbar)
	  4  Icon handle

This SWI removes the definition of the given icon. If it is the last icon in the windows list, the memory is reallocated, if not it is only marked as deleted.

To update screen, you must call <Wimp_ForceRedraw>.DATAWimp_DeleteWindow  (&400C3)
#Parent Wimp_
=>	R1 = pointer to block :
	  0  Window handle

This SWI closes the window if it is open, and then reallocates the memory used in Wimp workspace. (indirected data in Application workspace, is left alone of course).DATA�Wimp_ForceRedraw  (&400D1)
#Parent Wimp_
=>	R0 = window handle (-1 for whole screen)
	R1 = min x
	R2 = min y
	R3 = max x
	R4 = max y

\<=	R0 corrupted

This SWI marks area of screen as invalid, and to be redrawn later.

If R0 = -1 then R1..R4 are in absolute coords, else they are relative to window's origin.

If you are doing some kind of animation or other temporary changes, then you should use <Wimp_UpdateWindow> instead.DATA�Format of a Icon block
  0	Minimum x of icon bounding box
  4	Minimum y
  8	Maximum x
  12	Maximum y
  16	<Icon flags=>Wimp_iconflags>
  20	12 bytes of <icon data=>Wimp_icondata>DATAeIcon button types
Bits 12-15	Meaning
#Line
  0		Ignore everything (except menu).
  1		Notify continuously while pointer is over icon.
  2		Click (auto-repeat)
  3		Click (no auto-repeat)
  4		Click selects, move away deselects. Notify of release.
  5		Click selects. Doubleclick notifies task.
  6		3 + Drag (*16).
  7		4 + Drag (*16). Moving away doesn't deselect.
  8		5 + Drag (*16).
  9		'menu' icon
  10		Click (*256), Drag (*16), Doubleclick (*1)
  11		Click selects (*1), Drag notifies (*16)
  12-13		Reserved.
  14		Click causes it to gain caret. Can also Drag
  15		Click causes it to gain caret.DATA�Icon Data
Intepretation varies according to these three bits :
Indirected(8), Sprite(1) and Text(0).
Text plus sprite icons also have a special <justification=>wimp_iconpositions>.

IST	Data
#Line
000	Not used
001	Text String. Max 12 characters long.
010	Spritename.
011	Text and Spritename
100	Not used

101	+0	Pointer to text buffer
	+4	Pointer <validation string=>Wimp_validationstring>
	+8	Buffer length

110	+0	Pointer to sprite or spritename.
	+4	Pointer to sprite control block (+1 for Wimp)
	+8	0 if (+0) is spritepointer, length if namepointer.

111	+0	Pointer to text buffer
	+4	Pointer <validation string=>Wimp_validationstring>, which can contain spritename.
	+8	Buffer lengthDATA�Icon flags
Bits	Meaning when set
#Line
 0	Icon contains text.
 1	Icon contains a sprite.
 2	Icon has a border.
 3	Contents centered horizontally.
 4	Contents centered vertically.
 5	Icon has a filled background.
 6	Text is anti-aliased font.
 7	Icon requires task's help to redraw.
 8	Icon data is indirected.
 9	Text is right-justified.
 10	If selected with adjust, don't cancel others.
 11	Display sprite at half size.
 12-15	<Icon button type=>Wimp_iconbutton>.
 16-20	Exclusive Selection Group.
 21	Icon is selected by user, and is inverted.
 22	Icon is un-selectable (shaded)
 23	Icon is deleted.
 24-27	Foreground colour	\\ If bit 6 = 1 then this
 28-31	Background colour	/  is the fonthandle.DATA�Icon relative positions
The position of an indirected text plus sprite icon is determined by the Horizontal, Vertical and Right justified bits (3,4 and 9):

HVR	Horizontal adjust		Vertical adjust
#Line
000	Text & sprite left justified	Text at bottom, sprite at top
001	Text & sprite right justified	Text at bottom
010	Sprite at left, text > +6 units	Text & sprite centered
011	Text at left, sprite at right	Text & sprite centered
100	Text & sprite centered		Text at bottom, sprite at top
101	Text & sprite centered		Text at top, sprite at bottom
110	Text & sprite centered		Text & sprite centered
111	Text at right, sprite at left	Text & sprite centered

Note: If text and sprite overlaps, text will be on top.DATA\Wimp_Initialise (&400C0)
#Parent Wimp_
=>	R0 =	Last Wimp-version known * 100
	R1 =	"TASK" (&4B534154)
	R2 =	Short description for taskmanager.
+	R3 =	ptr to list of acceptable usermessages
	(Version >= 3.00.  \0 terminated)
        
\<=	R0 =	Current Wimp-version
	R1 =	task handle

Before program terminates, it should call <Wimp_CloseDown>DATA"Wimp_LoadTemplate  (&400DB)
#Parent Wimp_
=>	R1 =	ptr to userbuffer for template
	 	0 to find required buffersize
	R2 =	ptr to workspace for indirected data.
	R3 =	ptr to end of workspace (+1?)
	R4 =	256-byte array for font ref (-1 if no fonts)
	R5 =	ptr to (wildcarded) name to match (3 aligned words)
	R6 =	pos to search from (0 for 1st)

\<=	R2 =	ptr to remaining workspace
	R5	is overwritten with actual name
	R6 =	pos of next entry

if R1 was 0, then :
	R1 =	required size for window and icons
	R2 =	required size for indirected dataDATA�Wimp_OpenTemplate  (&400D9)
#Parent Wimp_
=>	R1 =	pathname of template file to open

This call opens the said template file.
Now you can do repeated calls to <Wimp_LoadTemplate>, and finally <Wimp_CloseTemplate>.DATA8Wimp_OpenWindow (&400C5)
#Parent Wimp_
=>	R1 =	Pointer to block :
	 	   0	Window handle
	 	   4	Visible area minimum x
	 	   8	----------"--------- y
	 	  12	Visible area maximum x
	 	  16	----------"--------- y
	 	  20	Scroll x offset
	 	  24	Scroll y offset
	 	  28	Handle to open window behind
	 	 	(-1=top, -2=bottom, -3=hide/iconise)

#Tab
This call updates the list of active windows. It is used
  1)	When you open a window for the first time, and
  2)	When the window moves, scrolls or resizes.

The Wimp will issue redraw messages to you, if necessary.DATA�Wimp_PlotIcon  (&400E2)
#Parent Wimp_
=>	R1 = <icon block=>wimp_iconblock>

This SWI can be used to plot a 'virtual' icon during a window redraw/update loop.DATA�Wimp_ProcessKey (&400DC)
#Parent Wimp_
=> R0 = <Character code=>wimp_poll8a>.

#Tab
This call has two uses:
  1 :	Pass on keypresses that your program has received from Wimp_Poll <reason 8=>Wimp_poll8>, but doesn't use.
  2 :	Insert keypresses into the wimp buffer.

#Tab
Note 1 :	You should not insert more than one or two characters at a time this way. It seems that the Wimp gets confused after that.

Note 2 :	Characters inserted this way takes precedence over characters in the keyboard buffer.DATA�Wimp_RedrawWindow  (&400C8)
#Parent Wimp_
=>	R1 = pointer to block containing window handle
\<=	Exits through <Wimp_GetRectangle>

This SWI is called in response to a RedrawWindow message from Wimp. It must be 1st Wimp call after Wimp_Poll.DATA�Wimp_ReportError  (&400DF)
#Parent Wimp_
=>	R0 =	ptr to standard <SWI errorblock=>swi_errorblock>
	R1 =	<flags=>wimp_reporterror0>
	R2 =	ptr to application name (or title if bit 4 set)
	R3 =	sprite name (if bit 8 set)
	R4 =	sprite <block=>OS_SpriteOp_area> (if bit 8 set)
	R5 =	extra buttons string (if bit 8 set), comma seperated

\<=	R1 =	0 if nothing selected, 1 if OK selected and 2 if Cancel, 3-5 if extra buttons
	 	Return gives default, Escape the alternate
	R0 corrupt
        
This SWI opens a standard, non-multitasking, errorbox on the screen. Avoid, if possible. It is boring and, as stated above, non-multitasking. However, the RO3.5 extensions make the use of error boxes much more appealing to the programmer.DATAFlags for Wimp_ReportError
Bit	Meaning when set
#Line
0	'OK' box
1	'Cancel' box
2	Highlight Cancel (or OK if no Cancel box)
3	Don't do 'Press space or click mouse to continue'
4	Don't prefix title with 'Error from '
5	Return immediately with R1=0 and box open
6	Simulate iconclick in box according to bits 0+1
7	Don't beep
8	Use categories
9-11	<Category=>.Category>
12-31	Reserved. Must be 0
#subpage Category
Wimp_ReportError categories
\#	Meaning
#Line
1	Informational.
2	Warning.
3	Program (ie non-desktop) message (stop).
4	Question; usually used with the button string.
5	User icon 1 (ie undefined)
6	User icon 2 (ie undefined)
7	Program again (do not use)

These define the type of error under RO3.5 and display the type of the error. Bit 8 must be set.
DATA�Wimp_SlotSize (&400EC)
#Parent Wimp_
=>	R0 =	new size of current slot (-1 to read)
	R1 =	new size of next slot (-1 to read)

\<=	R0 =	size of current slot
	R1 =	size of next slot
	R2 =	size of free pool
	(R4 corrupted?)DATA'Wimp_SpriteOp  (&400E9)
#Parent Wimp_
=>	R0 =	<reason code=>OS_SpriteOp_Reason> (0..&FF)
	R1	unused
	R2 =	spritename
	R3..	as for OS_SpriteOp

\<= as for OS_SpriteOp

This call is mapped to <OS_SpriteOp>.
&100 is added to reason code in R0, and R1 is set to the Wimp sprite-area pointer.DATA�Wimp_StartTask  (&400DE)
#Parent Wimp_
=>	R0 = Pointer to *command

This SWI creates a new task, and executes the given *command. The SWI returns to you when new task exits, or calls Wimp_PollDATA�Wimp_TextColour  (&400F0)
#Parent Wimp_
=>	R0 :	bits 0-3 Wimp colour
	 	bit  7	0 for foreground,
	 	 	1 for background

This SWI applies only to VDU4 text.DATABWimp_TransferBlock  (&400F1)
#Parent Wimp_
=>	R0 = Handle of source task
	R1 = pointer to source data
	R2 = Handle of destination task
	R3 = pointer to destination buffer
	R4 = length of buffer

This SWI is used to transfer a block of data from one task to another. Addresses and bufferlength are all byte-aligned.DATA�Wimp_UpdateWindow  (&400C9)
#Parent Wimp_
=>	R1 = Block :
	  0	Window handle
	  4	Work area rectangle	minx (incl)
	  8	 			miny (incl)
	  12	 			maxx (excl)
	  16	 			maxy (excl)

\<=	Exits through <Wimp_GetRectangle>

#Tab
This SWI is similar to <Wimp_RedrawWindow>.
Differences :
  *	Not all of window has to be updated.
  *	Rectangles are not cleared by Wimp.
  *	Can be called at any time, not just in response to RedrawWindow message.
  *	NOTE: This SWI does not remove rectangles from Wimp_RedrawWindows list of invalid rectangles.
	=> If the area is already invalid, then Wimp will send you redraw messages, even if you have updated the area.DATA�Validation Strings
#Prefix .
Validation string can contain the following commands :
(Commands can be separated by ";")

<A>	Allowable characters.
<D>	Mask typed characters.
<F>	Set font colours.
<K>	Assign functionality to specific keys
<L>	Text in icon will be formatted (split)
<P>	Sets pointer shape and active point
<R>	Border commands.
<S>	Spritename.
#
#Subpage A
Validation string 'A'
Use:	Exclude/accept only certain characters into a writeable icon.

Syntax:	{Fcode:A[char list][~exclusion list]}
	Allow characters in 'char list'.
	Disallow characters in 'exclusion list'

Examples:	A0-9a-z~b	Allows 0..9, a, c..z
	A~X		Allows all chars but X
	A~\\~		Allows all chars but ~
	A~		Allows all chars
#
#Subpage D
Validation string 'D'
Use:	The masking of the contents of icons. Usually used in password icons.

Syntax:	{Fcode:Dchar}
	Displays all typed chars as 'char'
	Special characters must be preceded by a \\

Examples:	{Fcode:D*}	Contents of the icon is displayed as a series of *'s.
		{Fcode:D\-}	Contents displayed as a series of '-'s
#
#Subpage F
Validation string 'F'
Use:	The definition of outline font colours.

Syntax:	{Fcode:Fxy}
	x = Background
	y = Foreground.
	x and y are hexadecimal digits: 0..9,A..F

Notes:	This call uses <Wimp_SetFontColours>.

Examples:	{Fcode:FA3}	sets background to 10 and foreground to 3.
	{Fcode:F07}	sets background to 0 and foreground to 7 (default).
#
#Subpage K
Validation string 'K'
Use:	Assigns functionality to specific keys.

Syntax:	{Fcode:Koptions}

Options:	R	Return moves caret to next writable icon. (Except for last.)
	A	Up/Down arrow moves to prev/next writable
	T	Tab moves to next, shift-Tab to previous
	D	Deleting will also report the keypress
	N	Task will be notified of all keypresses in icon

Examples:	{Fcode:Ktarn}
		{Fcode}Knd{f}
#
#Subpage L
Validation string 'L'
Use:	Formatting text to fit the icon as best as possible.

Syntax:	{Fcode:Lh}
	h is the vertical spacing between lines of text in OS units. If omitted, 40 units is used (a system font character is 32 OS units high).

Notes:	This option can only be used with icons which are horizontally and vertically centred, and do not contain an anti-aliased font. The icon must not be writeable, since the caret would not be positioned correctly inside it.

Examples:	{Fcode:L40}
#
#Subpage P
Validation string 'P'
Use:	The changing of the pointer shape and active point.

Syntax:	{Fcode:Pspritename[,x,y]}
	spritename is a sprite in the Wimp sprite pool.
	x and y are the new active points for the pointer.

Examples:	{Fcode:Pptr_write,4,4}	Pointer for writable icons.
		{Fcode:Pptr_menu,6,5}	Pointer for pop-up menu icons.
#
#Subpage R
Validation string 'R'
Use:	Three dimensional borders for icons.

Syntax:	{Fcode:Rtype[,pushcolour]}
	pushcolour is used for when the icon is in a selected state for types 5 and 6.
Types:	1	slab out
	2	slab in
	3	ridge
	4	channel
	5	action button
	6	default action
	7	writable

Examples:	{Fcode:R5,3}	Action button which sinks down to colour 3 (Acorn approved type)
 		{Fcode:R4}	Acorn recommended border type.
#
#Subpage S
Validation string 'S'
Use:	Including sprites in indirected icons

Syntax:	{Fcode:Sspritename[,<selected\>]}
	selected is used for when the icon is in a selected state.

Examples:	{Fcode}	Sswitcher
		Soptoff,opton{F}
DATAWimp_WhichIcon  (&400D6)
#Parent Wimp_
=>	R0 =	Window handle
	R1 =	Block to contain icon handles
	R2 =	Bit mask
	R3 =	Bit settings to match

All icons with
#Wrap Off
  (icon flags AND R2) = (R3 AND R2)
#Wrap On
are added to the list in R1.
The list is terminated by -1DATATFormat of a window block
#Wrap off
0	Visible area minimum x
4	Visible area minimum y
8	Visible area maximum x
12	Visible area maximum y
16	Scroll x offset
20	Scroll y offset
24	Handle to open window behind (-1=top,-2=bottom,-3=iconise)
28	<Window flags=>wimp_windowflags>                                       Default cols:
32	Title foreground, and frame colour			7 Black
	(&FF means no frame, and no title or scrollbars)		.
33	Title background					2 Grey
34	Work area foreground
35	Work area background (&FF means Wimp won't clear)
36	Scrollbar outer colour					3 Dark grey
37	Scrollbar inner colour					1 Light grey
38	Title background when input focus			12 Cream
39	0
40	Work area minimum x
44	Work area minimum y
48	Work area maximum x
52	Work area maximum y
56	Title bar <icon flags=>wimp_iconflags>
60	<Workarea 'button' flags=>wimp_workareabuttonflags>
64	Sprite area control block pointer (+1 for wimp)
68	minimum width   (NB two bytes)
70	minimum height  (NB two bytes)
72	title data
84	Nr of icons in initial definition (0 or more)
88	0 or more <icon blocks=>wimp_iconblock>, 32 bytes each.DATAWindow flags
Bits 	Meaning when set
#Line
0	Old - Has title bar
1	Window is moveable (draggable).
2	Old - Vertical scroll bar
3	Old - Horizontal scroll bar
4	Window can be drawn completely by Wimp.
5	Window is a pane.
6	Window can be opened/dragged outside screen.
7	Old - Has no quit or back boxes
8	Return Scroll Request with autorepeat.
9	Return Scroll Request without autorepeat.
10	Treat colours given as GCOL numbers => 0..254
11	Don't allow any window below this one.
12	Trap keypresses.
13  +	Force window to stay on screen
14  +	Ignore right-extent when dragging size-box
15  +	Ignore bottom-extent when dragging size-box
16	Window is open.
17	Window is fully visible.
18	Window has been toggled to full size.
19	Open Window Request, is caused by Toggle Size.
20	Window has the input focus.
21  +	Force window to screen on next <Wimp_OpenWindow>
22-23	0
24	Window has Back icon
25	Close icon
26	Title Bar
27	Toggle size icon
28	Vertical scrollbar
29	Adjust Size icon
30	Horizontal Scrollbar
31	1 for using new format, 0 for oldDATA�Window Button types
#Wrap Off
Bits 12-15	Meaning
#Line
0		Ignore all clicks
1		Notify task continually, while pointer over workarea
2		Click (auto-repeat)
3		Click (no auto-repeat)
4		Release over workarea notifies task
5		Double click
6		3 + drag.
7		4 + drag. These Return button state * 16
8		5 + drag.
9		as 3
10		Click (*256), Drag (*16), Double click (*1)
11		Click (*1), Drag (*16)
12-14		Reserved
15		Mouse click causes window to gain caret.DIR$�
�
�zF����R�?�0�{F�����%�1�}E�����10h�E���N
�11�E������11_flagŝE������12��E������12_flags\�F���e�%�/2��F���w�?W3��F�����?W`4�E������400��E������L40040�E������400C0ԋE�����{400C1P�F������400C2T�E������400C3܎F������""400C4�F����UtX�400C5��E������400C6��E���T���400C7h�F������"�400c9�E������401�E���3���842580 �E������842581X�E������242582��E�����p42583��E���^���7425844�E���`���742585l�E���Ќ�Q42586��F���Z�%�?45d80�F�����%��45d81�F����]R��45d82��F����U%�Q45d83�F�����%�N45d844�F����&�_45d85��E���o��5`�F�����AK502��F���
��A:503�F����%�u6`�E����Y�7\�F���Ib;R=8��F����|�680140ԱE���FF�808c0ܲE����<�808c1��E���s8�(808c2ĴE���"4�c808c3(�E����2�a808c4��E���1��808c5X�E���Y&�d808c6��E����$�y808c78�E���#�80e1e�E���n�Z80e21P�F�����ad80e22��E�����80e23��E���]��9<�E������dA��F����阷ExtEdit �F���ǣ�?�NewsBase��F���QJ)503Codes�G����0-
|NB_�F���x�l�400CC�F����~�80141�F���T��80142�F�����}��80143lF�����}��801440F������l80145�F��������80146<F��������80147�F���f���8014C�!F����-��p8014D�"F���TF���8014E�#F����`���8014F�$F����o���801508%F��������80151�%F���"����80152�&F���O���d80153�&F���R$�ExtEditClient.F����-%��ExtEditEditor�2F���Lj�"�ExtEditJobHandle�3F���X��"ExtEditFlags�4F���S�M ExtEditCursorUnits�6F����nP�fExtEditDatatypes8F����W&�ExtEditSubtypes49F���Z���ExtEditModeratorDATA�Quit (0)
On receiving this broadcast message, the task should tidy up, call <Wimp_CloseDown> and <OS_Exit>.

If task doesn't want to quit, it should have said so when it received the <PreQuit=>wimp_um8> message.DATAMessage_DataSave (1)
Data in block:
20	destination	window handle
24	 		icon handle
28	 		screenx
32	 		screeny
36	estimated size
40	<filetype=>Filetypes:!Root> of data
44	proposed leafname, 0-terminated

This indicates that the sender wants to save data to the receiver

Normal use:
  �	User has terminated a drag.
  �	You get the first four words with <Wimp_GetPointerInfo>
  �	You send message to mentioned window.

Possible responses from other task:
  �	It sends <DataSaveAck=>wimp_um2>
  �	It sends <RamFetch=>wimp_um6>DATA�Message_DataRequest  (&10)
Extra data in block :
 + 20	window handle
 + 24	internal handle
 + 28	x
 + 32	y
 + 36	= 2
 + 40	list of filetypes in order of preference, terminated by -1

Receiver should ignore this message if bit 2 isn't set.

This message is broadcasted by a task who wants to paste the contents of the clipboard into its own document. When the owner of the clipboard receives this message, it should choose the earliest filetype in the list that it can provide (or use native format if none) and reply with a <DataSave=>wimp_um1> message.

When the "Paster" receives this, it should check the filetype and just ignore the message if it can't handle it.DATA�Message_Dragging  (&11)
Extra data in block :
 + 20	window handle
 + 24	icon handle
 + 28	x
 + 32	y
 + 36	<flags=>wimp_um11_flags>
 + 40	bounding box
 + 56	list of filetypes, terminated with -1

This message is sent continuously by the task which is doing the dragging. Initially it is broadcasted, but after a task claims the message, it is only sent to that. Claim by sending <DragClaim=>wimp_um12> messageDATA�Flags
Bit	Meaning when set
#Line
 1	Sending data from selection
 2	Sending data from clipboard
 3	Source data will be deleted
 4	Do NOT claim this message

All other bits reserved and 0.DATA�Message_DragClaim  (&12)
Extra data in block :
 + 20	<flags=>wimp_um12_flags>
 + 24	list of filetypes, terminated with -1

This message is sent as a reply to a <Dragging=>wimp_um11> message to inform the sender that we can receive data.DATA�Flags
Bit	Meaning when set
#Line
 0	Have changed pointer shape
 1	Remove wimp dragbox
 3	Source should be deleted

All other bits reserved and 0.DATA/Message_DataSaveAck (2)
Data in block:
20	destination	window handle
24	 		icon handle
28	 		screenx
32	 		screeny
36	estimated size or -1 if 'unsafe'
40	<filetype=>Filetypes:!Root> of data
44	full pathname (or "\<Wimp$Scrap\>")

Words at 20 to 32 are preserved from <DataSave=>Wimp_um1> message.DATAMessage_DataLoad  (3)
Extra data in block:
  20	Dest window handle
  24	   icon handle
  28	   x coord
  32	   y coord
  36	Estimated size
  40	<filetype=>Filetypes:!Root>
  44	full pathname

Receiver of message should load, and answer with <DataLoadAck=>wimp_um4> if success.DATA`Message_DataLoadAck  (4)
Extra data in block:
  20	Dest window handle
  24	   icon handle
  28	   x coord
  32	   y coord
  36	Estimated size
  40	<filetype=>Filetypes:!Root>
  44	full pathname

This is sent as an answer to a <DataLoad=>Wimp_um3> message. All that should be done, is to change message type to 4, and fill in the your_ref field.DATA�Message FilerOpenDir (&400)
extra data in block:

20	filing system number
24	0  (reserved for flags)
28	name of directory, \0 terminated.DATALNotify (&40040)
Extra data in block :
  20	Sending station number
  21	Its network number
  22	Five-byte real time on reciept
  27	Message

This message is broadcasted by the NetFiler to enable some task to display a *Notify command. If no one acknowledges the message, the NetFiler will display it using <Wimp_ReportError>.DATA�Message_MenuWarning  (&400C0)
extra data in block:
  20	'Submenu ptr' from menu item
  24	x coord of top left new submenu
  28	y coord of top left new submenu
  32..	Selection list (as in <MenuSelection=>wimp_poll9>)

You receive this message when pointer moves over the submenu arrow in a menu entry with the 'generate message' bit set.

You can use the 'submenu ptr' and/or the selection list, to decide which window or menu to open. And then call <Wimp_CreateSubMenu> to open it.DATA{Message_ModeChange (&400C1)
<Wimp_SetMode> causes this message to be broadcasted. You should *not* acnowledge this message.

After sending this message, the Wimp sends an Open_Window_Request event for each window.
=>	You must not delete any window. If you want to delete a window, then just mark it to be deleted, and do the deed when you receive the Open_Window_Request.DATAMessage_TaskInitialise (&400C2)
Data in block :
#Line
   4	Task handle

  20	CAO (Current Active Object) pointer
  24	Its slot size
  28	Task name given to Wimp_Initialise, \0 terminated

This message is broadcasted when a task calls <Wimp_Initialise>.DATA�Message_TaskCloseDown (&400C3)
Data in block :
  4	Task handle

This message is broadcasted when a task calls <Wimp_CloseDown>.DATA"SlotSize (&400C4)
Extra data in block :
 4	Handle of task which owns slot
 20	New slotsize
 24	New size of the Next slot

This message is broadcasted after <Wimp_SlotSize> is called. It's mainly used by the task manager to update its display. The message should not be acknowledged.DATA�SetSlot (&400C5)
Extra data in block :
 20	New slotsize
 24	Owners taskhandle

This message is broadcasted when the user tries to alter a tasks slot size by dragging the "memorybar" in the task manager. If a task can cope with this, it should first check the taskhandle, acknowledge the message and then call <Wimp_SlotSize>.

This message is also sent by the task manager when the task is started. If this, or any later message, is *not* acknowledged, the task will get a green memorybar in the task manager (instead of a red one) and will not receive this message again; It will not be possible for the user to alter the tasks slotsize.DATATaskNameRq (&400C6)
Extra data in block :
  20	Handle of other task

This message can be used if your task want to find out the name of another task. Broadcast this message with correct handle, and the task mamager will respond with a <TaskNameIs=>wimp_um400C7> message.DATA�TaskNameIs (&400C7)
Extra data in block :
  20	Handle of task
  24	Task's slotsize
  28	Taskname

This message is sent by the task manager in response to a <TaskNameRq=>wimp_um400C6> message.DATA�Message_MenusDeleted  (&400C9)
 + 20	Pointer to menu block (<Wimp_CreateMenu>)

This message is sent when your menu was closed without a selection having been made. DATA�Message FilerCloseDir (&401)
extra data in block:

20	filing system number
24	0  (reserved for flags)
28	name of directory, \0 terminated.

All directories starting with given name, will be closed.DATA8DDEUtils_ThrowbackStart  (&42580)
 no extra dataDATA8DDEUtils_ProcessingFile  (&42581)
 + 20	FilenameDATA2DDEUtils_ErrorsIn  (&42582)
 + 20	FilenameDATApDDEUtils_ErrorDetails  (&42583)
 + 20	Linenumber
 + 24	0,1,2 for warning,error,serious
 + 28	DescriptionDATA7DDEUtils_ThrowbackEnd  (&42584)
  no extra dataDATA7DDEUtils_InfoForFile  (&42585)
  + 20  FilenameDATAQDDEUtils_InfoDetails  (&42586)
 + 20	Linenumber
 + 24	0
 + 28	DescriptionDATA?Message_EditRq  (&45D80)
Data in block :
  + 20	<Data type word=>wimp_umExtEditDatatypes> (filetype + subtype)
  + 24	<Job handle=>wimp_umExtEditJobHandle>
  + 28	<Flag word=>wimp_umExtEditFlags>
  + 32	Name of parent	(max 20 char incl \\0)
  + 52	Name of file	(max 20 char incl \\0)

This message is broadcasted by a "client" when it wishes someone to edit its data. If "editor" recognises filetype and subtype, it should acknowledge this message by sending an <EditAck=>wimp_um45d81> message.

This message is part of the "<External Edit=>wimp_umExtEdit>" protocol.DATA�Message_EditAck  (&45D81)
Data in block :
  + 20	<Data type word=>wimp_umExtEditDatatypes> (filetype + subtype)
  + 24	<Job handle=>wimp_umExtEditJobHandle>
  + 28	<Flag word=>wimp_umExtEditFlags>

This message is returned by the "editor" after receiving an <EditRq=>wimp_um45d80> message from a "client". Editor sets the top 16 bits of the Job Handle to a unique value, and both tasks will from now on use the full 32 bit word as a unique job handle. Editor may also change some bits in the Flag Word.

Editor should create and open an empty document. If the "client" wants to, it might fill the empty doc with data by sending an <EditDataSave=>wimp_um45d84> message.

This message is part of the "<External Edit=>wimp_umExtEdit>" protocol.DATA�Message_EditReturn  (&45D82)
Data in block :
  + 20	<Data type word=>wimp_umExtEditDatatypes> (filetype + subtype)
  + 24	<Job handle=>wimp_umExtEditJobHandle>
  + 28	<Flag word=>wimp_umExtEditFlags>

This message is sent by the "client" when it wants its data back. Editor should respond with an <EditDataSave=>wimp_um45d84> message.

This message is part of the "<External Edit=>wimp_umExtEdit>" protocol.DATAQMessage_EditAbort  (&45D83)
Data in block :
  + 20	0
  + 24	<Job Handle=>wimp_umExtEditJobHandle>

This message can be sent by both "client" and "editor". No questions should be asked. The sender of this message is responsible for any messages to the user.

This message is part of the "<External Edit=>wimp_umExtEdit>" protocol.DATANMessage_EditDataSave (&45D84)
Data in block :
  + 20	<Job handle=>wimp_umExtEditJobHandle>
  + 24	reserved
  + 28	reserved
  + 32	reserved
  + 36	Estimated size
  + 40	<Filetype=>Filetypes:!Root> ({*}Not{*} Datatype)
  + 44	Proposed leafname

This message is very similar to the standard <DataSave=>wimp_um1> message, and from here on the standard Data Transfer Protocol is used. (ie: it is answered with <DataSaveAck=>wimp_um2> or <RamFetch=>wimp_um6>)
Note that "client" can send this message several times.

This message is part of the "<External Edit=>wimp_umExtEdit>" protocol.DATA_Message_EditCursor (&45D85)
Data in block :
  + 20	reserved
  + 24	<Job handle=>wimp_umExtEditJobHandle>
  + 28	<Flag word=>wimp_umExtEditFlags>
  + 32	New cursor position*
  + 36	New start of selection*
  + 40	New end of selection*
  + 44	Old cursor* (reply only)
  + 48	Old start of selection* (reply only)
  + 52	Old end of selection* (reply only)

This message is sent by a client who wishes the editor to position it's�cursor exactly. The reply is then rturned by the editor to indicate the old cursor, start and end positions.

All data has positions starting with the first unit as 1, the next as 2 and so on. To position a pointer before the start of the data use 0, and after the end use -2.

{fH4}Special cursor meanings{f}
To leave a field unchanged it should use -1, therefore three -1's will read the current position of the cursor. If there is no concept of cursor or selection then the appropriate fields must be set to -1 by the editor. The editor should never return -2 as a position.

Unit meanings are different depending on the filetype, click <here=>Wimp_umExtEditCursorUnits> for details.
DATA�Message_DataOpen  (5)
Extra data in block:
  20	Window handle of directory viewer
  24	unused
  28	x offset of icon clicked
  32	y ----------"-----------
  36	0
  40	filetype
  44	full pathname

This message is broadcasted when the user doubleclicks on a file. If the receiver wants to load the file, he should acknowledge this message by returning a <DataLoadAck=>wimp_um4> message.
If no one acknowledges the message, the filer will try to run it.DATAKMessage_HelpRequest (&502)
Extra data in block :

 20	Mouse x
 24	Mouse y
 28	Button state
 32	Window handle (-1 if no window)
 36	Icon handle   (-1 if no icon)
 
The !Help application sends out this message.

If you want to give some simple help on the given window/icon, then reply with a <HelpReply=>wimp_um503> message.DATA:Message_HelpReply (&503)
Extra data in block :

 20..	Help-string

This message is sent by an application in reply to a <HelpRequest=>wimp_um502> message.

Max length = 256-20-1 = 235 chars. String is ended with any control char. <Control codes=>Wimp_UM503Codes> may be used under RO3 !Help or !QuickHelp. DATAuMessage_RamFetch (6)
Data in block:
20	Buffer address where receiver should put data.
24	size of said buffer.DATA�Message_RamTransmit (7)
extra data in block:

20	Buffer address from RamFetch message.
24	no of bytes written to buffer.

After recieving a RamFetch message, you write data to buffer, using <Wimp_TransferBlock>, and then send back this message.DATA=Message_PreQuit (8)
Extra data in block :
 + 20 flag. 0 if closedown, not if single-quit

This message is broadcasted when Ctrl-Shift F12 is pressed. It is also sent to a specific task, when the user tries to quit it from the task display menu.

If you have no objections to being killed, then ignore this message, and you will eventually receive a Quit message.

If you object to being killed (unsaved data..), you should <acknowledge=>wimp_sendmessage3> this message, and then open a dialogue box asking the user what he wants to do. If he selects to quit and the 'flag' was zero, you are supposed to restart the closedown sequence by emitting a Ctrl-Shift F12 (508), using <Wimp_ProcessKey>.

The 'flag' is new under RO3. Under RO2 there was no way of knowing if only your task was being quitted, or the whole desktop.DATA6Message_PrintFile  (&80140)
extra data in block :

20	destination	window handle
24	 		icon handle
28	 		screenx
32	 		screeny
36	estimated size
40	<filetype=>Filetypes:!Root> of data
44	proposed leafname, 0-terminated

This message is sent by !Printers when it receives a DataSave or PrintSave message. The task can do the following :

  *	Ignore. !Printers will send <DataSaveAck=>wimp_um2>, to save the file for later printing.
  *	Respond with <WillPrint=>wimp_um80141>, to send data to Printer:
  *	Put data in Printer$Temp and send <DataLoad=>wimp_um3>.DATATaskWindow_Input  (&808C0)
 + 20	Size
 + 24	Data..

This message is used to give input data (key presses) to the child task. Larger amounts of data can be sent with the Data Transfer Protocol. Just send a DataSave message, and wait for RamFetch message..DATA�TaskWindow_Output  (&808C1)
 + 4	Child's task id
 + 20	size (max 232 bytes)
 + 24	data

This message is sent when child has produced output data. Acknowledge message, and display data.DATA(TaskWindow_Ego  (&808C2)
 + 4	Task ID of child.
 + 20	Parent's txt-handle.

This message is sent to your task after you've issued a *StartTask .... -txt &xxxxxxxx  command. This is the first and last time the txt-handle will be used. From now on, the child's task-id will be used instead.DATAcTaskWindow_Morio  (&808C3)
No extra data

This message is sent to parent when child exits. DATAaTaskWindow_Morite  (&808C4)
No extra data

This message is sent by parent to kill child. DATA�TaskWindow_NewTask  (&808C5)
 + 20 Command to execute

This message is broadcasted by the Taskwindow module when a *TaskWindow command have been executed without proper -task and -txt flags. If receiving task can support taskwindows, it should acknowledge this message, and Wimp_StartTask

   "\<String at +20> xxxxxxxx yyyyyyyy "

   xxxxxxxx	: Your task handle   (hex)
   yyyyyyyy	: Unique texthandle  (hex)

Note the extra space after texthandle.DATAdTaskWindow_Suspend  (&808C6)
No extra data

This message is sent by parent to suspend child.DATAyTaskWindow_Resume  (&808C7)
No extra data

This message is sent by parent to resume a previously suspended child.DATA�Message_OLEFileChanged  (&80E1E)
Extra data in block :
 + 20	Message type :
0
 + 24	Session number
 + 28	Full pathname of data
1
 + 24	Session number (ie. pathname is unchanged)DATAZMessage_OLEOpenSession  (&80E21)
Extra data in block :
 + 20	Unique Name (16 byte, padded with zeros)
 + 36	Window handle
 + 40	x
 + 44	y
 + 48	Session type :
0 or 1 (edit file)
 + 52	Session number
 + 56	Filetype
 + 60	Full pathname
2 (re-edit file)
 + 52	Session number

Session type 0 is used initially/normally. If this returns unanswered, then client should try to run the server, and then send this message again, but with type 1. If this also returns the server was either not started or is not capable of handling the request.

Session type 2 is used when a link already is established.DATAdMessage_OLEOpenSessionAck  (&80E22)
No extra data.

This is returned in reply to an OLEOpenSession message. Server has loaded file, and has established the link.

What should happen if server gets an error while reading file? (Protection or not enough memory) It should probably send this message immediately followed by an OLECloseSession message.DATA�Message_OLECloseSession  (&80E23)
Extra data in block :
 + 20 Message type:
 + 24 Session number (-1 for all)

This message informs one or all clients that one or all of the servers sessions are terminated (Task quit or click on close window)DATA�Message_PaletteChange (9)
This message is broadcasted by the palette utility when the RGB value for one or more physical colours have changed.

That is what happens in non-256 colour modes. In 256 colour modes, it is not the physical colour which changes, but only the mapping from logical to physical colour. In that case the palette utility itself forces a redraw of the whole screen.DATAdMessage_SaveDesktop (10)
+16	Message_SaveDesktop (10)
+20	(word) file handle of desktop file being written.
+24	flag word: all bits unused but reserved (ie. set to 0)

This message is broadcasted by the task manager when the user has selected "Save boot file", or on exit from desktop if the system variable SaveDesk$File has a value (a pathname..)DATAExternal Edit Protocol    
#Align Centre
{*}Designed by <Jason Williams=>Wimp_UMExtEditModerator>{*}
Version 1.02S, 30 Mar 1996 (from 1.02, 1 Jan 1993)
#Align

The protocol consists of these five messages :
    
   <Message_EditRq=>wimp_um45d80>
   <Message_EditAck=>wimp_um45d81>
   <Message_EditReturn=>wimp_um45d82>
   <Message_EditAbort=>wimp_um45d83>
   <Message_EditDataSave=>wimp_um45d84>
   <Message_EditCursor=>wimp_um45d85>

The purpose of the protocol is to allow one task (the "<Clients=>Wimp_UMExtEditClient>") to send its data to another task (the "<Editor=>Wimp_UMExtEditEditor>") for editing, without forcing the user to "drag things all over the place.."

Applications supporting the protocol include :
Clients :
#Indent 2
#Table Lines 2
!OLRead
!JFAddress
!NoteIt
!FidoMail (barely)
<!MakeARPC=>Filetypes:_!MakeARPC>
#EndTable
#Indent

Editors :
#Indent 2
#Table Lines 2
<!StrongED=>Filetypes:_!StrongEd>
<!Zap 1.20=>Filetypes:_!Zap>
<!DJF-JRF=>Filetypes:_!DJF-JRF>
<!FormEdExt=>Filetypes:_!FormEdExt>
#EndTable
#Indent

How useful this protocol will be, depends on how many tasks support it, both as "Client" and "Editors".
DATA�NewsBase message protocol
The message numbers used are provisional. An application for official message numbers has been made to Acorn. Client programs should be written with this in mind, so these can be easily changed!

Three messages are defined:
#Indent 2
<NewsBase_Command=>wimp_umNB_Command>	used by a client to issue commands or requests to NewsBase
<NewsBase_Reply=>wimp_umNB_Reply>	used by newsbase to respond
<NewsBase_Update=>wimp_umNB_Update>	broadcast by newsbase to inform clients of changes to the news database
#Indent 0

The commands implemented are based very loosely on the NNTP commands documented in RFC977 (more in spirit than in form). While the NewsBase commands are primarily designed to retrieve news from a locally-held news database managed by NewsBase, their nature should make it possible for future versions of newsbase to act as a mediator between a client reader and a directly-connected nntp server (through ethernet and Acorn TCP/IP, or whatever) - ie, one of the purposes of the command set is to act as an abstraction layer between the reader program and the source of news.

(This data extracted from the Docs.Messages file in !NewsBase by Justin Fletcher)
DATA)RO3 !Help codes
Code	Message
#Line
\\R	"Move the pointer right to "
\\G	"This option is greyed out because "
\\S	"Click SELECT to "
\\A	"Click ADJUST to "
\\T	"This is the "
\\W	"This window is "
\\D	"Drag SELECT to "
\\d	"Drag ADJUST to "
\\w	"window"
\\s	"SELECT"
\\a	"ADJUST"
|M	return
DIR$|||�F����K�?�Command�F�����?�ComCodes��F���{��?VReply��F���m���repcodes��F���u�?�Updatex�F����?QUpdTypes��F��� ��?NUpd0-1�F�����?wUpd2��F�����?HUpd3��F���ڻ�?XUpd4-54�F����ؑ?*Upd11`�F���1ܑ?-Upd10��F�����?�Com0t�F���4��?Com10��F���c�?�Com20��F�����?lCom30(�F����G�?'Com30NP�F���ud�?�Com40��F���ł�?�Com100��F������?�Com110��F����Ó?�Com120t�F����Г?�Com130(�F�����?Com140H�F����
�?�Com200@�F����(�?oCom210��F���-��com220��F���LU�?�Com230d�F���KX�?�Com240�F���]\�?�Com250�F���c��?�Com260d�F������?eCom270�F�����?}Com280L�F�����?�Com300�F���L&�?�Com310h�F���р�?1Com400��F������?.Com410�F������?1Com420�F���R��?�Com430��F����ݕ?�Com430N��F������?�Com440HF�����?�Com450�F���OE�?�Com460�F���o{�?CCom800�F���*��?Com900�F�����?+RepStatusF����B�?�Rep0�F���S�?�Rep10D	F���ņ�?4Rep20x	F������?6Rep30�	F���Q�?<Rep100�F���C�?�Rep110tF���3M�?�Rep200@
F���\�?�Rep210�
F����u�?Rep220�F����?�Rep400�F���E.�?=Rep440F����=�?aRep450|F����N�?�Rep460hF������?%Rep900DATA�NewsBase_Command
+20	<Command code=>wimp_umNB_ComCodes> + Reference number
	rest of block as defined by code

The command code is one 16-bit fields, and the reference number is the top 16 bits (to be supplied by the client application). The reference will be preserved by NewsBase in replies. This permits overlapping command-reply sequences issued by a client to be identified and followed.
DATA�NewsBase command codes
#Wrap Off
General Purpose Commands
#Indent 2
0	<NewsBase_StartUp=>wimp_umNB_Com0>
10	<NewsBase_ShutDown=>wimp_umNB_Com10>
20	<NewsBase_SetUser=>wimp_umNB_Com20>
30	<NewsBase_SiteInfo=>wimp_umNB_Com30>
40	<NewsBase_SetSiteInfo=>wimp_umNB_Com40>

#Indent 0
Newsgroup oriented commands
#Indent 2
100	<NewsBase_ListGroups=>wimp_umNB_Com100>
110	<NewsBase_NewGroups=>wimp_umNB_Com110>
120	<NewsBase_AddGroup=>wimp_umNB_Com120>
130	<NewsBase_RemoveGroup=>wimp_umNB_Com130>
140	<NewsBase_ExpireGroup=>wimp_umNB_Com140>

#Indent 0
Article oriented commands
#Indent 2
200	<NewsBase_ListArts=>wimp_umNB_Com200>
210	<NewsBase_ListArtsThreaded=>wimp_umNB_Com210>
220	<NewsBase_GetArticle=>wimp_umNB_Com220>
230	<NewsBase_LockArticle=>wimp_umNB_Com230>
240	<NewsBase_UnLockArticle=>wimp_umNB_Com240>
250	<NewsBase_DeleteArticle=>wimp_umNB_Com250>
260	<NewsBase_MoveArticle=>wimp_umNB_Com260>
270	<NewsBase_CopyArticle=>wimp_umNB_Com270>
280	<NewsBase_CancelArticle=>wimp_umNB_Com280>

#Indent 0
Posting/mailing commands
#Indent 2
300	<NewsBase_PostArticle=>wimp_umNB_Com300>
310	<NewsBase_MailArticle=>wimp_umNB_Com310>

#Indent 0
User oriented commands
#Indent 2
400	<NewsBase_ListUsers=>wimp_umNB_Com400>
410	<NewsBase_AddUser=>wimp_umNB_Com410>
420	<NewsBase_DeleteUser=>wimp_umNB_Com420>
430	<NewsBase_ModifyUser=>wimp_umNB_Com430>
440	<NewsBase_GetUserInfo=>wimp_umNB_Com440>
450	<NewsBase_ExamineForwarding=>wimp_umNB_Com450>
460	<NewsBase_ExamineVacation=>wimp_umNB_Com460>

#Indent 0
Queue control commands
#Indent 2
800	<NewsBase_ReEdit=>wimp_umNB_Com800>

#Indent 0
Miscellaneous commands
#Indent 2
900	<NewsBase_ClientPresent=>wimp_umNB_Com900>
DATAVNewsBase_Reply
+20	<Command response code=>wimp_umNB_RepCodes> + Reference number + <status=>wimp_umNB_RepStatus>
	rest of block as defined by code

NewsBase replies to <NewsBase_Command=>wimp_umNB_Command> with this message, returning the same groups, but with the least significant digit of the response code indicating the status.
DATA�NewsBase command response codes
General Purpose Commands
#Indent 2
0	<NewsBase_StartUpReply=>wimp_umNB_Rep0>
10	<NewsBase_ShutDown=>wimp_umNB_Rep10>
20	<NewsBase_SetUser=>wimp_umNB_Rep20>
30	<NewsBase_SiteInfo=>wimp_umNB_Rep30>
40	NewsBase_SetSiteInfo (success/failure only)

#Indent 0
Newsgroup oriented commands
#Indent 2
100	<NewsBase_GroupList=>wimp_umNB_Rep100>
110	<NewsBase_NewGroupList=>wimp_umNB_Rep110>
120	NewsBase_AddGroupOk (success/failure only)
130	NewsBase_RemoveGroupOk (success/failure only)
140	NewsBase_ExpireGroupOk (success/failure only)

#Indent 0
Article oriented commands
#Indent 2
200	<NewsBase_ArtList=>wimp_UMNB_Rep200>
210	<NewsBase_ArtThreadInfo=>wimp_UMNB_Rep210>
220	<NewsBase_GetArticle=>wimp_UMNB_Rep220>
230	NewsBase_LockArticleOk (success/failure only)
240	NewsBase_UnLockArticleOk (success/failure only)
250	NewsBase_DeleteArticleOk (success/failure only)
260	NewsBase_MoveArticleOk (success/failure only)
270	NewsBase_CopyArticleOk (success/failure only)
280	NewsBase_CancelArticle  (Undocumented, non-existant ?)

#Indent 0
Posting/mailing commands
#Indent 2
300	NewsBase_ArticlePosted (success/failure only)
310	NewsBase_MessageSent (success/failure only)

#Indent 0
User oriented commands
#Indent 2
400	<NewsBase_UserList=>wimp_UMNB_Rep400>
410	NewsBase_AddUserOk (success/failure only)
420	NewsBase_DeleteUserOk (success/failure only)
430	NewsBase_ModifyUserOk (success/failure only)
440	<NewsBase_GetUserInfo=>wimp_umNB_Rep440>
450	<NewsBase_ExamineForwarding=>wimp_umNB_Rep450>
460	<NewsBase_ExamineVacation=>wimp_umNB_Rep460>

#Indent 0
Queue control commands
#Indent 2
800	NewsBase_QueueEdit

#Indent 0
Miscellaneous commands
#Indent 2
900	<NewsBase_ClientPresent=>wimp_UMNB_Rep900>
DATA�NewsBase_Update
+20	<type of update=>wimp_umNB_UpdTypes>
	rest of block as defined by code

This is broadcast by NewsBase whenever one of the sections of the database is altered.DATAQNewsBase Update types
Type	Meaning
#Line
0	<Group created=>wimp_umNB_Upd0-1>
1	<Group deleted=>wimp_umNB_Upd0-1>
2	<Article created=>wimp_umNB_Upd2>
3	<Article deleted=>wimp_umNB_Upd3>
4	<User added=>wimp_umNB_Upd4-5>
5	<User deleted=>wimp_umNB_Upd4-5>
10	<Debatch finished=>wimp_umNB_Upd10>
11	<Queues updated=>wimp_umNB_Upd11>
DATANNewsBase Update type 0 and 1
+32	Name of newsgroup created or deleted
DATAwNewsBase Update type 2
+24	Article number
+32	Name of newsgroup created or deleted
x	From field
y	Subject fieldDATAHNewsBase Update type 3
+24	Article number
+32	Name of newsgroup
DATAXNewsBase Update type 4 and 5
+24	User's group number
+32	User name
x	User flags
DATA*NewsBase Update type 11
+24	Update type (0 = mail, 1 = news)
+32	Transport name, which update applies to

This is broadcast by Newsbase when a new outgoing mail or news file is queued. This is to permit external queue control applications to re-examine the queue and update their displays.
DATA-NewsBase Update type 10
no extra dataDATA�NewsBase_StartUp (0)
+24	minimum version of NewsBase supported

Broadcast by a client to indicate it requires support from newsbase. If no response received, the client may either complain, or attempt to start newsbase.DATANewsBase_ShutDown (10)
no extra data

Indicates that a client has finished a newsbase session. Currently has no effect.DATA�NewsBase_SetUser (20)
+24	Encryption type (0=none)
+32	Username (control-terminated)
n	Password (or null string)

Sets current username for the newsbase session.

Password field is currently ignored but will be used for network versions of newsbase. Encryption type indicates whether the password field is encrypted. Initially only type 0 (none) will be supported, but encryption will be added to avoid passing plaintext passwords over a network.
DATAlNewsBase_SiteInfo (30)
+24	<item number=>wimp_umNB_Com30N>

Requests site information from Newsbase.DATA'NewsBase_SiteInfo items
Item	Meaning
#Line
0	fully-qualified hostname
1	organization
2	current transport name
3	current transport type (either "batch" or "direct")
4	timezone
5	remote hostname
6	mail hostname (can be different from 0)
100	username control status
101	default expiry time
DATA�NewsBase_SetSiteInfo (40)
+24	<item number=>wimp_umNB_Com30N>
+32	new value string

Sets a value in the NewsBase settings.

NB. Not all items may be setDATA�NewsBase_ListGroups (100)
+32	group name or pattern

A list of active groups matching the given pattern is returned. Most common use will be to return all active groups (pattern "*").
DATA�NewsBase_NewGroups (110)
+24	date
+28	time (as a string ?)

Returns all newly-created groups since date/time. Date and time follow NNTP convention of yymmdd and hhmmss, though in numeric rather than ascii form.
DATA�NewsBase_AddGroup (120)
+32	group name or pattern

Adds group(s) to the active list. This is not the same as 'subscribing' a group for an individual user (which should be handled solely by the client program) - it adds the group(s) to the news feed. May not be supported or appropriate for all transport types.

For ka9q, if more than one newsfeed is present (multiple xxxGroup files), the group(s) are added to the largest file (it is assumed that this is the primary server).
DATA�NewsBase_RemoveGroup (130)
+32	group name or pattern

The inverse of the AddGroup command. May not be supported or appropriate for all transport types. Works ok for ka9q.
DATANewsBase_ExpireGroup (140)
+24	expiry time in days (-1 = default)
+32	group name or pattern

Causes newsbase to perform an expiry run on the specified group(s). Normally this function is performed automatically by NewsBase, but a command interface is included for completeness.
DATA�NewsBase_ListArts (200)
+24	first article number (0=first)
+28	last article number (0=last)
+32	group name

Returns a list of article numbers with associated "from" and "subject" header fields. Intended for display of article catalogues.
DATAoNewsBase_ListArtsThreaded (210)
+24	first article number (0=first)
+28	last article number (0=last)
+32	group name

Returns a list of article numbers with threading information. Replies take the form of one <Newsbase_Reply 200=>wimp_umNB_Rep200> message (from, subject and message-ID) and one <Newsbase_Reply 210=>wimp_umNB_Rep210> message for each article. 
DATANewsBase_GetArticle (220)
+24	article number
+32	file name

Returns a filename for the requested article. The filename returned can be used to directly load or copy the article, but should not be stored across <Wimp_Poll>s, as it may simply be a scrap file.

DATA�NewsBase_LockArticle (230)
+24	first article number (0=first)
+28	last article number (0=last)
+32	group name

Locks one or more articles to prevent expiry.
DATA�NewsBase_UnLockArticle (240)
+24	first article number (0=first)
+28	last article number (0=last)
+32	group name

Unlocks one or more articles to allow expiry.
DATA�NewsBase_DeleteArticle (250)
+24	first article number (0=first)
+28	last article number (0=last)
+32	group name

Deletes one or more articles, if articles are not locked, and if deletion is enabled.
DATA�NewsBase_CopyArticle (270)
+24	first article number (0=first)
+28	last article number (0=last)
+32	group name
x	destination folder name

Moves an article from one group to another. The command is only valid for email articles; news articles cannot be moved. If the destination folder does not exist, it is created (folders can only be created in the Email or Folders hierarchies).
DATAeNewsBase_CopyArticle (270)
+24	first article number (0=first)
+28	last article number (0=last)
+32	group name
x	destination folder name

Copies an article from one group to another. The command can be applied to news or mail. If the destination folder does not exist, it is created (folders can only be created in the Email or Folders hierarchies).
DATA}NewsBase_CancelArticle (280)
+32	group name(s)
x	message-ID string

Sends a cancel message for the given article ID.
DATA�NewsBase_PostArticle (300)
+32	file name

Posts an article. The file should contain an article complete with RFC-compliant headers.
DATA�NewsBase_MailArticle (310)
+32	filename

Sends a mail message. The file should contain a message complete with RFC-compliant headers.
DATA1NewsBase_ListUsers (400)
+32	pattern (null=return all)

Returns a list of valid usernames, with their group numbers and home directories. The home directory is a directory specific to that user which can be used to store configuration information, eg record of subscribed groups or read articles.
DATA.NewsBase_AddUser (410)
+32	user name

DATA1NewsBase_DeleteUser (420)
+32	user name

DATA�NewsBase_ModifyUser (430)
+24	<field to modify=>wimp_UMNB_Com430N>
+32	user name
x	new value of field

Modifies the user database.DATA�NewsBase User fields
Field	Contents
#Line
1	password
2	user number
3	group number
4	real name
5	home directory
6	shell

(most of these are, of course, meaningless for RISC OS, but it may prove useful to have them defined for some purposes).
DATA�NewsBase_GetUserInfo (440)
+24	<field to return=>wimp_UMNB_Com430N> or 0 for all information
+32	user name or pattern

Returns information about a user.

NB This is subject to change
DATA�NewsBase_ExamineForwarding (450)
+24	action (0=read, 1=set, 2=clear)
+32	user name
x	new value (if action=1)

Set or read forwarding information
DATA�NewsBase_ExamineVacation (460)
+24	action (0=read, 1=set, 2=clear)
+32	user name
x	message body filename (if action=1)

Set or read vacation message file.
DATACNewsBase_ReEdit (800)
+24	file type (0=mail, 1=news)
+28	reference number
+32	filename to re-edit

This message should be broadcast by a queue control program, when the user indicates they wish to re-edit an already-queued file. 

The reference number is generated by the queue control program, and will be returned by any Newsbase_Reply message requiring further action (such as deleting the original queue entry). This is intended to aid use with multiple re-edit sessions.

Note that while a re-edit session is in progress, the message should be locked in some way to prevent it from being sent. For ka9q, a file could be created in the "lock" directory. Other methods may be needed for other transport types.

Not used at present - may be discarded, as more complicated than necessary (see, eg, !Qedit for simpler method).
DATANewsBase_ClientPresent (900)
no extra data

This is sent by a client in reply to a <NewsBase_Reply ClientPresent=>wimp_umNB_Rep900> message - broadcast by newsbase prior to starting a newsreader.

This should be sent if you wish to prevent the client from loading.DATA+NewsBase_Reply status
Status	Meaning
#Line
0	Command executed (data as described)
1	Command ok, but cannot be performed for some reason
2	Command ok, but cannot be performed just now (try later)
9	Bad command

In cases 1, 2 and 9 block+32 contains a descriptive message detailing the error.
DATA�NewsBase_StartupReply (0)
+24	actual NewsBase version
+28	flags

Flags currently undefined but could indicate to the client such information as whether article fetch by number or ID is preferred (in general both will be supported, but one will carry a greater speed penalty).

flag bit 0 = username control enabled.

NewsBase will also broadcast this message automatically on startup.
DATA�NewsBase_Shutdown (10)
+32	descriptive string

NewsBase also broadcasts this message if it shuts down due to an error or user request (ie Quit from the iconbar menu).
DATA4NewsBase_SetUser (20)
+32	Current user name
DATA6NewsBase_SiteInfo (30)
+32	information string
DATA<NewsBase_GroupList (100)
+24	lowest numbered article in group
+28	highest numbered article in group
+32	estimated number of articles in group
+36	news group name
n	group flag string (control terminated)

Stream of messages, one per article. End of list is signalled by a null string and low/high articles set to zero. Otherwise, a first article number of zero indicates that no articles are present in the group.

Currently, the locked status is the only flag returned - either "L0" or "L1" - to indicate unlocked (client is allowed to delete articles) or locked.
DATA�NewsBase_NewGroupList (110)
+32	nws group name

Stream of messages, one per article. End of list is signalled by a null string.
DATA�NewsBase_ArtList (200)
+24	article number
+28	article date
+32	From: field
n	Subject: field
m	Message-ID: field

Stream of messages, one per article. End of list is signalled by article number 0.
DATA�NewsBase_ArtListInfo (210)
+24	article number
+28	undefined
+32	reference list (string)

Stream of messages, one per article. End of list is signalled by article number 0.
DATANewsBase_GetArticle (220)
+24	article number
+28	article size
+32	filename (control terminated)
n	article flag string (control terminated)

Currently, the locked status is the only flag returned - either "L0" or "L1" to indicate unlocked or locked.

DATA�NewsBase_UserList (400)
+24	user's group number
+28	flags
+32	username
n	home directory

Stream of messages, one per user, with end of list indicated by 0,0,"",""

Flags are defined:
bit 0 - password is required.
DATA=NewsBase_GetUserInfo (440)
+32	requested information
DATAaNewsBase_ExamineForwarding (450)
+32	username
x       forwarding address or null if unsetDATA�NewsBase_ExamineVacation (460)
+32	username
x       message filename, or null if unset

The template file returned should not be altered directly by a client - future versions of newsbase may store the information differently!
DATA%NewsBase_ClientPresent (900)
no extra data

This Newsbase_Reply message is broadcast by newsbase before attempting to start a new client application. If a client is loaded and wishes to prevent another from being started, it should reply with <NewsBase_Command 900=>wimp_UMNB_Com900>.
DATAMessage_WindowInfo  (&400CC)
 + 20	window handle
 + 24	reserved (0)
 + 28	sprite name (minus the ic_ bit)
 + 36	title to use (as short as possible)
 
This message is sent when one of your windows is iconised, by the iconiser to find out which sprite and name to give the icon.
DATAMessage_WillPrint  (&80141)
This message is sent to !Printers on receipt of a <PrintFile=>wimp_um80140> message to indicate that printing will occur directly to Printer:

Use of this message is depreciated, and <PrintTypeOdd=>wimp_um80145> protocol should be used in preference.DATAMessage_PrintSave  (&80142)
extra data in block : (as <DataSave=>Wimp_um1>)

20	unused
24	unused
28	unused
32	unused
36	estimated size
40	<filetype=>Filetypes:!Root> of data
44	proposed leafname, 0-terminated

This message is sent to !Printers to initiate a print session. This should be sent recorded delivery (code 18), and if it bounces then you should complain that no printer driver is present.

Printers will respond with one of :
 �	<PrintError=>wimp_um80144> if the printer is busy.
 �	<PrintFile=>wimp_um80140> (for compatability with Risc OS 2 applications).
 �	<PrintTypeOdd=>wimp_um80145> if it doesn't know how to print the file.
 �	<DataSaveAck=>wimp_um2> if the file should be saved for queueing (later, a PrintTypeOdd message will be broadcast).DATA�Message_PrintInit  (&80143)
This message is sent by !Printers when it has loaded. All other printer drivers should quit quietly on receiving this message.

The PRM's do not specify what should happen if the active printer driver is 'actively' printing. I would recommend that such drivers should complain and send <PreQuit=>wimp_um8> followed by <Quit=>wimp_um0> to the originator of such messages.DATA�Message_PrintError  (&80144)
extra data in block:

20	<error number=>.errors>
24	error message

This message is sent by !Printers if an error occurs during printing. If the length of the block is 20 then you should assume that the printer is busy and give a message to that effect - this is only applicable to Risc OS 2.
#subpage errors
PrintError errors
error	meaning
#Line
1	Can only print from applications when a printer has been selected.
DATAlMessage_PrintTypeOdd  (&80145)
extra data in block:

40	<filetype=>Filetypes:!Root> of data
44	filename

This message is sent by !Printers when it doesn't know how to print the file. The filetype and filename cannot be relied on if we have just come from a <PrintSave=>wimp_um80142> message, though why the PRM's state this, I'm not sure.

If an application knows how to print that filetype (doh, how can you do this if you can't rely on it ?) then it should respond with <PrintTypeKnown=>wimp_um80146> and either :
 �	Print the file to Printer:
 �	Output the file (does this mean print again ?) to Printer$Temp /before/ responding with PrintTypeKnown.

If it does not know the type, then it should ignore the message and await a <DataSaveAck=>wimp_um2> (which may never arrive if another application knows how to print the file) to queue the file for later printing.
DATA�Message_PrintTypeKnown  (&80146)
This message is sent to !Printers to indicate that an application has printed, or is printing (is that right ?) a file.DATA�Message_SetPrinter  (&80147)
This message is sent by !Printers to indicate that the printer settngs or selection has changed.DATA�Message_PSPrinterQuery  (&8014C)
extra data in block :
20	buffer address (or zero)
24	buffer size

This message is sent by !FontPrint to !Printers to ask for information. If the buffer size is not zero then the data placed in the buffer should be :
�	Current printer name
�	Current printer type
�	Pathname to printer font file

!Printers should always respond by placing the size of the buffer in the block and sending <PSPrinterAck=>wimp_um8014c>DATApMessage_PSPrinterAck  (&8014D)
extra data in block :
24	buffer size

This message is sent by !Printers to !FontPrint to notify that it has either filled in the block required by <PSPrinterQuery=>wimp_um8014c>, or to tell it the size of the block required.

If !FontPrint does not receive this message then it should report an error as no printer is installed.
DATA�Message_PSPrinterModified  (&8014E)
This message is sent by !FontPrint when the font list file has changed. The printer driver should re-read the file on receipt.DATA�Message_PSPrinterDefault  (&8014F)
This message is sent by !FontPrint when the font list file should be reset to it's default state. The printer driver should respond with <PSPrinterDefaulted=>wimp_um80150>.DATA�Message_PSPrinterDefaulted  (&80150)
This message is sent by !Printers when the font list file has been reset. This is usually in response to <PSPrinterDefault=>wimp_um8014F>.DATA�Message_PSPrinterNotPS  (&80151)
This message is sent by !Printers if it receives <PSPrinterQuery=>wimp_um8014C> and the currently selected printer is not postscript.DATA�Message_ResetPrinter  (&80152)
This message is sent to !Printers to ensure that the printer settings are correct for the currently selected printer.DATAdMessage_PSIsFontRunning  (&80153)
If !FontPrint is running it will acknowledge this message.DATAExternal Edit clients
The client application is defined as that which initiates the editing session, ie that which asks the editor for a new session.

The client application decides (usually at the request of the user) that some data needs to be edited. Unable to supply this function itself, it broadcasts to all other applications requesting an External Editing session (<EditRq=>Wimp_UM45d80>).

If no reply is recieved (the message bounces), then the client may take any appropriate action (for example, run an editor (Using the <Alias variable=>Wimp_UMExtEditVariable>) and then re-broadcast the request), but if the edit is not possible, the client will inform the user with an error message indicating that the edit is not possible.

If a reply is received (<EditAck=>Wimp_UM45d81>), then a window will have been opened, and the user may now edit the (blank) data in this window. The client now has the following options:

�	By starting a data transfer to the editor (<EditDataSave=>Wimp_UM45d84>), the client can insert some data at the �current  position� in the edited data; this can be done at any time, but is mainly intended to supply an initial chunk of data to be edited. For example, a compiler might make Edit display a source code file if an error has been found during compilation.

�	By sending an appropriate message (<EditCursor=>Wimp_UM45d85>), the client can set a selection or cursor position in the edited data. For example, the compiler might highlight the line of code containing the error.

�	Another message (<EditReturn=>Wimp_UM45d82>) may be sent by the client at any time to request that the data be returned. For example, the compiler could include a button/menu option somewhere which says 'recompile', which will automatically retrieve the code being edited and recompile it.
DATA�External Edit editors
The editor application is defined as that which accepts editing session messages, ie that within which the editing of the object takes place.

Upon receipt of an external edit request broadcast (<EditRq=>Wimp_UM45d80>), the editor checks the <data type=>wimp_UMExtEditDatatypes>, and if it is able to edit the data, it opens a suitable window (on a 'blank' datafile) and replies to the  message (with <EditAck=>Wimp_UM45d81>). 

It will allow the user to edit the data (unless the request was for read-only data), and can also handle some extra functions:

� If a data transfer is started by the client (<EditDataSave=>Wimp_UM45d84>), it will insert the new data  into the ExtEdit data, at the current 'cursor' position (usually the end of the file).

� If the client requests the data back (<EditReturn=>Wimp_UM45d82>), or if the user chooses the 'save' menu option, a reverse data transfer will be initiated back to the client.

� Closing the ExtEdit window should abort the transfer /without/ returning the data to the client.

� If the client request a new selection to be highlighted (<EditCursor=>Wimp_UM45d85>), then the editor should move to the location specified and display the higlighting as required.DATA�Job Handle
The Job Handle consists of two 16 bit values :
  Bit 0-15	: "Client" handle
  Bit 16-31	: "Editor" handle

Both values should be non-zero.DATAFlag Word
Bit	Meaning when Set
#Line
 0	Continuous editing. Don't close after save.
 1	Selection. EditReturn : Send selection only.
 2	Read-Only.
 3	Immediate Playback. "Play sample & quit"
 4	Adjust selection.
 
Bits 5 to 31 are reserved and should be set to 0.DATA Unit meanings
#Wrap Off
Filetype			Unit represents
#Line
<Text=>Filetypes:FFF>		Character
<Command=>Filetypes:FFE>	Character
<TaskObey=>Filetypes:FD7>	Character
<TaskExec=>Filetypes:FD6>	Character
<Obey=>Filetypes:FEB>		Character
<BasicTxt=>Filetypes:FD1>	Character
<Data=>Filetypes:FFD>		Byte offset
<BASIC=>Filetypes:FFB>		Byte offset
<Sprite=>Filetypes:FF9>		Sprite number
<Palette=>Filetypes:FED>	Colour number as index into standard file format
<DrawFile=>Filetypes:AFF>	Draw object
<ARMovie=>Filetypes:AE7>	Animation frame number
DATAfData type word
The Data type word consists of two 16 bit values :
  Bit 0-15	: Standard Acorn <Filetype=>Filetypes:!Root>
  Bit 16-31	: "<Subtype=>Wimp_UMExtEditSubtypes>"

Subtype 0 means that the filetype says it all, while subtypes &0001 to &04FF are reserved for the user. Applications for general distribution should request a proper allocation.DATAExternal Edit subtypes
The official allocation of subtypes has yet to be decided, but as only one subtype is know to the author, this is not really a problem.

Datatype	File contents		Owner
#Line
012C0FFF	DJF tune (DJF-JRF)	<Justin Fletcher=>filetypes:Authors_JustinFletcher>DATA�External Edit protocol moderator
Currently, Jason Williams is working for Computer Concepts and has implied that he no longer wishes to support the External Edit protocol. Thus, the protocol has not advanced since much since its creation 2 years ago.

<Justin Fletcher=>filetypes:Authors_JustinFletcher> has taken up moderation of this protocol, and anybody who has ideas for the protocol, or wishes more information on it should contact him.DATA�Wimp_AddMessages (&400F6)
#Parent Wimp_
=>	R0 =	Pointer to array of <message codes=>wimp_sendmessage0> (0-terminated)

Extends the set of user messages that the task gets. The Wimp adds the messages to those given in R3 in <Wimp_Initialise>.DATA�Wimp_RegisterFilter (&400F5)
Used by the Filter Manager to communicate with the Wimp

Do not use. Use the <FilterManager=>Filter_> SWIs instead.DATA�Wimp_RemoveMessages (&400F7)
#Parent Wimp_
=>	R0 =	Pointer to array of <message codes=>wimp_sendmessage0> (0-terminated)

Removes the messages in the array the set of user messages that the task gets.

See also <Wimp_AddMessages>.DATA�Wimp_TextOp (&400F9)
=>	R0 =	reason code
	 	 1	<calculate width of string=>.1>
	 	 2	<plot text=>.2>
other registers depend on R0

Operations on text in the current desktop font. (Only for RiscOS 3.5 and later)

See also: <Wimp_ReadSysInfo> with R0=8
#
#Subpage 1
Wimp_TextOp 1 (&400F9)
=>	R0 =	1
	R1 =	Pointer to string
	R2 =	Number of characters to scan,
	 	or 0 for whole string

\<=	R0 =	String width in OS units

Calculates the width of a (sub)string, if plotted in the current desktop font. Desktop font can be outline font or old BBC-type font.
#
#Subpage 2
Wimp_TextOp 2 (&400F9)
=>	R0 =	2 + flags:
	 	 	Bit	Meaning
	 	 	30	Vertically justify, so baseline of characters is at same height as when using system font
	 	 	31	Right-justify 
	R1 =	Pointer to string
	R2 =	-1 (?)
	R3 =	-1 (?)
	R4 =	X coordinate
	R5 =	Y coordinate

Plots a string in the current desktop font. Prior to plotting, the font colours are set (with <Wimp_SetColour>).DATA?Wimp_DragBox  (&400D0)
#Parent Wimp_
=>	R1 =	pointer to <block=>.block>, or -1 to cancel drag

This SWI initiates a drag. A drag can span several calls to Wimp_Poll, so the task must remember what is being dragged (and why :-).

Terminated drag is reported by Wimp message 7.
#
#Subpage block
Block describing drag
 0	Window handle (for dragtypes 1-4 only)
 4	<Dragtype=>.dragtype>
 8	Min x of initial dragbox
 12	Min y
 16	Max x
 20	Max y

For types 5-11 only :

 24	Min x of parentbox
 28	Min y
 32	Max x
 36	Max y

For types 8-11 only :

 40	R12 value for userroutines
 44	Address of drawbox routine
 48	Address of removebox routine
 52	Address of movebox routine (or \<0 if none)
#
#Subpage dragtype
Dragtypes
 1	Drag window position
 2	Drag window size
 3	Drag horizontal scroll
 4	Drag vertical scroll
 5	Drag fixed size box
 6	Drag rubberbox
 7	Drag point
 8	Drag fixed size userbox
 9	Drag rubber userbox
 10	As 8, but don't cancel when buttons are released
 11	As 9, but don't cancel when buttons are released

Dragtype 1 is useful for dragging windows with no titlebar.DIR$��$GE���ؿ�CaretPosition(HF���t3E4IconState\IF����.��dMenuState�JF���]=%PointerInfo�LE���
!�pointerinfo0`ME���C�cpointerinfo1�NE������WindowInfopPE�������WindowOutlinedQF���w�*ywindowoutline0�QE������WindowStatetSF�����A��RectangleDATAWimp_GetCaretPosition  (&400D3)
#Parent Wimp_
=>	R1 = pointer to block

\<=	block contains :
	  0	window handle (-1 if off)
	  4	icon handle, or -1
	  8	x offset
	  12	y offset
	  16	<height + flags=>wimp_carethf>, or -1
	  20	index into string, or -1DATA4Wimp_GetIconState  (&400CE)
#Parent Wimp_
#Wrap Off
=>	R1 = pointer to block :
	  0  Window handle
	  4  Icon handle

\<=	On exit the block will also contain :
	  8  32-byte <icon block=>wimp_iconblock>.
#Wrap On

If you want to search for an icon with particular flag settings, use <Wimp_WhichIcon>.DATAdWimp_GetMenuState  (&400F4)
#Parent Wimp_
#Wrap Off
=>	R0 =	0 to return the current menu tree state
	 	1 to return tree for window/icon pair
#Wrap
	R1 =	buffer for result
	R2 =	window handle of menu if R0=1
	R3 =	icon handle of entry in menu if R0=1

This SWI returns a list of numbers, same as the one you get after a <menu selection=>wimp_poll9>.DATAWimp_GetPointerInfo  (&400CF)
#Parent Wimp_
=>	R1 = pointer to block
\<=	R0 corrupted ( = mouse x ? )
	Block contains :
	  0	Mouse x
	  4	Mouse y
	  8	<Button state=>wimp_getpointerinfo0>
	  12	Window handle (-1 for backgr, -2 for iconbar)
	  16	<Icon handle=>wimp_getpointerinfo1>
	  
This would appear to return not the current mouse state but its state when the last <Wimp_Poll> was executed. This means that it is perfectly safe to use it after a long menu click delay to recreate the menu or as a means of dragging boxes.DATA�Button state
Bit	Meaning when set
#Line
0	Right button pressed
1	Middle button pressed
2	Left button pressed

3-31 are reservedDATAcIcon handle
If positive, then it really is an icon handle.
If negative, it means :
 -1	Work area
 -2	Back icon
 -3	Close icon
 -4	Title bar
 -5	Toggle size icon
 -6	Scroll up arrow
 -7	Vertical scrollbar
 -8	Scroll down arrow
 -9	Adjust size icon
 -10	Scroll left arrow
 -11	Horizontal scrollbar
 -12	Scroll right arrow
 -13	The outer window frameDATA�Wimp_GetWindowInfo  (&400CC)
#Parent Wimp_
=>	R1 = pointer to block containing window handle

\<=	block contains
	  0	Window handle
	  4..	<Window block=>wimp_windowblock>

This SWI returns complete details of the given windows state, including any icons created after the window itself.

If bit 0 of R1 is set, then the icons are *not* returned.. (R1 is normally a word-aligned address where bit 0 and 1 are both zero)DATA�Wimp_GetWindowOutline  (&400E0)
#Parent Wimp_
=>	R1 = block containing window handle
\<=	Block at R1 <updated=>wimp_getwindowoutline0>

This SWI returns the coordinates of a rectangle which completely covers the window, borders and all.DATAyBlock :
#Wrap Off
0	Window handle
4	Bounding box	minx (incl)
8	 		miny (incl)
12	 		maxx (excl)
16	 		maxy (excl)DATA�Wimp_GetWindowState (&400CB)
#Parent Wimp_
=>	R1 = pointer to block which contains window handle.

\<=	Block at R1 contains :
	  0	Window Handle
	  4	Visible area minimum x
	  8	Visible area minimum y
	  12	Visible area maximum x
	  16	Visible area maximum y
	  20	Scroll x offset
	  24	Scroll y offset
	  28	Handle to open window behind (-1=top,-2=bottom)
	  32	<Window flags=>wimp_windowflags>DATA�Wimp_GetRectangle  (&400CA)
#Parent Wimp_
=>	R1 =	pointer to block containing window handle
\<=	R0 =	0 if no more
	Block at R1 is <updated=>.block>

This SWI returns info of the next rectangle to be redrawn.
#
#Subpage block
Rectangle to be redrawn
0	Window handle
4	Visible area	minx (incl)
8	 		miny (incl)
12	 		maxx (excl)
16	 		maxy (excl)
20	Scrollx
24	Scrolly
28	Redraw rect	minx (incl)
32	 		miny (incl)
36	 		maxx (excl)
40	 		maxy (excl)DIR$LL�VF����<Q)�CaretPosition0XE���4��Colour�XE������ZExtent$ZE�������FontColours�ZF���tG�IconState�\G���:�
Mode�]E���[��2PointerShape�^F���	`��Palette�`G����
�WatchdogStateDATA�Wimp_SetCaretPosition  (&400D2)
#Parent Wimp_
=>	R0 = window handle (-1 to turn off)
	R1 = icon handle, or -1
	R2 = x offset
	R3 = y offset
	R4 = <height + flags=>wimp_carethf>, or -1
	R5 = index into string, or -1

This SWI moves caret to a new position.
If the caret is moved to a new window, a LoseCaret message is sent to the owner of the old window, and a GainCaret message is sent to the owner of the new one.DATA�Wimp_SetColour  (&400E6)
#Parent Wimp_
=>	R0 :	bits	0-3 Wimp colour
	 	bits	4-6 GCOL action
	 	bit	7	0 for foreground,
	 	 	 	1 for backgroundDATAZWimp_SetExtent (&400D7)
#Parent Wimp_
=>	R0 = window handle
	R1 = pointer to block

	R1	+0	new workarea min x
	 	+4	new workarea min y
	 	+8	new workarea max x
	 	+12	new workarea max y

Visible workarea must be wholly within new workarea extent.

Workarea extent must correspond to a whole number of pixels, or strange effects may occur.DATA�Wimp_SetFontColours  (&400F3)
#Parent Wimp_
=>	R1 = Font background colour
	R2 = Font foreground colour

This SWI sets up the anti-aliased font colours, from the two supplied wimp-colours.DATA�Wimp_SetIconState  (&400CD)
#Parent Wimp_
=>	R1 = pointer to block :
	  0	Window handle (-1,-2 for iconbar)
	  4	Icon handle
	  8	EOR word
	  12	Clear word

This SWI sets the icon's <flags=>wimp_iconflags> as follows :
  new = (old BIC clear_word) EOR EOR_word

#Tab
 C	E	Effect
#Line
 0	0	Preserve bit
 0	1	Toggle bit
 1	0	Clear bit
 1	1	Set bit

This SWI also causes the icon to be redrawn, even if no bits are changed.DATAWimp_SetMode  (&400E3)
#Parent Wimp_
=>	R0 = Mode number, or pointer to <Mode Selector=>Wimp_ModeSelect>
<=	Screen updated.

This SWI changes the display mode used by Wimp. Palette and mouse-pointer are reset. Screen memory is reallocated, and screen rebuilt.
DATA2Wimp_SetPointerShape
#Parent Wimp_
=>	R0 = Shape number (0 to turn off)
	R1 = ptr to shape-data (-1 for no change)
	R2 = width in pixels (multiple of 4)
	R3 = height in pixels
	R4 = active point x offset
	R5 = active point y offset

This SWI is outdated.
New programs should use <Wimp_SpriteOp>,36.DATA�Wimp_SetPalette  (&400E4)
#Parent Wimp_
=>	R1 = 20-word <palette block=>.block>

This SWI reprograms the Wimp-palette. In 16-colour modes, the video-palette is also reprogrammed, and in other modes the Wimp's colour lookup table may change. => You must force a redraw of screen.
#
#Subpage block
Palette block
  0	Wimp colour 0
  4	Wimp colour 1
  .
  .
 60	Wimp colour 15
 64	Border colour
 68	Pointer colour 0
 72	Pointer colour 1
 76	Pointer colour 2
 
All entries have format &BBGGRR00DATA�Wimp_SetWatchdogState  (&400FA) (3.5)
#Parent Wimp_
=>	R0 =	state
	 	  0 : turn Watchdog off
	 	  1 : turn Watchdog on
	R1 =	codeword (must be the same for off as for on)

Switches Watchdog protection (Alt-Break) on and off.DIR$���cF�����_N�!Root\gE������1lhE���
���10`jE����n�"11�kE���Ui�l12�lE���Gc�2�nE����Z�3pE����W�d4dqE���-R�:5�sF����úV�6ptE����6�87�uF����P�80wF���o�PJr8a�yE�����94{F�����_N>Idlet|F���p�GmaskDATA�Wimp_Poll (&400C7)
#Parent Wimp_
=>	R0 = <mask=>wimp_pollmask>	\<=	R0 = reason code
	R1 = * 256 byte block		 	R1 = Block contains return data.
	R3 = pointer to pollword *in RMA*

Reason Codes :

#Table 9 30
   0    No Reason
   1    <Redraw Window=>wimp_poll1>
   2    <Open Window=>wimp_poll2>
   3    <Close Window=>wimp_poll3>
   4    <Pointer Leaving Window=>wimp_poll4>
   5    <Pointer Entering Window=>wimp_poll5>
   6    <Mouse Click=>wimp_poll6>
   7    <User Drag Box=>wimp_poll7>
   8    <Key Pressed=>wimp_poll8>
   9    <Menu Selection=>wimp_poll9>
  10    <Scroll Request=>wimp_poll10>
  11    <Lose Caret=>wimp_poll11>
  12    <Gain Caret=>wimp_poll12>
  13    Pollword non-zero
  14-16 Reserved
  17    <User Message=>wimp_sendmessage2>
  18    <User Message Recorded=>wimp_sendmessage2>
  19    <User Message Acknowledge=>wimp_sendmessage2>
#EndTable

Priority : Highest: 17-19  Next: 1-6,8,9  Then: the rest  Lowest:0

Related SWIs : <Wimp_PollIdle>DATARedraw Window Request (1)
Returned block contains :
   0  Window handle

This indicates that some of the window is out of date, and needs to be redrawn. You should enter an update loop: First call <Wimp_RedrawWindow>, and then call <Wimp_GetRectangle> until done.DATA�Scroll Request (10)
Returned block contains :
  0	Window handle
  4	Visible area minimum x
  8	Visible area minimum y
  12	Visible area maximum x
  16	Visible area maximum y
  20	Scroll x offset
  24	Scroll y offset
  28	Handle to open window behind
  32	Scroll x direction
  36	Scroll y direction

Scroll directions :
  -2	Page Left/Down
  -1	Left/Down
   0
   1	Right/Up
   2	Page Right/Up

You use the scroll directions to update the scroll offsets, and then you do a <Wimp_OpenWindow>.DATA"Lose Caret  (11)
Returned block contains :

  0	Window handle that had focus
  4	icon handle, or -1
  8	x offset
  12	y offset
  16	<height + flags=>wimp_carethf>, or -1
  20	index into string, or -1

This message is sent to window's owner when caret moves away from current window.DATAlGain Caret  (12)
Returned block contains :

  0	Window handle which gains focus
  4	icon handle, or -1
  8	x offset
  12	y offset
  16	<height + flags=>wimp_carethf>, or -1
  20	index into string, or -1

This message is sent to window's owner when caret moves into the mentioned window. It is not generated if caret moves around inside the same old window.DATA�Open Window Request (2)
Returned block contains :
  0	Window handle
  4	Visible area minimum x
  8	----------"--------- y
  12	Visible area maximum x
  16	----------"--------- y
  20	Scroll x offset
  24	Scroll y offset
  28	Handle to open window behind

This message is returned when window size, or scrollbars are altered. You should call <Wimp_OpenWindow> using this block. If you have panes, then you should also use the block to find their new position, and use Wimp_OpenWindow on them too.DATAClose Window Request (3)
Returned block contains :
   0  Window handle

The user has clicked on the close icon of window. If close is OK by you, then call <Wimp_CloseWindow>, using the returned block. If not, notify the user. ('File is altered. Do you want to quit?..')DATAdPointer Leaving Window (4)
Returned block contains :
  0 Window handle

This message is returned when the pointer, for some reason, suddenly finds itself no longer over this window. This can be because you moved it outside, but also because a menu has opened,or something similar
Note : You will not receive this message when the window is deleted.DATA:Pointer Entering Window (5)
Returned block contains :
  0 Window handle

This message is returned when the pointer, for some reason, suddenly finds itself over this window. This can be because you moved it there, but also because a menu is closed, a window deleted, or something similar

Note: If your pointer is over a window, and you delete this and create a new window, all in one go, you will :
 1:	Not get a Pointer_Leaving_Window for the old window.
 2:	Not get a Pointer_Entering_Window for the new one. (Probably because they will have the same handle..)DATA�Mouse Click (6)
#Wrap Off
Returned block contains :

  0	Mouse x		(Screen coord)
  4	Mouse y		(Screen coord)
  8	Buttons
  12	Window handle	(-1=background, -2=iconbar)
  16	Icon handle	(-1=workarea)DATA8User Drag Box (7)
Returned block contains:
  0  Dragbox	min x
  4		min y
  8		max x
  12		max y

This message is returned when all buttons are released to finish a User_Drag operation. The block contains the final pos of the dragbox. To find out where the user dropped the box, call <Wimp_GetPointerInfo>DATA�Key Pressed (8)
Returned block contains :

  0	Window handle with focus
  4	Icon handle, or -1 if none
  8	x-offset of caret	(relative to)
  12	y-offset of caret	(window origin)
  16	Caret height and flags
  20	Index of caret into string (if icon)
  24	<Character code=>wimp_poll8a> ( It's a Word! )

If you're not interested in this keypress, then pass it on with <Wimp_ProcessKey>.DATArCharacter code
#Table 19 12
Key
----------
Backspace
Return
Escape
Home
Delete
Print
F1-F9
Tab
Copy
Left
Right
Up
Down
Page down
Page up
F10-F12
Insert
Alone
----------
&008
&00D
&01B
&01E
&07F
&180
&181-&189
&18A
&18B
&18C
&18D
&18E
&18F
&19E
&19F
&1CA-&1CC
&1CD
+Shift
----------
&008
&00D
&01B
&01E
&07F
&190
&191-&199
&19A
&19B
&19C
&19D
&19E
&19F
&18E
&18F
&1DA-&1DC
&1DD
+Ctrl
----------
&008
&00D
&01B
&01E
&07F
&1A0
&1A1-&1A9
&1AA
&1AB
&1AC
&1AD
&1AE
&1AF
&1BE
&1BF
&1EA-&1EC
&1ED
+Ctrl Shift
-----------
&008
&00D
&01B
&01E
&07F
&1B0
&1B1-&1B9
&1BA
&1BB
&1BC
&1BD
&1BE
&1BF
&1AE
&1AF
&1FA-&1FC
&1FD
#EndTable
DATA�Menu Selection (9)
Returned block contains :
   0	Item in main menu selected.
   4	Item in 1st submenu.
   8	Item in 2nd submenu.
  ++	++
	Terminated by -1

If the user clicks with adjust (call <Wimp_GetPointerInfo> to find out), the menu should remain on screen. To do this, you have to reopen the menu after having responded to selection. This is done by calling <Wimp_CreateMenu> again.DATA>Wimp_PollIdle (&4000E1)
#Parent Wimp_
=>	R0 =	<mask=>wimp_pollmask>
	R1 =	256-byte block
	R2 =	earliest time for return with Null Reason
	R3 =	pointer to pollword *in RMA*

This SWI does the same as <Wimp_Poll>, except that it will return to you as soon as possible after time stated in R2, with a Null Reason.DATAGPollMask
Bit	Meaning when bit set :
#Line
0	Don't return Null Reason.
1	Don't return Redraw Window; Queue it.
2-3	0
4	Don't return Pointer Leaving Window.
5	Don't return Pointer Entering Window.
6	Don't return Mouse Click; Queue it.
7	0
8	Don't return Key Pressed; Queue it.
9-10	0
11	Don't return Lose Caret.
12	Don't return Gain Caret.
13	Don't return pollword nonzero
14-16	0
17	Don't return User Message.
18	Don't return User Message Recorded.
19	Don't return User Message Acknowledge.
20-21	0
22	R3 is ptr to pollword
23	Scan pollword at high priority
24	Save FP
25-31	0DIR$��XF����O�S!Root��F������G0�F����`�?�1ЎF����u?2�E���E=�h3DATASWimp_SendMessage  (&400E7)
#Parent Wimp_
=>	R0 =	Reason Code, see <Wimp_Poll>
	R1 =	Message block
	R2 =	Handle of destination task
	 	or Window handle
	 	or -2, and R3 = icon handle
	 	or 0 to Broadcast.

<=	R2 =	If not broadcast, handle of destination task

Most often, this SWI is used to send <user messages=>wimp_sendmessage1>.DATAGUser messages
Misc :
#Indent 4
#Table Columns 2
<0 Quit=>wimp_um0>
<8 PreQuit=>wimp_um8>
<9 PaletteChange =>wimp_um9>
<A SaveDesktop=>wimp_umA>
<400 FilerOpenDir=>wimp_um400>
<401 FilerCloseDir =>wimp_um401>
<502 HelpRequest=>wimp_um502>
<503 HelpReply=>wimp_um503>
<40040 Notify=>wimp_um40040>
<400C0 MenuWarning=>wimp_um400C0>
<400C1 ModeChange=>wimp_um400C1>
<400C2 TaskInitialise=>wimp_um400C2>
<400C3 TaskCloseDown =>wimp_um400C3>
<400C4 SlotSize=>wimp_um400C4>
<400C5 SetSlot=>wimp_um400C5>
<400C6 TaskNameRq=>wimp_um400C6>
<400C7 TaskNameIs=>wimp_um400C7>
400C8 TaskStarted
<400C9 MenusDeleted=>wimp_um400C9>
400CA Iconize
400CB WindowClosed
<400CC WindowInfo=>wimp_um400CC>
400CD Swap
400CE ToolsChanged
400CF FontChanged
#EndTable

#Indent 0
The new block model (Clipboard, Drag'n drop) :
#Indent 4
#Table Columns 2
F ClaimEntity
<10 DataRequest=>wimp_um10>
<11 Dragging=>wimp_um11>
<12 DragClaim=>wimp_um12>
#EndTable

#Indent 0
Data Transfer Protocol :
#Indent 4
#Table 4 24
<1 DataSave=>wimp_um1>
<2 DataSaveAck=>wimp_um2>
<3 DataLoad=>wimp_um3>
<4 DataLoadAck=>wimp_um4>
<5 DataOpen=>wimp_um5>
<6 RAMFetch=>wimp_um6>
<7 RAMTransmit=>wimp_um7>
#EndTable

#Indent 0
Throwback Protocol :
#Indent 4
#Table 4 24
<42580 ThrowbackStart=>wimp_um42580>
<42581 ProcessingFile=>wimp_um42581>
<42582 ErrorsIn=>wimp_um42582>
<42583 ErrorDetails=>wimp_um42583>
<42584 ThrowbackEnd=>wimp_um42584>
<42585 InfoForFile=>wimp_um42585>
<42586 InfoDetails=>wimp_um42586>
#EndTable

#Indent 0
<External Edit=>Wimp_umExtEdit> Protocol :
#Indent 4
#Table 3 24
<45D80 EditRq=>wimp_um45D80>
<45D81 EditAck=>wimp_um45D81>
<45D82 EditReturn=>wimp_um45D82>
<45D83 EditAbort=>wimp_um45D83>
<45D84 EditDataSave=>wimp_um45D84>
<45D85 EditCursor=>wimp_um45D85>
#EndTable

#Indent 0
Taskwindow Protocol :
#Indent 4
#Table 4 24
<808C0 TW_Input=>wimp_um808c0>
<808C1 TW_Output=>wimp_um808c1>
<808C2 TW_Ego=>wimp_um808c2>
<808C3 TW_Morio=>wimp_um808c3>
<808C4 TW_Morite =>wimp_um808c4>
<808C5 TW_NewTask=>wimp_um808c5>
<808C6 TW_Suspend=>wimp_um808c6>
<808C7 TW_Resume =>wimp_um808c7>
#EndTable

#Indent 0
Print Protocol :
#Indent 4
#Table 8 24
<80140 PrintFile=>wimp_um80140>
<80141 WillPrint=>wimp_um80141>
<80142 PrintSave=>wimp_um80142>
<80143 PrintInit=>wimp_um80143>
<80144 PrintError=>wimp_um80144>
<80145 PrintTypeOdd=>wimp_um80145>
<80146 PrintTypeKnown=>wimp_um80146>
<80147 SetPrinter=>wimp_um80147>
<8014C PSPrinterQuery=>wimp_um8014C>
<8014D PSPrinterAck=>wimp_um8014D>
<8014E PSPrinterModified=>wimp_um8014E>
<8014F PSPrinterDefaults=>wimp_um8014F>
<80150 PSPrinterDefaulted=>wimp_um80150>
<80151 PSPrinterNotPS=>wimp_um80151>
<80152 ResetPrinter=>wimp_um80152>
<80153 PSIsFontPrintRunning=>wimp_um80153>
#EndTable

#Indent 0
OLE Protocol :
#Indent 4
#Table 2 24
<80E1E OLE_FileChanged=>wimp_um80E1E>
<80E21 OLE_OpenSession=>wimp_um80E21>
<80E22 OLE_OpenSessionAck=>wimp_um80E22>
<80E23 OLE_CloseSession=>wimp_um80E23>
#EndTable

#Indent 0
<NewsBase mail=>wimp_UMNewsBase> protocol :
#Indent 4
#Table 2 24
<FEED10 NewsBase_Command=>wimp_umNB_Command>
<FEED11 NewsBase_Reply=>wimp_umNB_Reply>
<FEED12 NewsBase_Update=>wimp_umNB_Update>
#EndTable
DATA�Sending UserMessages (17,18,19)
17	UserMessage			Doesn't expect a reply
18	UserMessage_Recorded		If no-one answers, it returns.
19	<UserMessage_Acknowledge=>Wimp_sendmessage3>  	Tell Wimp we'll handle it.

Format of block :
 0	length of block
 12	your ref (0 for original message, not a reply)
 16	<message code=>wimp_sendmessage0>
 20	..data..

Wimp_SendMessage fills out the following fields:
 4	Handle of sender
 8	my ref (A reply to this message will use this.)DATAReceiving UserMessages (17,18,19)
17	UserMessage			Doesn't expect a reply
18	UserMessage_Recorded		If noone answers, it returns.
19	<UserMessage_Acknowledge=>Wimp_SendMessage3>  	A UM_Recorded returns.

Format of block :
 0	length of block
 4	Handle of sender
 8	my ref
 12	your ref
 16	<message code=>wimp_sendmessage0>
 20	..data..

To acknowledge message, first set your_ref = my_ref, and then either just call Wimp_SendMessage,19 which stops the message from returning, or send any UserMessage back to the sender.
DATAhAcknowledge
This prevents a broadcast message from being passed on, and a UserMessage_Recorded from being returned to the sender.

call <Wimp_SendMessage> with :
your_ref	= 0
R2		= task/window handle
R3		= icon handle if R2 = -2

On exit R2 = task handle.

You can also use this if you only want to find out who owns a window or an icon on the iconbar.DIR$T�E�����-Palette��E�����QPixTransؖE���:]�vpixtrans0P�E������pixtrans1��F���$$��nSysInfoh�F���c�$RSysInfo_Direction��F���rr�$NSysInfo_StateDATA-Wimp_ReadPalette  (&400E5)
#Parent Wimp_
=>	R1 = ptr to 20-word block
\<=	block contains palette definitions

This SWI returns the current Wimp palette settings. Each entry is one word. First 16 entries are the physical colours, then comes border colour, and finally the three pointer colours.DATAQWimp_ReadPixTrans  (&400ED)
#Parent Wimp_
=>	R0 =	&0xx if sprite in system area
	 	&1xx if sprite in user area, and R2 = name
	 	&2xx if sprite in user area, and R2 = ptr
	R1 =	Ptr to sprite-area (0 for system, 1 for wimp)
	R2 =	Ptr to spritename, or sprite itself
	R6 =	Block to receive scale factors
	R7 =	Block to receive translation table (2,4 or 16 bytes long)

\<=	Block at R6 contains <scale factors=>wimp_readpixtrans0>
	Block at R7 contains <translation table=>wimp_readpixtrans1>

This SWI gives info of how the Wimp would plot this icon.

Sprite can not be a 256-colour one.DATAvScale factors
 0	x multiplication factor
 4	y multiplication factor
 8	x division factor
 12	y division factorDATA�Colour translation table
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 15DATAnWimp_ReadSysInfo  (&400F2)
#Parent Wimp_
=>	R0 = item index
\<=	R0 = item value

#Tab
Currently defined values for R0 :
0	Number of active tasks
 	(Is 0 if completely outside desktop)
1	Wimp mode
2	Sprite suffix
3	<Desktop state=>Wimp_ReadSysInfo_State>
4	<Write direction=>Wimp_ReadSysInfo_Direction>
5	R0 =	Current task handle (0 if none)
 	R1 =	Version of WindowManager expected by task as given in <Wimp_Initialise>
7	Version of WindowManager * 100
8	R0 =	Fonthandle of "desktop font" (0 for system font)
 	R1 =	Fonthandle of "wimpsymbol font"
9	Toolsprites <sprite area=>OS_SpriteOp_Area>
10	Application limitDATARWimp Write Directions
Value	Meaning
#Line
0	Left to right
1	Right to left
DATANWimp States
Value	Meaning
#Line
#Wrap Off
0	Command line
1	In desktop
DATA�Mode Specifier Blocks
Offset	Value
#Line
0	Mode selector flags
	bit	0	= 1
	bits	1-7	= 0 (format specifier)
	bits	8-31	= 0 (reserved)
4	x-resolution (pixels)
8	y-resolution (pixels)
12	pixel depth
	0	= 1 bpp
	1	= 2 bpp
	2	= 4 bpp
	3	= 8 bpp
	4	= 16 bpp
	5	= 24 bpp
16	frame rate (Hz) (-1 = use first match)
20	optional pairs of words
	mode variable index, value
	mode variable index, value
	�etc
	-1 terminator
#line
See also <Mode Specifier Strings=>Wimp_ModeString>
DATAMode Specifier Strings
A mode specifier string can contain the following elements, with space between:
 
Xnnnn	X resolution (nnnn 3-4 digits)
Ynnnn	Y resolution (nnnn 3-4 digits)
Cccc	Colours (ccc=2,16,256,32K,16M)
Gccc	Greys (ccc=16,256)
EXn	X eigenfactor (0-3)
EYn	Y eigenfactor (0-3)
Ffff	Frame rate (fff 2-3 digits)
#line
Examples:
#indent 2
{fCode}MODE X640,Y480,C256{f}
	VGA in 256 colours
{fCode}MODE X800,Y600,C32K{f}
	SVGA in 32768 colours
#indent 0
#line
See also <Mode Specifier Blocks=>Wimp_ModeSelect>
DATAWimp_ResizeIcon (&400FC) (3.5)
#Parent Wimp_
=>	R0 =	window handle
	R1 =	icon handle
	R2 =	x0
	R3 =	y0
	R4 =	x1
	R5 =	y1
<=	All registers preserved

This call resizes the given icon in the given window to the new bounding box coordinates as given in registers 2 to 5.DIR$,,4�F���K��@!RootDATA@VProtect
#Parent !Root
#Prefix VProtect_
FI
OF
LU
MM
CF
DIR$,,��F���?}�,!rootDATA,WimpExt


This file will be inaccessible and is only here to stop the CreateHelp BASIC
program from complaining.

#Parent !Root
#Prefix WimpExt_
#Table Columns 4
Initialise
CloseDown
SlabIcon
Redraw
Action
IconBarSprite
IconBarText
LinkWindows
OpenLinked
CloseLinked
UnLinkWindows
CurrentTask
LoadTemplates
SetIconString
OpenWindowTop
SetIcon
GetIcon
GetNumberIcon
SetNumberIcon
IncNumberIcon
DecNumberIcon
SetPointer
Divide
ColoursMenu
AutoRedraw
CentreWindow
DragIcon
PutCaretIcon
OpenDialogue
CheckWindowOpen
CopyString
SetWindowTitle
SetIconStringN
FindLeaf
LimitPointer
ReleasePointer
OpenFullSize
LoadRAMTemplate
OpenRequester
CloseRequester
HideLink
UnHideLink
SendHelp
SendWimpHelp
CreateMenu
ReCreateMenu
ShadeEntry
TickEntry
SetIconColour
ShadeIcon
PlotSprite
RedrawDraw
PrePoll
SetExtent
MoveCaret
GetFontMenu
DecodeFontMenu
ControlImmediate
Heap
MemCopy
DataSave
PlotBorder
CentreWindowV
Sort
MemMove
MenuWidth
DataLoad
MoveCaretIcon
DrawOp
SpriteOp
Intersect
BorderOp
ManualLink
MiscOp
ViewIcon
SubstituteArgs
CreateDraw
RedirectSprites
#EndTable
DIR$,,��F���a��Z!RootDATAZZapRedraw
#Parent !Root
#Prefix ZapRedraw_
#Table Columns 2
RedrawArea
GetPaletteEntry
RedrawRaster
ConvertBitmap
PrepareDataLine
AddCursor
FindCharacter
MoveBytes
CachedCharSize
ConvBitmapChar
CreatePalette
InsertChar
ReadSystemChars
ReverseBitmaps
ReadVduVars
GetRectangle
AddVduBitmaps
CacheFontChars
SpriteSize
RedrawWindow
#EndTable
DIR$,,��F�������!RootDATA�Window
#Parent !Root
#Prefix Window_
#Table Columns 2
ClassSWI
PostFilter
PreFilter
GetPointerInfo
WimpToToolbox
RegisterExternal
DeregisterExternal
SupportExternal
#EndTable
DIR$,,d�F���}��&!RootDATA&Translator
#Parent !Root
#Prefix Translator_
#Table Columns 2
MakeMaps
SetVariable
ReadVariable
UnpackPre
Unpack
SetPalette
Rotate
MirrorX
MirrorY
ClosestToRGB
DMA
PixelFreq
CalcTrans
Palette
MoveWords
ExchangeWords
WriteWords
TaskStart
TaskQuit
Heckbert
CorrectCol
CalcRange
#EndTable
DIR$,,��F����vY!RootDATAYMakePSFont
#Parent !Root
#Prefix MakePSFont_
#Table Columns 2
MakeFont
#EndTable
DIR$,,@�F���Cv�!RootDATA�NetMonitor
#Parent !Root
#Prefix NetMonitor_
#Table Columns 2
PrintChar
DefineTask
AbandonTask
ConvertFont
UseFont
RestoreFont
#EndTable
DIR$,,�F����v�!RootDATA�Diss
#Parent !Root
#Prefix Diss_
#Table Columns 2
Disassemble
InitLabels
MakeLabelLookup
FindLabel
FindNamedLabel
AddLabel
AddLabelNoSort
RemoveLabel
Assemble
AddLibraryBlock
MergeLabels
RemoveInvalidLabels
RemoveSameNamedLabels
#EndTable
DIR$,,$�F����vl!RootDATAlMakeGIF
#Parent !Root
#Prefix MakeGIF_
#Table Columns 2
SetVariable
ReadVariable
Compress
#EndTable
DIR$,,��F����v�!RootDATA�Creator
#Parent !Root
#Prefix Creator_
#Table Columns 2
SetVariable
ReadVariable
GIFCompress
TIFFCompress
AIMConvert
PBMConvert
TaskStart
TaskQuit
#EndTable
DIR$,,��F���(�qd!RootDATAdWimpKey
#Parent !Root
#Prefix WimpKey_
#Table Columns 1
CodeToString
StringToCode
#EndTable
DATAD
&� Newer version than in StrongHelp
� � � � 0,�$+" at line "+Þ
1sh$="$.Apps.WProcess.!StrongHlp.HelpData.SWI"
� mem% 256
(!scraproot$="Scrap:StrongFile"
2o%=�("Scrap:NewAdded")
< �#o%,"Newly added SWI calls"
F�#o%,"#Parent !Root"
P�#o%,"#Postfix _"
Z�#o%,"#Table Columns 3"
dco%=0:coas$=""
nlast$=""
x�I=&200�&100000 � 64
�  � (I � &20000)>0 �I+=&20000
� swi%=I
� �
�6  ș "XOS_SWINumberToString",swi%,mem%,256 � ,,len
�   mem%?(len-1)=13:swi$=$mem%
�B  � �swi$,"Undefined")>0 � swi$="User" � swi$="NULL" � swi$=""
�#  � �swi$,�(swi%-I))>0 �swi$=""
�  � swi$<>"" �
�   �swifound(swi%,swi$)
�  �
�
  swi%+=1
� � swi%=I+64 � swi$=""
��
� co%<>0 �
 �#co%,"#EndTable"

 �#co%
"6 �("Copy "+scraproot$+" "+sh$+"."+coas$+" D~C~VF")
,�
6�#o%,"#EndTable"
@�#o%
J4�("Copy Scrap:NewAdded "+sh$+".NewAdded D~C~VF")
T�
^:
h��swifound(swi%,c$)
rmod$=�c$,�c$,"_"))
|call$=�c$,�c$,"_")+1)
�ft=�filetype(sh$+"."+mod$)
�
� ft=-2 �
� � co%<>0 �
�  �#co%,"#EndTable":�#co%
�6  �("Copy "+scraproot$+" "+sh$+"."+coas$+" D~C~V")
�  co%=0
� �
� �("CDir "+sh$+"."+mod$)
� �#o%,"<"+�mod$)+">"
� coas$=mod$+".!Root"
� co%=�(scraproot$)
� �#co%,�mod$)
� �#co%,"#Parent !Root"
 �#co%,"#Prefix "+mod$
 �#co%,"#Table Columns 2"
 last$=mod$
&�
0,� last$=mod$ ��#co%,call$:�mod$,call$,ft
:�
D:
N(�  >>>>> Stolen from JFShared <<<<<<
X:
b7� ******** File information routines **************
l:
v1� FNfiletype : Return the file type of a file
�2� -2=not found, -1=untyped, &1000=dir or image
�"� �filetype(f$):� f%,type%,fl%
�+ș "XOS_File",20,f$ � type%,,,,,,f%;fl%
�Ȏ type% �
� � 0:type%=-2
� � 1:type%=f%
� � 2,3:type%=&1000
��
�� (fl%�1)=1 �type%=-2
�
=type%
�:
�?� FNbasetype : Return the file type of a directory or image
�:� -2=not found, -1=file, &1000 for dir, type for image
"� �basetype(f$):� f%,type%,fl%
&ș "XOS_File",5,f$ � type%,,f%;fl%
Ȏ type% �
  � 0:type%=-2
* � 1:type%=-1
4 � 2:type%=&1000
> � 3:type%=(f% � &FFF00)>>8
H�
R� (fl%�1)=1 �type%=-2
\
=type%
f
�DIR$���F����*Cw!Root��F���ȯMIFileInfoԷF����هMMessageعF���vɇM�NewMessagesԺF���f��?roperationH�F���sԇM�IsNewDATAwReadMail
#Parent !Root
#Prefix ReadMail_
#Table Columns 1
<FileInfo>
<Message>
<NewMessages>
<IsNew>
#EndTable
DATAIReadMail_FileInfo (&46800)
#Parent ReadMail_
\<=	R0 =	number of messages read, or -1 if file not seen
	R1 =	number of new messages read

This reads information about the ReadMail message base files which have been seen by the module. To notify the module that the List or New file has changed, use <ReadMail_NewMessages>.DATAReadMail_Message (&46801)
#Parent ReadMail_
=>	R0 =	file number to find
	R1 =	<operation code=>ReadMail_operation>
	R2 =	Unused
	R3 =	previous file in chain (or -1 to leave unchanged)
	R4 =	next file in chain (or -1 to leave unchanged)

\<=	R0 preserved
	R1 =	pointer to line in List file, or -1 if not found
	R2 =	real message number
	R3 =	previous file in chain
	R4 =	next file in chain

This call tries to find a particular file's information and returns it, or sets the information in the module's block.DATA�ReadMail_NewMessages (&46801)
#Parent ReadMail_
\<=	R0 =	Number of messages in base
	R1 =	Number of new files in base

This call notifies the ReadMail module that the message base List (or New) file has been altered and it needs to read it.
DATArOperation codes
#Wrap Off
Code	Meaning
#Line
-1	Delete message
0	Don't alter message
1	Set data as passed
DATA�ReadMail_IsNew (&46803)
#Parent ReadMail_
=>	R0 =	number of file to check
\<=	R0 =	0 if not new, -1 if new

This SWI checks the new files log to check if the file is there.DIR$ttp�F����I���!Root �F���fu���Load�F���-Y���Start��F���b^���Stop��F����c���Pause��F����i��pClear4�F���D}���Info��F��������Pos��F����,���EffectControld�F������}Volume��F���D���SetSampleSpeed��F�������HDMABuffer4�F�������RemoveChannel�F���䮓�JRestoreChannel`�F����ȓ�Stereo|�F���(Γ��ReadSongLength�F����ғ�iReadSequenceTable��F����ⓥ�VUBarControl`�F����ΐ�)ReadVULevels��F�����JReadSampleTable��F��������ReadSpeed��F���4���PlaySample�F����XSongStatusp�F������ReadPlayingTimePF�������PlayRawSampleTF���I����SoundControl�F��������SWITableAddress�F���E���~RegisterSampleF����0���SetSpeed�F���)l��qeffects0F���A7��e-effectsDATA�QTM
#Parent !Root
#Prefix QTM_
#Table Columns 2
<Load>
<Start>
<Stop>
<Pause>
<Clear>
<Info>
<Pos>
<EffectControl>
<Volume>
<SetSampleSpeed>
<DMABuffer>
<RemoveChannel>
<RestoreChannel>
<Stereo>
<ReadSongLength>
<ReadSequenceTable>
<VUBarControl>
<ReadVULevels>
<ReadSampleTable>
<ReadSpeed>
<PlaySample>
<SongStatus>
<ReadPlayingTime>
<PlayRawSample>
<SoundControl>
<SWITableAddress>
<RegisterSample>
<SetSpeed>
#EndTable
DATA�QTM_Load  (&47E40)
#Parent QTM_
There are three forms of this call :
=>	 	<Form 1=>.form1>		<Form 2=>.form2>	<Form 3=>.form3>
	R0 =	filename			0			-1
	R1 =	address, or 0 for QTM memory	address        			address to copy from

<=	R0, R1 preserved

The address and type of the loaded song can be read by <QTM_Info>.

Note: When a song is loaded (by any method) its sample data is converted into 8-bit logarithmic data, from signed linear data. 15 inst. format songs are converted to a 31 inst. format at the same time. The sample data CAN be converted back to signed linear, so the song can be saved or re-loaded etc. by calling <QTM_Clear> with R0=-1, although the song format will not be converted back, and will remain as 31 inst.

V flag set if there was not enough space in the RMA for the song, the file was not found, the music format was not understood, or an illegal memory address was specified.
#Subpage form1
QTM_Load form 1
Depending on the value in R1, QTM will either load the specified song file into QTM's own memory (R1=0), or to the memory address given in R1 (R1\<>0).
#Subpage form2
QTM_Load form 2
QTM will initialise the song pointed to by R1, at that address.
This enables a program to load a song into its own reserved memory (eg. application memory or its own RMA block) and get QTM to play it from there, rather than from a QTM-controlled RMA block.
#Subpage form3
QTM will COPY the song from the address given in R1, to its own memory (RMA) and use it from there.

Note: If the address in R1 is the START of an RMA block, QTM will take control of this block, and release it after transfering the song. This is done to reduce possible fragmentation of the RMA. The loader program must *NOT* access the old RMA address of the song, after this call.
DATA�QTM_Start  (&47E41)
#Parent QTM_
This SWI will start the current song playing (and start up the sound system), after loading, or being paused or stopped.

V flag set if no song is loaded
DATA�QTM_Stop  (&47E42)
#Parent QTM_
This SWI will stop the current song playing, switch off QTM's sound controllers and reset all the internal song variables, including the position counters - which it sets to 0.

V flag set if no song is loaded
DATA�QTM_Pause  (&47E43)
#Parent QTM_
This has the same effect as <QTM_Stop>, although it doesn't reset the internal variables, so when the song is re-started, it will continue from the same position.

V flag set if no song is loaded
DATApQTM_Clear  (&47E44)
#Parent QTM_
=>	R0 =	-1 to convert samples back to signed linear format
	 	other don't convert samples

<=	R0 is preserved

This SWI will switch off the QTM sound system and stop the current song playing, releasing any memory used for the song if it was loaded into RMA. The song cannot be restarted after this command, unless it is reloaded (from user-reserved memory, disc, etc.) using <QTM_Load>.

The CURRENT song can only be reloaded from user-reserved (not QTM's) memory
after calling <QTM_Clear>, if the samples have been converted back to
signed linear format (from the logarithmic format they were converted to
when the song was loaded). This can be done by setting R0 to -1 before
calling <QTM_Clear>. See <QTM_Load> for information on (re)loading a
song that is already stored in memory.

No error is reported if there is not a song loaded.
DATA�QTM_Info  (&47E45)
#Parent QTM_
<=	R0 =	pointer to track name (0 terminated)
	R1 =	pointer to author name (0 terminated) or 0 if none
	R2 =	<song origin=>.origins>
	R3 =	number of channels (currently only 4 channels)
	R4 =	file length (in bytes)
	R5 =	garbage data size (-ve if data missing)
	R6 =	address where song is loaded

This SWI returns general information about the current track loaded in QTM.

It also uses an 'intelligent author detector' routine, to search through the sample names (usually used by authors, to store their name or group) to see if it can find anything that resembles a name. If it succeeds, a pointer to the name is returned in R1, otherwise 0 is returned.

Note: The 'song origin' value (R2), corresponds to the original song type, NOT the format of the song in memory. After loading, QTM converts all songs to the 31 inst. ProTracker format. Future versions of QTM, however, may support different song types in memory. To avoid problems with new types being supported, it can be assumed that any song returning a value in R2 \< &10 (16), will be stored in memory as a 4 channel, 31 inst. ProTracker format song. Song editors and display programs should check this value, to ensure that the loaded song is in the expected format for the program.

V flag set if no song is loaded
#Subpage origins
QTM Song origins
value	origin
#Line
0	15 inst. Sound Tracker
1	31 inst. Sound Tracker
2	31 inst. ProTracker
3	31 inst. Startrekker
DATA�QTM_Pos  (&47E46)
#Parent QTM_
=>	R0 =	new sequence position (0-127), -1 to read current position
	R1 =	new event position (0-63), -1 to read

<=	R0 =	previous sequence position (0-127)
	R1 =	previous event position (0-63)

This SWI can be used to read or alter the current sequence or event position in the current song.

V flag set if no song is loaded or the position/event number is out of range
DATA�QTM_EffectControl  (&47E47)
#Parent QTM_
=>	R0 =	<effect number=>QTM_effects> (&0-&F,&E0-&EF for <'E' effects=>QTM_e-effects>) or -1 to read current state
	R1 =	new state of effect (0-off/1-on)

<=	R0 =	previous effect state word (&0-&F) 1 bit per effect, 16 bits
	R1 =	previous effect state word (&E0-&EF) as above

This SWI can be used to change the state of any effect (as seen by the QTM effect handlers). Disabling an effect will stop QTM taking any action over it. For example, disabling effect &F will not allow speed/tempo changes to take place, and the song may sound too fast or slow.

Once re-enabled, the effect(s) will be run as usual again.

The contents of R0 and R1 on exit are a copy of the effect words used by QTM - each has 16 bits used, with each bit representing the state of that effect 0-off, 1-on. R0 contains the flags for the normal effects (&0-&F), R1 contains the flags for the 'E' effects (&E0-&EF).

V flag set if the effect number was out of range
DATA}QTM_Volume  (&47E48)
#Parent QTM_
=>	R0 =	new overall volume (0-64) or -1 to read current volume
<=	R0 =	previous volume (0-64)

This SWI allows you set the overall output volume from the QTM sound handlers. The volume is in a linear form (0-64), as used for volumes in ProTracker songs. Gradual fades can be generated using this SWI.

V flag set if volume is out of range
DATAQTM_SetSampleSpeed  (&47E49)
#Parent QTM_
=>	R0 =	new sample speed (16-96�S) or -1 to read current speed
<=	R0 =	previous sample speed (16-96�S)

This SWI lets you set the time between sample outputs (ie. sample quality) to a value between 16�S and 96�S. Smaller speed values give better sample quality, but also use more processor time, slowing the computer down more. The default speed is 32�S.

Note: If 8 channels are enabled, the minimum sample speed is 24�S.

V flag set if sample speed is out of range
DATAHQTM_DMABuffer  (&47E4A)
#Parent QTM_
<=	R0 =	address of last used DMA sound buffer.

By using this SWI, it would be possible to implement sound output oscilloscopes, or volume activated (real) VU bars. The data in the DMA buffer is stored as: [c1],[c2],[c3],[c0],[c1],[c2]...etc, 1 byte for each channel. The DMA buffer size used by QTM is 208*\<no. of channels> long.

The address returned in R0 will only be accurate if the QTM sound system is currently active. To check whether this is the case, use <QTM_SoundControl>, to read the sound system state (number of channels).
DATA�QTM_RemoveChannel  (&47E4B)
#Parent QTM_
=>	R0 =	channel number to remove from song player (1-8)

<=	R0 =	previous state of that channel:	0 = already removed
	 	 				1 = QTM channel

This SWI has the effect of 'removing' the given channel from the QTM player routine. This means no samples from the song will be played through this channel, although it is still possible to play samples directly, using the PlaySample SWIs, or through the Transparent sound system (if active).

While the channel is 'removed', the player will continue to keep up to date the effects and sample information, so that when the channel is restored, the song will continue as if nothing had happened.

Note: QTM v1.22 does not use channels 5-8 for song playing, so although they can be 'removed', this will make no noticeable difference as they can only be used for sample playing anyway!

V flag set if channel number is out of range
Interrupts: IRQ interrupts disabled while QTM sound flags are altered.
DATAJQTM_RestoreChannel  (&47E4C)
#Parent QTM_
#Wrap off
=>	R0 =	channel number to restore (1-8)
<=	R0 =	previous state of that channel:	0 = previously removed
	 	 				1 = already a QTM channel
#Wrap

This SWI is used to restore channels previously removed by <QTM_RemoveChannel>.

V flag set if channel number is out of range
DATAQTM_Stereo  (&47E4D)
#Parent QTM_
=>	R0 =	<channel number=>.usrchannel> to alter
	 	or 0 for <pre-programmed settings=>.prgchannel>

<=	R0 is preserved
	If R0 = 1-8 then R1 = previous stereo position
	If R0 = 0 then R1 is corrupted

This SWI allows the stereo positions for each channel to be altered independently, or all together. If R0=1-8 on entry, then R1 must be either a valid stereo position (-127 to 127) or -128 to read the previous position. If R0=0 on entry, then R1 must be in the range 0-4 to alter all the channels to one of these pre-programmed values.
#Subpage usrchannel
User channel stereo settings
R0 =	1-8
R1 =	-127 (left) to 127 (right)
	or -128 to read current position
#Subpage prgchannel
R0 =	0
R1 =	0	<default stereo positions=>.default>
	1	Amiga (full) stereo positions
	2	centred (no stereo)
	3	full left
	4	full right
#Subpage default
Default stereo settings
Channels 1,5 Position: -79 (left)
Channels 2,6 Position:  79 (right)
Channels 3,7 Position:  47 (slightly right)
Channels 4,8 Position: -47 (slightly left)
DATA�QTM_ReadSongLength  (&47E4E)
#Parent QTM_
<=	R0 =	number of sequences in current song (1-128)
	R1 =	maximum pattern number in song (ie. number of patterns-1)

This SWI allows you to read the number of sequences and maximum pattern number in the current song. The maximum pattern number is ALWAYS the number of patterns present-1, since counting starts at 0, not 1.

V flag set if no song is loaded
DATAiQTM_ReadSequenceTable  (&47E4F)
#Parent QTM_
=>	R0 = sequence number to read (0-127)
<=	R0 = pattern number stored at that position

This SWI enables you to read the pattern to be played at a given position in the current song's sequence table.

V flag set if no song is loaded or if sequence number is larger than the song's maximum sequence position.
DATA�QTM_VUBarControl  (&47E50)
#Parent QTM_
=>	R0 =	<control value=>.control>
	R1 =	new VU gravity, or -1 to read

<=	R0 =	previous VU controller state
	R1 =	previous VU bar gravity

This SWI allows control of the highly accurate VU bar routine contained in the QTM module. The default settings for the VU bar routine are: gravity = 2 (lines per 50th of a second) and the VU bar controller off.

Note: Currently QTM VU bars are only available for channels 1-4.
#Subpage control
QTM VUBar control values
\#	meaning
#Line
0	switch the VU bar controllers off
1	set the VU bar controller to use 'fake' VU bars
2	set the VU bar controller to use 'effect' VU bars
3	set the VU bar controller to use 'real' VU bars
-1	read current setting
DATA)QTM_ReadVULevels  (&47E51)
#Parent QTM_
=>	R0 =	Channel number (1-4) or 0 for all channels

<=	If R0 = 1-4 on entry, then
	   R0 = VU bar height for the channel specified in R0 (0-64)
	If R0 = 0 on entry, then 
	   R0 = word containing 1 byte per channel of all the 4 channels' VU bar heights (0-64, each byte)

This SWI lets you read the current VU levels of the QTM VU bar handler. This call should only be used if the VU bar handler has been enabled using <QTM_VUBarControl>.

Note: Currently QTM VU bars are only available for channels 1-4.
DATAJQTM_ReadSampleTable  (&47E52)
#Parent QTM_
=>	R0 =	sample number (1-64)

<=	R0 =	pointer to 22 byte block (not terminated) containing sample name (or a 0 byte, if no sample name)
	R1 =	sample length (in bytes)
	R2 =	repeat offset (bytes from start of sample)
	R3 =	repeat length (in bytes)
	R4 =	default volume (0-64)
	R5 =	fine tuning value (-8 to +7)
	R6 =	address of raw sample data (logarithmic format)

This SWI allows you to read information from the QTM sample table, which contains up to 64 samples. Non-existent samples will return zero in R1-R6, and R0 will point to a 0 byte.

Note: Because only samples 1-31 are used by songs, samples 32-64 can be used for sound effects (in games etc.) and can be registered separately, using <QTM_RegisterSample>.

V flag set if sample number is out of the range 1-64 or song not loaded
DATA�QTM_ReadSpeed  (&47E53)
#Parent QTM_
<=	R0 =	current song speed (00-31)
	R1 =	current song CIA tempo setting (32-255)
	R2 =	speed counter value (01-speed)

This SWI returns information on the current speed, tempo and counter values of the current song. The speed value (R0) is the number of times the song controller has to be called, before it plays the next note, the default is 6 times. If a speed of 0 is returned, the song is not playing.

The CIA tempo setting controls how fast the song controller is called. The default is 50 times a second, tempo 125. (The name CIA tempo comes from Complex Interface Adaptor, which was used on the Amiga to control ProTracker's interrupt speed.)

The speed counter (R2) varies from 1 to the current speed (R0). It is decremented once every time the song controller is called, until it reaches 0, when the next note is played and the counter is reset to the speed.

V flag set if no song is loaded
DATA�QTM_PlaySample  (&47E54)
#Parent QTM_
=>	R0 = channel number (1-8)
	R1 = sample number (0,1-64), 0 to clear channel
	R2 = note number (1-36 for standard, 113-856 for amiga pitch)
	R3 = linear volume (0-64)

<=	R0-R3 preserved

This SWI allows you to play any of the 64 samples held in the QTM sample table on any of the 4 or 8 available channels. A sample can be played at any time, including while a song is playing, although the sample may be cut short if the song is playing. Playing a non-existent sample will result in nothing being played. The samples above 31 can be used after they are registered, using <QTM_RegisterSample>.

This SWI will also start up the QTM sound system if it is called while the
song is stopped or paused, though it will not switch the system off after
the sample finishes, use <QTM_SoundControl> to do this.

V flag set if any of the registers contain illegal values.
DATAXQTM_SongStatus  (&47E55)
#Parent QTM_
<=	R0 = <song status flags=>.flags>

This SWI allows you to read the current status of the QTM song controller.

No error is generated if there is no song loaded.
#Subpage flags
QTM Song status flags
Bit	meaning if set
#Line
0	song loaded
1	song loaded in RMA
2	song currentl playing
3-31	reserved
DATA�QTM_ReadPlayingTime  (&47E56)
#Parent QTM_
<=	R0 =	total playing time so far (seconds)
	R1 =	time since last <QTM_Start> (seconds)
	R2 =	total playing time of the whole song (seconds)

This SWI allows you to read the two QTM song timers and the total time of the current song. The contents of R0 and R1 on exit are calculated from the internal 100Hz timer, but the contents of R2 rely on a special 100% accurate, song length calculation routine...

The ** {*}QTM-Ultra-mega-time-worker-outer{*} ** is the first song time calculation routine on the Arc, and the only routine on any computer which can accurately work out times correctly with effects such as CIA tempos, pattern loops and pattern delays. The routine works by scanning through all the song's patterns, in the correct order, calculating the time of each event as it goes, and taking into account any speed, tempo, loop or delay settings that may be in use.

When this SWI is called for the first time after loading a song, the total length will be worked out using the special routine. On later calls to this SWI (while the same song is loaded), the total length will not be re-calculated, but the original calculation will used, to save time.

V flag set if no song is loaded
DATAQTM_PlayRawSample  (&47E57)
#Parent QTM_
=>	R0 = channel number (1-8)
	R1 = sample address (logarithmic sample data), or 0 to silence channel
	R2 = sample length (in bytes)
	R3 = repeat offset (bytes from start of sample)
	R4 = repeat length (in bytes)
	R5 = note number (1-36 for standard note, 113-856 for amiga pitch)
	R6 = linear volume (0-64)

<=	R0-R6 preserved

This SWI allows you to play a sample stored in any area of memory. The sample should be in 8-bit logarithmic format.

This SWI will also start up the QTM sound system if it is called while the song is stopped or paused, though it will not switch the system off after the sample finishes, use <QTM_SoundControl> to do this.

V flags set if the contents of the registers contain dangerous values!
DATA�QTM_SoundControl  (&47E58)
#Parent QTM_
=>	R0 =	number of channels to use (4, 8 or 0 to shutdown) -1 to read
	R1 =	transparent sound system flags 1-on, 0-off, -1 to read
	R2 =	transparent sound system channel handler address or -1

<=	R0 =	previous number of channels (0 if sound system was off)
	R1 =	previous transparent sound system flags
	R2 =	previous transparent sound system handler

This SWI allows control over the QTM sound DMA handler.

The QTM sound system switches on automatically when a song or a sample is played, but can also be switched on manually using this SWI, specifying 4 or 8 channels. Note: This sets the 'default' number of channels, so even after the sound system is next shut down, QTM will continue to use the number of channels specified whenever a song or sample causes the sound system to start up again.

If 0 channels are specified, the QTM sound system is shut down. If a song was playing at that time, the music handlers and position counters will continue to move through the song, although no sound will be heard from QTM.

Details of the Transparent Sound System can be found in the 'Technical' help file, but basically it allows joint control over the sound channels, by QTM and either the RiscOS sound handler (default) or any other RiscOS compatible sound channel handler. Switching the Transparent Sound System on (passing 1 in R1) will allow you to hear any RiscOS voice module sounds AS WELL as any QTM samples. For example, in its default state, the Transparent Sound System will allow you to hear the system 'beep', while a song or sample is being played through QTM.

V flag set if illegal values are passed to QTM.
DATA�QTM_SWITableAddress  (&47E59)
#Parent QTM_
<=	R0 = address of QTM's internal SWI jump table

This SWI returns the address of QTM's SWI jump table, so that user programs can call directly any QTM SWI, without going through the RiscOS SWI handler.

To call a QTM SWI via this address, the registers should be set up as required by the SWI, and the SWI number minus &47E40 should be placed in R11. The SWI can then be executed by branching to this SWI table address.

Note: all QTM SWIs can be called this way, from any PSR mode, although if the QTM sound system is active, <QTM_RemoveChannel> should be called from a non-User mode, to allow disabling of interrupts.
DATA~QTM_RegisterSample  (&47E5A)
#Parent QTM_
=>	R0 =	sample number to register as (1-64) (see notes below)
	R1 =	sample address (of logarithmic sample data) or 0 to blank the sample information
	If R1 \<> 0 then
	 	R2 = sample length (in bytes)
	 	R3 = repeat offset (bytes from start of sample, or 0)
	 	R4 = repeat length (or 0)
	 	R5 = default volume (0-64)
	 	R6 = fine tune value (-8 to +7)

<=	R0-R6 preserved

This SWI allows a program to register a sample loaded into it's own memory, as a QTM sample. The above information will be entered into QTM's 64 slot sample table and will allow the user program to play the sample using <QTM_PlaySample>. If the sample number is <=31, the current song will use this sample rather than its default sample.

It is good practice for non-desktop users of this call to blank their registered samples when returning to the desktop, by calling this SWI with R1=0.

Note: All samples in the range 1-31 are re-set when a new song is loaded, to allow space for the new song's own samples. If you are using this range for sound effects etc. you must re-register all required samples after every song load.
DATA�QTM_SetSpeed  (&47E5B)
#Parent QTM_
=>	R0 =	new song speed (01-31) or tempo (32-255)
	 	(speed (beats per note), fast 01-31  v. slow, default 06)
	 	(tempo (beat frequency), slow 32-255 v. fast, default 125)

<=	R0 preserved

This SWI provides user control over the speed of the currently playing song. This command has the same effect (and takes the same parameters) as the speed-change 'F' effect as used in ProTracker compatible songs. The only difference being that a value of 0 will NOT stop the song, use SWI QTM_Stop to do this.

After using this SWI, the song speed will remain at the new value until an 'F' effect is played, or the song is stopped. Note: if the 'F' effect is disabled, using <QTM_EffectControl>, the song will play at the new speed until it is stopped, or 'F' effects are enabled again.

The current speed and tempo can be read using <QTM_ReadSpeed>.

V flag set if no song loaded or the new speed/tempo is out of range.
DATAqStandard ProTracker commands/effects
#Table Columns 2
00 Arpegio
01 Pitch slide up
02 Pitch slide down
03 Tone portamento
04 Vibrato
05 Tone portamento + volume slide
06 Vibrato + volume slide
07 Tremelo
08 \<not used>
09 Set sample offset
0A Volume slide
0B Jump to sequence
0C Set volume
0D Pattern break
0E Various, see table 2
0F Set speed / tempo
#EndTableDATA�'E' commands/effects
#Table Columns 2
E0 Set filter *
E1 Fine pitch slide up
E2 Fine pitch slide down
E3 Glissando control
E4 Set vibrato waveform
E5 Set fine tuning
E6 Pattern loop
E7 Set tremelo waveform
E8 \<not used>
E9 Retrig note
EA Fine volume slide up
EB Fine volume slide down
EC Note cut
ED Note delay
EE Pattern delay
EF Invert loop
#EndTable

* The 'Set filter' command can't be implemented on the Archimedes.DIR$,,F����хM�!RootDATA�ArcFSMemMan
#Parent !Root
#Prefix ArcFSMemMan_
#Table Columns 2
ClaimWorkspace
ResizeWorkspace
ReleaseWorkspace
ClaimFileCache
ResizeFileCache
ReleaseFileCache
Init
Final
Slide
LookupBlock
#EndTable
DIR$�F���(�M�!RootxF�������MenuF�����MEndMenu<F�����MOption\F����MDash|F���m�MCommand�F���p_�MdEnumerate F���0��M�MemoryDATA�Director
#Parent !Root
#Prefix Director_
#Table Columns 2
<Menu>
<EndMenu>
<Option>
<Dash>
<Command>
<Enumerate>
<Memory>
#EndTable
DATA�Director command SWI equivilents
#Parent Director_
=>	R0 = pointer to line

The SWIs :
#Indent 2
<Director_Menu>
<Director_EndMenu>
<Director_Option>
<Director_Dash>
<Director_Command>
#Indent

are directly equivilent to their OSCLI command counterparts.

These are defined because processing star commands is very slow and in dynamic menus especially it is important that items can be added to menus quickly.
DATA#Include Director_MenuDATA#Include Director_MenuDATA#Include Director_MenuDATA#Include Director_MenuDATAdDirector_Enumerate  (&4A105)
Enumerates lists held by director

=>	R0 =	pointer to block or to start use :
	 	  0 = stored menus
	 	  1 = displayed menus
	 	  2 = icons
	 	  3 = filters

<=	R0 = new pointer to block (0 for end)
	R1 = pointer to name of block

Dynamic menus to view these lists and act on them can be found on Director's main menu.
DATA�Director_Memory  (&4A106)
Returns the memory used by director

<=	R0 =	module size (constant)
	R1 =	main workspace size (constant)
	R2 =	total size of all allocated blocks
	R3 =	number of blocks allocated
	R4 =	dynamic area size (0 for no dynamic area)
	R5 =	bytes free in dynamic area
	R6 =	largest block in dynamic area

A dynamic menu to display this information can be found on Director's main menu.
DIR$,,�!F������U�!RootDATA�RemotePrinterSupport
#Parent !Root
#Prefix RemotePrinterSupport_
#Table Columns 2
ReadPollwordLocation
GetNextEvent
ReadUniqueAddress
Enable
Disable
EnableUpcalls
DisableUpcalls
#EndTable
DATAYNewly added SWI calls
#Parent !Root
#Postfix _
#Table Columns 3
<Gdbm>
#EndTable
DIR$,,#F������U!RootDATAPocketFS
#Parent !Root
#Prefix PocketFS_
#Table Columns 2
Ticker
SerialOpen
SerialClose
SerialSetDTR
SerialSetRTS
SerialPrimeTX
GetCacheMem
FreeCacheMem
CacheInit
CacheFinal
DescribeCache
CacheBlock
FindCacheEntry
Status
Dismount
SoftDismount
#EndTable
DIR$,,H$F���o��UE!RootDATAEPocketLink
#Parent !Root
#Prefix PocketLink_
#Table Columns 3
StartLink
CloseLink
p_open
p_close
p_read
p_write
p_iow
Enquire
ErrorConv
PanicConv
p_fparse
p_chdir
p_delete
p_rename
p_mkdir
p_sfstat
p_fdate
p_testpth
p_finfo
p_dinfo
p_ninfo
DateToPocket
ZapLink
DateFromPocket
NameFromHandle
p_seek
p_locchg
#EndTable
DATA�Contributors
<Guttorm Vik=>Filetypes:Authors_GuttormVik> (original version), Eduard Pfarr, Dick Alstein, Iain Truskett, <Justin Fletcher=>Filetypes:Authors_JustinFletcher>, and <Dave Thomas=>Filetypes:Authors_DaveThomas>.

If you want to contribute something yourself, then send the pages (as a Manual with only your new pages in) to {*}mailto://guttorm.vik@eunet.no{*}. 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.DIR$��\)F����MV��!RootP*F���� �mInfo�,F���
 ��FileInfo�/F�������PlotScaled�3F���ag��PlotFileScaledl5F���zy�plottransformed�7F���uh�-PlotFileTransformed�9F�����pdriverintercept�;F������iinfo_opflags,<F���u���plotflags�<F���W��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.
DATAmJPEG_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
	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 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.
DATA�JPEG_PlotScaled  (&49982)
#Parent JPEG_
=>	R0 = pointer to JPEG
	R1 = x coordinate at which to plot
	R2 = y coordinate at which to plot
	R3 = pointer to scaling block (0 for no 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 = pointer to scaling block (0 for no 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 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 Draw-style transformation matrix.
	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_5556>, in that the destination coordinate block and the transformation matrix have exactly the same meaning.  However, this call only supports a direct plot.
DATA-JPEG_PlotFileTransformed  (&49985)
#Parent JPEG_
=>	R0 =	pointer to filename of JPEG file
	R1 =	<transformation flags=>JPEG_transflags>
	R2 =	pointer to destination coordinate block, or Draw-style transformation matrix.
	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$,,?F���^�8��!RootDATA�LineEditor
#Parent !Root
#Prefix LineEditor_
#Table Columns 2
SetOptions
GetOptions
CreateBuffer
DeleteBuffer
SetPos
GetPos
GetLine
AppendLine
DeleteLine
#EndTable
DIR$,,�?F����3!�k!RootDATAkCompressJPEG
#Parent !Root
#Prefix CompressJPEG_
#Table Columns 2
Start
WriteLine
Finish
#EndTable
DIR$DD�@F����a�j11�DF����^a�u10DATAjKey transition event (11)
=>	R0 = 11
	R1 = transition value
	R2 = <key number=>.keynumber>

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  (Unassigned ?)
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
DATAuMouse button event
=>	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)DIR$00�GF���a���!Root0HF���͙��OpenJF����p ��Store�JF�����Fetch�KF���\��Exists�LF���w���FirstKey�MF���&���NextKeyLOF������_Close�OF�������DeleteDATA�Gdbm
#Parent !Root
#Prefix Gdbm_
#Table Columns 2
<Open>
<Store>
<Fetch>
<Exists>
<FirstKey>
<NextKey>
<Close>
<Delete>
Clear
#EndTable
DATA�Gdbm_Open
#Parent Gdbm_
=>	R0 =	Pointer to filename
	R1 =	<open type=>.opentype>
<=	R0 =	file handle

Opens a database file, returning the handle of the file so that it can be used in other calls.
#Subpage opentype
GDBM open types
Value	Name		Meaning
#line
0	GDBM_Reader	Read only
1	GDBM_Writer	Read/Write, but don't create if not there
2	GDBM_WRCreat	Read/Write and create if not there
3	GDBM_NewDB	Always create a new database

If 16 is added the file will be fast access (?).DATA�Gdbm_Store
#Parent Gdbm_
=>	R0 =	file handle from <Gdbm_Open>
	R1 =	pointer to keyword
	R2 =	length of keyword
	R3 =	buffer for data
	R4 =	length of data

Stores data under a keyword in the database.DATAGdbm_Fetch
#Parent Gdbm_
=>	R0 =	file handle from <Gdbm_Open>
	R1 =	pointer to keyword
	R2 =	length of keyword
	R3 =	buffer for data
	R4 =	length of buffer
<=	R0 =	length of data read, or <0 if key not found

Stores data under a keyword in the database.DATA�Gdbm_Exists
#Parent Gdbm_
=>	R0 =	file handle from <Gdbm_Open>
	R1 =	pointer to keyword
	R2 =	length of keyword
<=	R0 =	1 if key exists, 0 otherwise

Checks whether a keyword exists.
DATA�Gdbm_FirstKey
#Parent Gdbm_
=>	R0 =	file handle from <Gdbm_Open>
	R1 =	pointer to buffer
	R2 =	length of buffer
<=	R0 =	length of keyword, or -1 if no keywords exist

Returns the first keyword from the database.
DATA�Gdbm_NextKey
#Parent Gdbm_
=>	R0 =	file handle from <Gdbm_Open>
	R1 =	pointer to last keyword
	R2 =	length of keyword
	R3 =	pointer to buffer
	R4 =	length of buffer
<=	R0 =	length of keyword, or -1 if no keywords exist

Returns the next keyword from the database.

NOTE: Keywords are ordered in a hash table order. This is not necessarily alphabetic, and should not be relied on if <Gdbm_Delete> is called in the midst of a NextKey loop.
DATA_Gdbm_Close
#Parent Gdbm_
=>	R0 =	file handle from <Gdbm_Open>

Closes a database file.
DATA�Gdbm_Delete
#Parent Gdbm_
=>	R0 =	file handle from <Gdbm_Open>
	R1 =	pointer to last keyword
	R2 =	length of keyword

Deletes the specified key.
00000000  48 45 4c 50 28 00 00 00  c9 00 00 00 ff ff ff ff  |HELP(...........|
00000010  2c 00 00 00 00 fd ff ff  00 00 00 00 ac 10 00 00  |,...............|
00000020  00 01 00 00 00 00 00 00  24 00 00 00 44 49 52 24  |........$...DIR$|
00000030  b4 10 00 00 b4 10 00 00  e0 10 00 00 45 fc ff ff  |............E...|
00000040  c3 d8 0e e3 20 00 00 00  13 00 00 00 00 00 00 00  |.... ...........|
00000050  21 50 72 65 00 00 00 00  00 11 00 00 47 fd ff ff  |!Pre........G...|
00000060  d5 30 07 0a 44 02 00 00  13 00 00 00 00 00 00 00  |.0..D...........|
00000070  21 52 6f 6f 74 00 00 00  44 13 00 00 47 fd ff ff  |!Root...D...G...|
00000080  4c 22 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |L"-.,...........|
00000090  41 42 43 4c 69 62 5f 00  d4 13 00 00 47 fd ff ff  |ABCLib_.....G...|
000000a0  53 22 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |S"-.,...........|
000000b0  41 42 49 5f 00 00 00 00  70 14 00 00 47 fd ff ff  |ABI_....p...G...|
000000c0  5c 22 2d 0a 28 02 00 00  13 01 00 00 00 00 00 00  |\"-.(...........|
000000d0  41 44 46 53 5f 00 00 00  b4 2d 00 00 47 fd ff ff  |ADFS_....-..G...|
000000e0  97 22 2d 0a 74 01 00 00  13 01 00 00 00 00 00 00  |."-.t...........|
000000f0  41 72 63 46 53 5f 00 00  44 38 00 00 47 fd ff ff  |ArcFS_..D8..G...|
00000100  bc 22 2d 0a 70 00 00 00  13 01 00 00 00 00 00 00  |."-.p...........|
00000110  41 75 64 69 6f 4d 61 6e  61 67 65 72 5f 00 00 00  |AudioManager_...|
00000120  ac 3d 00 00 47 fd ff ff  cb 22 2d 0a 2c 00 00 00  |.=..G...."-.,...|
00000130  13 01 00 00 00 00 00 00  41 57 52 65 6e 64 65 72  |........AWRender|
00000140  5f 00 00 00 9c 3e 00 00  47 fd ff ff d4 22 2d 0a  |_....>..G...."-.|
00000150  2c 00 00 00 13 01 00 00  00 00 00 00 42 61 73 69  |,...........Basi|
00000160  63 54 72 61 6e 73 5f 00  fc 3e 00 00 47 fd ff ff  |cTrans_..>..G...|
00000170  db 22 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |."-.,...........|
00000180  42 6f 72 64 65 72 73 5f  00 00 00 00 84 3f 00 00  |Borders_.....?..|
00000190  47 fd ff ff e3 22 2d 0a  cc 00 00 00 13 01 00 00  |G...."-.........|
000001a0  00 00 00 00 42 75 66 66  65 72 5f 00 00 47 00 00  |....Buffer_..G..|
000001b0  47 fd ff ff fc 22 2d 0a  2c 00 00 00 13 01 00 00  |G...."-.,.......|
000001c0  00 00 00 00 43 61 63 68  65 5f 00 00 c8 47 00 00  |....Cache_...G..|
000001d0  47 fd ff ff 03 23 2d 0a  2c 00 00 00 13 01 00 00  |G....#-.,.......|
000001e0  00 00 00 00 43 41 49 46  53 5f 00 00 c0 48 00 00  |....CAIFS_...H..|
000001f0  47 fd ff ff 0a 23 2d 0a  2c 00 00 00 13 01 00 00  |G....#-.,.......|
00000200  00 00 00 00 43 6f 6c 6f  75 72 44 62 6f 78 5f 00  |....ColourDbox_.|
00000210  40 49 00 00 47 fd ff ff  12 23 2d 0a 2c 00 00 00  |@I..G....#-.,...|
00000220  13 01 00 00 00 00 00 00  43 6f 6c 6f 75 72 45 78  |........ColourEx|
00000230  74 65 6e 64 5f 00 00 00  c4 49 00 00 47 fd ff ff  |tend_....I..G...|
00000240  1a 23 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |.#-.,...........|
00000250  43 6f 6c 6f 75 72 4d 65  6e 75 5f 00 44 4a 00 00  |ColourMenu_.DJ..|
00000260  47 fd ff ff 22 23 2d 0a  2c 00 00 00 13 01 00 00  |G..."#-.,.......|
00000270  00 00 00 00 43 6f 6c 6f  75 72 50 69 63 6b 65 72  |....ColourPicker|
00000280  5f 00 00 00 38 4b 00 00  47 fd ff ff 2c 23 2d 0a  |_...8K..G...,#-.|
00000290  24 03 00 00 13 01 00 00  00 00 00 00 43 6f 6c 6f  |$...........Colo|
000002a0  75 72 54 72 61 6e 73 5f  00 00 00 00 4c 6c 00 00  |urTrans_....Ll..|
000002b0  47 fd ff ff 7b 23 2d 0a  2c 00 00 00 13 01 00 00  |G...{#-.,.......|
000002c0  00 00 00 00 44 43 53 5f  00 00 00 00 c0 6c 00 00  |....DCS_.....l..|
000002d0  47 fd ff ff 83 23 2d 0a  a4 00 00 00 13 01 00 00  |G....#-.........|
000002e0  00 00 00 00 44 44 45 55  74 69 6c 73 5f 00 00 00  |....DDEUtils_...|
000002f0  dc 72 00 00 47 fd ff ff  95 23 2d 0a 50 00 00 00  |.r..G....#-.P...|
00000300  13 01 00 00 00 00 00 00  44 65 62 75 67 67 65 72  |........Debugger|
00000310  5f 00 00 00 88 74 00 00  47 fd ff ff a0 23 2d 0a  |_....t..G....#-.|
00000320  2c 00 00 00 13 01 00 00  00 00 00 00 44 65 76 69  |,...........Devi|
00000330  63 65 46 53 5f 00 00 00  44 75 00 00 47 fd ff ff  |ceFS_...Du..G...|
00000340  a7 23 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |.#-.,...........|
00000350  44 69 74 68 65 72 45 78  74 65 6e 64 5f 00 00 00  |DitherExtend_...|
00000360  e8 77 00 00 47 fd ff ff  af 23 2d 0a 2c 00 00 00  |.w..G....#-.,...|
00000370  13 01 00 00 00 00 00 00  44 6f 63 75 6d 65 6e 74  |........Document|
00000380  4d 61 6e 61 67 65 72 5f  00 00 00 00 a4 78 00 00  |Manager_.....x..|
00000390  47 fd ff ff b7 23 2d 0a  9c 00 00 00 13 01 00 00  |G....#-.........|
000003a0  00 00 00 00 44 4f 53 46  53 5f 00 00 4c 84 00 00  |....DOSFS_..L...|
000003b0  47 fd ff ff cb 23 2d 0a  2c 00 00 00 13 01 00 00  |G....#-.,.......|
000003c0  00 00 00 00 44 72 61 67  41 6e 4f 62 6a 65 63 74  |....DragAnObject|
000003d0  5f 00 00 00 bc 84 00 00  47 fd ff ff d2 23 2d 0a  |_.......G....#-.|
000003e0  ac 00 00 00 13 01 00 00  00 00 00 00 44 72 61 67  |............Drag|
000003f0  41 53 70 72 69 74 65 5f  00 00 00 00 58 8b 00 00  |ASprite_....X...|
00000400  47 fd ff ff e8 23 2d 0a  2c 00 00 00 13 01 00 00  |G....#-.,.......|
00000410  00 00 00 00 44 72 61 77  46 69 6c 65 5f 00 00 00  |....DrawFile_...|
00000420  ec 8b 00 00 47 fd ff ff  f1 23 2d 0a 08 02 00 00  |....G....#-.....|
00000430  13 01 00 00 00 00 00 00  44 72 61 77 5f 00 00 00  |........Draw_...|
00000440  74 9e 00 00 47 fd ff ff  31 24 2d 0a f4 03 00 00  |t...G...1$-.....|
00000450  13 01 00 00 00 00 00 00  45 63 6f 6e 65 74 5f 00  |........Econet_.|
00000460  78 c0 00 00 47 fd ff ff  94 24 2d 0a 2c 00 00 00  |x...G....$-.,...|
00000470  13 01 00 00 00 00 00 00  45 75 63 6c 69 64 5f 00  |........Euclid_.|
00000480  84 c1 00 00 47 fd ff ff  9b 24 2d 0a 2c 00 00 00  |....G....$-.,...|
00000490  13 01 00 00 00 00 00 00  46 69 6c 65 42 75 66 66  |........FileBuff|
000004a0  65 72 5f 00 54 c2 00 00  47 fd ff ff a8 24 2d 0a  |er_.T...G....$-.|
000004b0  d0 04 00 00 13 01 00 00  00 00 00 00 46 69 6c 65  |............File|
000004c0  43 6f 72 65 5f 00 00 00  60 11 01 00 47 fd ff ff  |Core_...`...G...|
000004d0  31 25 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |1%-.,...........|
000004e0  46 69 6c 65 49 6e 66 6f  5f 00 00 00 dc 11 01 00  |FileInfo_.......|
000004f0  47 fd ff ff 3b 25 2d 0a  2c 00 00 00 13 01 00 00  |G...;%-.,.......|
00000500  00 00 00 00 46 69 6c 65  72 41 63 74 69 6f 6e 5f  |....FilerAction_|
00000510  00 00 00 00 94 12 01 00  45 fb ff ff f8 e7 0e e3  |........E.......|
00000520  9f 02 00 00 13 00 00 00  00 00 00 00 46 69 6c 74  |............Filt|
00000530  65 72 00 00 34 15 01 00  47 fd ff ff 46 25 2d 0a  |er..4...G...F%-.|
00000540  04 01 00 00 13 01 00 00  00 00 00 00 46 69 6c 74  |............Filt|
00000550  65 72 5f 00 e4 20 01 00  47 fd ff ff 60 25 2d 0a  |er_.. ..G...`%-.|
00000560  2c 00 00 00 13 01 00 00  00 00 00 00 46 6f 6e 74  |,...........Font|
00000570  44 62 6f 78 5f 00 00 00  60 21 01 00 47 fd ff ff  |Dbox_...`!..G...|
00000580  68 25 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |h%-.,...........|
00000590  46 6f 6e 74 44 72 61 77  5f 00 00 00 d8 21 01 00  |FontDraw_....!..|
000005a0  47 fd ff ff 70 25 2d 0a  2c 00 00 00 13 01 00 00  |G...p%-.,.......|
000005b0  00 00 00 00 46 6f 6e 74  4d 65 6e 75 5f 00 00 00  |....FontMenu_...|
000005c0  54 22 01 00 47 fd ff ff  7c 25 2d 0a 18 04 00 00  |T"..G...|%-.....|
000005d0  13 01 00 00 00 00 00 00  46 6f 6e 74 5f 00 00 00  |........Font_...|
000005e0  40 4f 01 00 47 fd ff ff  ea 25 2d 0a 4c 00 00 00  |@O..G....%-.L...|
000005f0  13 01 00 00 00 00 00 00  46 50 45 6d 75 6c 61 74  |........FPEmulat|
00000600  6f 72 5f 00 1c 50 01 00  47 fd ff ff f6 25 2d 0a  |or_..P..G....%-.|
00000610  2c 00 00 00 13 01 00 00  00 00 00 00 46 72 65 65  |,...........Free|
00000620  5f 00 00 00 78 50 01 00  47 fd ff ff fd 25 2d 0a  |_...xP..G....%-.|
00000630  2c 00 00 00 13 01 00 00  00 00 00 00 46 72 6f 6e  |,...........Fron|
00000640  74 45 6e 64 5f 00 00 00  f4 50 01 00 47 fd ff ff  |tEnd_....P..G...|
00000650  06 26 2d 0a b4 00 00 00  13 01 00 00 00 00 00 00  |.&-.............|
00000660  66 73 79 73 5f 00 00 00  50 58 01 00 47 fd ff ff  |fsys_...PX..G...|
00000670  1b 26 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |.&-.,...........|
00000680  47 44 72 61 77 5f 00 00  00 5a 01 00 47 fd ff ff  |GDraw_...Z..G...|
00000690  23 26 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |#&-.,...........|
000006a0  47 53 70 72 69 74 65 45  78 74 65 6e 64 5f 00 00  |GSpriteExtend_..|
000006b0  b0 5a 01 00 47 fd ff ff  2b 26 2d 0a 2c 00 00 00  |.Z..G...+&-.,...|
000006c0  13 01 00 00 00 00 00 00  48 65 6c 69 78 42 61 73  |........HelixBas|
000006d0  69 63 5f 00 18 5b 01 00  47 fd ff ff 33 26 2d 0a  |ic_..[..G...3&-.|
000006e0  e8 00 00 00 13 01 00 00  00 00 00 00 48 6f 75 72  |............Hour|
000006f0  67 6c 61 73 73 5f 00 00  8c 61 01 00 47 fd ff ff  |glass_...a..G...|
00000700  50 26 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |P&-.,...........|
00000710  48 79 70 68 65 6e 61 74  6f 72 5f 00 84 62 01 00  |Hyphenator_..b..|
00000720  47 fd ff ff 58 26 2d 0a  2c 00 00 00 13 01 00 00  |G...X&-.,.......|
00000730  00 00 00 00 49 63 6f 6e  62 61 72 5f 00 00 00 00  |....Iconbar_....|
00000740  00 63 01 00 47 fd ff ff  60 26 2d 0a 2c 00 00 00  |.c..G...`&-.,...|
00000750  13 01 00 00 00 00 00 00  49 49 43 5f 00 00 00 00  |........IIC_....|
00000760  50 63 01 00 47 fd ff ff  67 26 2d 0a 2c 00 00 00  |Pc..G...g&-.,...|
00000770  13 01 00 00 00 00 00 00  49 6d 61 67 65 45 78 74  |........ImageExt|
00000780  65 6e 64 5f 00 00 00 00  74 64 01 00 47 fd ff ff  |end_....td..G...|
00000790  70 26 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |p&-.,...........|
000007a0  49 6d 70 75 6c 73 65 5f  00 00 00 00 34 65 01 00  |Impulse_....4e..|
000007b0  47 fd ff ff 77 26 2d 0a  2c 00 00 00 13 01 00 00  |G...w&-.,.......|
000007c0  00 00 00 00 49 6e 74 65  72 66 61 63 65 5f 00 00  |....Interface_..|
000007d0  3c 66 01 00 47 fd ff ff  7f 26 2d 0a 4c 00 00 00  |<f..G....&-.L...|
000007e0  13 01 00 00 00 00 00 00  4a 6f 79 73 74 69 63 6b  |........Joystick|
000007f0  5f 00 00 00 08 69 01 00  47 fd ff ff 8b 26 2d 0a  |_....i..G....&-.|
00000800  2c 00 00 00 13 01 00 00  00 00 00 00 4c 61 72 67  |,...........Larg|
00000810  65 72 53 75 70 70 6f 72  74 5f 00 00 4c 6a 01 00  |erSupport_..Lj..|
00000820  47 fd ff ff 92 26 2d 0a  2c 00 00 00 13 01 00 00  |G....&-.,.......|
00000830  00 00 00 00 4c 5a 57 42  5f 00 00 00 c8 6a 01 00  |....LZWB_....j..|
00000840  47 fd ff ff 99 26 2d 0a  2c 00 00 00 13 01 00 00  |G....&-.,.......|
00000850  00 00 00 00 4d 65 6e 75  5f 00 00 00 48 6b 01 00  |....Menu_...Hk..|
00000860  47 fd ff ff a3 26 2d 0a  1c 01 00 00 13 01 00 00  |G....&-.........|
00000870  00 00 00 00 4d 65 73 73  61 67 65 54 72 61 6e 73  |....MessageTrans|
00000880  5f 00 00 00 18 79 01 00  47 fd ff ff c5 26 2d 0a  |_....y..G....&-.|
00000890  2c 00 00 00 13 01 00 00  00 00 00 00 4e 65 74 46  |,...........NetF|
000008a0  53 5f 00 00 14 7a 01 00  47 fd ff ff cd 26 2d 0a  |S_...z..G....&-.|
000008b0  2c 00 00 00 13 01 00 00  00 00 00 00 4e 65 74 50  |,...........NetP|
000008c0  72 69 6e 74 5f 00 00 00  ac 7a 01 00 46 fd ff ff  |rint_....z..F...|
000008d0  95 bc 13 fa 47 04 00 00  13 00 00 00 00 00 00 00  |....G...........|
000008e0  4e 6f 6e 4f 53 00 00 00  f4 7e 01 00 47 fd ff ff  |NonOS....~..G...|
000008f0  d9 26 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |.&-.,...........|
00000900  4f 4c 45 5f 00 00 00 00  60 80 01 00 47 fd ff ff  |OLE_....`...G...|
00000910  ef 26 2d 0a f8 0e 00 00  13 01 00 00 00 00 00 00  |.&-.............|
00000920  4f 53 5f 00 5c 65 04 00  47 fd ff ff 21 2d 2d 0a  |OS_.\e..G...!--.|
00000930  9c 00 00 00 13 01 00 00  00 00 00 00 50 61 72 61  |............Para|
00000940  6c 6c 65 6c 5f 00 00 00  50 6b 04 00 47 fd ff ff  |llel_...Pk..G...|
00000950  38 2d 2d 0a 74 00 00 00  13 01 00 00 00 00 00 00  |8--.t...........|
00000960  50 44 72 69 76 65 72 5f  00 00 00 00 ec 6f 04 00  |PDriver_.....o..|
00000970  47 fd ff ff 48 2d 2d 0a  2c 00 00 00 13 01 00 00  |G...H--.,.......|
00000980  00 00 00 00 50 44 75 6d  70 65 72 5f 00 00 00 00  |....PDumper_....|
00000990  8c 70 04 00 47 fd ff ff  50 2d 2d 0a 2c 00 00 00  |.p..G...P--.,...|
000009a0  13 01 00 00 00 00 00 00  50 6f 64 75 6c 65 5f 00  |........Podule_.|
000009b0  78 71 04 00 47 fd ff ff  58 2d 2d 0a 2c 00 00 00  |xq..G...X--.,...|
000009c0  13 01 00 00 00 00 00 00  50 72 69 6e 74 44 62 6f  |........PrintDbo|
000009d0  78 5f 00 00 f8 71 04 00  47 fd ff ff 60 2d 2d 0a  |x_...q..G...`--.|
000009e0  2c 00 00 00 13 01 00 00  00 00 00 00 50 72 6f 67  |,...........Prog|
000009f0  49 6e 66 6f 5f 00 00 00  74 72 04 00 47 fd ff ff  |Info_...tr..G...|
00000a00  68 2d 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |h--.,...........|
00000a10  52 61 6d 46 53 5f 00 00  e8 72 04 00 47 fd ff ff  |RamFS_...r..G...|
00000a20  6f 2d 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |o--.,...........|
00000a30  52 65 73 6f 75 72 63 65  46 53 5f 00 54 73 04 00  |ResourceFS_.Ts..|
00000a40  47 fd ff ff 77 2d 2d 0a  2c 00 00 00 13 01 00 00  |G...w--.,.......|
00000a50  00 00 00 00 52 4f 4d 43  61 63 68 65 5f 00 00 00  |....ROMCache_...|
00000a60  00 74 04 00 47 fd ff ff  7e 2d 2d 0a 2c 00 00 00  |.t..G...~--.,...|
00000a70  13 01 00 00 00 00 00 00  53 61 76 65 41 73 5f 00  |........SaveAs_.|
00000a80  78 74 04 00 47 fd ff ff  87 2d 2d 0a 2c 00 00 00  |xt..G....--.,...|
00000a90  13 01 00 00 00 00 00 00  53 63 61 6c 65 5f 00 00  |........Scale_..|
00000aa0  f0 74 04 00 47 fd ff ff  8e 2d 2d 0a 4c 00 00 00  |.t..G....--.L...|
00000ab0  13 01 00 00 00 00 00 00  53 63 72 65 65 6e 42 6c  |........ScreenBl|
00000ac0  61 6e 6b 65 72 5f 00 00  0c 76 04 00 47 fd ff ff  |anker_...v..G...|
00000ad0  9a 2d 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |.--.,...........|
00000ae0  53 43 53 49 5f 00 00 00  b4 76 04 00 47 fd ff ff  |SCSI_....v..G...|
00000af0  a2 2d 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |.--.,...........|
00000b00  53 68 61 72 65 64 43 4c  69 62 72 61 72 79 5f 00  |SharedCLibrary_.|
00000b10  30 77 04 00 47 fd ff ff  a9 2d 2d 0a 2c 00 00 00  |0w..G....--.,...|
00000b20  13 01 00 00 00 00 00 00  53 68 65 6c 6c 5f 00 00  |........Shell_..|
00000b30  88 77 04 00 47 fd ff ff  b2 2d 2d 0a 50 01 00 00  |.w..G....--.P...|
00000b40  13 01 00 00 00 00 00 00  53 6f 75 6e 64 5f 00 00  |........Sound_..|
00000b50  e0 86 04 00 47 fd ff ff  d9 2d 2d 0a 2c 00 00 00  |....G....--.,...|
00000b60  13 01 00 00 00 00 00 00  53 70 63 68 5f 00 00 00  |........Spch_...|
00000b70  b4 87 04 00 47 fd ff ff  e1 2d 2d 0a 2c 00 00 00  |....G....--.,...|
00000b80  13 01 00 00 00 00 00 00  53 70 65 6c 6c 5f 00 00  |........Spell_..|
00000b90  48 89 04 00 47 fd ff ff  e9 2d 2d 0a 2c 00 00 00  |H...G....--.,...|
00000ba0  13 01 00 00 00 00 00 00  53 71 75 61 73 68 5f 00  |........Squash_.|
00000bb0  a4 89 04 00 47 fd ff ff  f1 2d 2d 0a 2c 00 00 00  |....G....--.,...|
00000bc0  13 01 00 00 00 00 00 00  53 74 72 65 61 6d 53 71  |........StreamSq|
00000bd0  75 61 73 68 5f 00 00 00  a8 8a 04 00 47 fd ff ff  |uash_.......G...|
00000be0  fa 2d 2d 0a 9c 01 00 00  13 01 00 00 00 00 00 00  |.--.............|
00000bf0  53 74 72 65 61 6d 5f 00  7c 9b 04 00 47 fd ff ff  |Stream_.|...G...|
00000c00  2a 2e 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |*.-.,...........|
00000c10  53 75 70 65 72 5f 00 00  d8 9b 04 00 47 fd ff ff  |Super_......G...|
00000c20  33 2e 2d 0a 54 00 00 00  13 01 00 00 00 00 00 00  |3.-.T...........|
00000c30  73 77 69 5f 00 00 00 00  d0 9f 04 00 47 fd ff ff  |swi_........G...|
00000c40  3f 2e 2d 0a a4 00 00 00  13 01 00 00 00 00 00 00  |?.-.............|
00000c50  54 61 73 6b 4d 61 6e 61  67 65 72 5f 00 00 00 00  |TaskManager_....|
00000c60  98 a6 04 00 47 fd ff ff  53 2e 2d 0a 2c 00 00 00  |....G...S.-.,...|
00000c70  13 01 00 00 00 00 00 00  54 61 73 6b 57 69 6e 64  |........TaskWind|
00000c80  6f 77 5f 00 20 a8 04 00  47 fd ff ff 5d 2e 2d 0a  |ow_. ...G...].-.|
00000c90  b4 01 00 00 13 01 00 00  00 00 00 00 54 65 72 72  |............Terr|
00000ca0  69 74 6f 72 79 5f 00 00  34 b4 04 00 47 fd ff ff  |itory_..4...G...|
00000cb0  8a 2e 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |..-.,...........|
00000cc0  54 69 6e 79 53 75 70 70  6f 72 74 5f 00 00 00 00  |TinySupport_....|
00000cd0  a0 b4 04 00 47 fd ff ff  91 2e 2d 0a 2c 00 00 00  |....G.....-.,...|
00000ce0  13 01 00 00 00 00 00 00  54 6f 6f 6c 62 6f 78 5f  |........Toolbox_|
00000cf0  00 00 00 00 54 b6 04 00  47 fd ff ff 9d 2e 2d 0a  |....T...G.....-.|
00000d00  b4 03 00 00 13 01 00 00  00 00 00 00 54 72 61 63  |............Trac|
00000d10  6b 65 72 5f 00 00 00 00  c0 0d 05 00 47 fd ff ff  |ker_........G...|
00000d20  17 2f 2d 0a 0c 08 00 00  13 01 00 00 00 00 00 00  |./-.............|
00000d30  57 69 6d 70 5f 00 00 00  08 a0 06 00 47 fd ff ff  |Wimp_.......G...|
00000d40  10 33 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |.3-.,...........|
00000d50  56 50 72 6f 74 65 63 74  5f 00 00 00 74 a0 06 00  |VProtect_...t...|
00000d60  47 fd ff ff 18 33 2d 0a  2c 00 00 00 13 01 00 00  |G....3-.,.......|
00000d70  00 00 00 00 57 69 6d 70  45 78 74 5f 00 00 00 00  |....WimpExt_....|
00000d80  cc a4 06 00 47 fd ff ff  21 33 2d 0a 2c 00 00 00  |....G...!3-.,...|
00000d90  13 01 00 00 00 00 00 00  5a 61 70 52 65 64 72 61  |........ZapRedra|
00000da0  77 5f 00 00 54 a6 06 00  47 fd ff ff 28 33 2d 0a  |w_..T...G...(3-.|
00000db0  2c 00 00 00 13 01 00 00  00 00 00 00 57 69 6e 64  |,...........Wind|
00000dc0  6f 77 5f 00 38 a7 06 00  47 fd ff ff 30 33 2d 0a  |ow_.8...G...03-.|
00000dd0  2c 00 00 00 13 01 00 00  00 00 00 00 54 72 61 6e  |,...........Tran|
00000de0  73 6c 61 74 6f 72 5f 00  8c a8 06 00 47 fd ff ff  |slator_.....G...|
00000df0  39 33 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |93-.,...........|
00000e00  4d 61 6b 65 50 53 46 6f  6e 74 5f 00 14 a9 06 00  |MakePSFont_.....|
00000e10  47 fd ff ff 41 33 2d 0a  2c 00 00 00 13 01 00 00  |G...A3-.,.......|
00000e20  00 00 00 00 4e 65 74 4d  6f 6e 69 74 6f 72 5f 00  |....NetMonitor_.|
00000e30  d4 a9 06 00 47 fd ff ff  4a 33 2d 0a 2c 00 00 00  |....G...J3-.,...|
00000e40  13 01 00 00 00 00 00 00  44 69 73 73 5f 00 00 00  |........Diss_...|
00000e50  f8 aa 06 00 47 fd ff ff  51 33 2d 0a 2c 00 00 00  |....G...Q3-.,...|
00000e60  13 01 00 00 00 00 00 00  4d 61 6b 65 47 49 46 5f  |........MakeGIF_|
00000e70  00 00 00 00 90 ab 06 00  47 fd ff ff 5a 33 2d 0a  |........G...Z3-.|
00000e80  2c 00 00 00 13 01 00 00  00 00 00 00 43 72 65 61  |,...........Crea|
00000e90  74 6f 72 5f 00 00 00 00  64 ac 06 00 47 fd ff ff  |tor_....d...G...|
00000ea0  61 33 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |a3-.,...........|
00000eb0  57 69 6d 70 4b 65 79 5f  00 00 00 00 f4 ac 06 00  |WimpKey_........|
00000ec0  46 fb ff ff 21 a9 13 fa  44 08 00 00 13 00 00 00  |F...!...D.......|
00000ed0  00 00 00 00 43 72 65 61  74 65 48 65 6c 70 00 00  |....CreateHelp..|
00000ee0  38 b5 06 00 47 fd ff ff  6e 33 2d 0a d8 00 00 00  |8...G...n3-.....|
00000ef0  13 01 00 00 00 00 00 00  52 65 61 64 4d 61 69 6c  |........ReadMail|
00000f00  5f 00 00 00 fc bb 06 00  47 fd ff ff 8d 33 2d 0a  |_.......G....3-.|
00000f10  74 04 00 00 13 01 00 00  00 00 00 00 51 54 4d 5f  |t...........QTM_|
00000f20  00 00 00 00 e0 19 07 00  47 fd ff ff 0d 34 2d 0a  |........G....4-.|
00000f30  2c 00 00 00 13 01 00 00  00 00 00 00 41 72 63 46  |,...........ArcF|
00000f40  53 4d 65 6d 4d 61 6e 5f  00 00 00 00 dc 1a 07 00  |SMemMan_........|
00000f50  47 fd ff ff 16 34 2d 0a  10 01 00 00 13 01 00 00  |G....4-.........|
00000f60  00 00 00 00 44 69 72 65  63 74 6f 72 5f 00 00 00  |....Director_...|
00000f70  9c 21 07 00 47 fd ff ff  38 34 2d 0a 2c 00 00 00  |.!..G...84-.,...|
00000f80  13 01 00 00 00 00 00 00  52 65 6d 6f 74 65 50 72  |........RemotePr|
00000f90  69 6e 74 65 72 53 75 70  70 6f 72 74 5f 00 00 00  |interSupport_...|
00000fa0  8c 22 07 00 46 fd ff ff  b1 b2 13 fa 59 00 00 00  |."..F.......Y...|
00000fb0  13 00 00 00 00 00 00 00  4e 65 77 41 64 64 65 64  |........NewAdded|
00000fc0  00 00 00 00 e8 22 07 00  47 fd ff ff 44 34 2d 0a  |....."..G...D4-.|
00000fd0  2c 00 00 00 13 01 00 00  00 00 00 00 50 6f 63 6b  |,...........Pock|
00000fe0  65 74 46 53 5f 00 00 00  1c 24 07 00 47 fd ff ff  |etFS_....$..G...|
00000ff0  4d 34 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |M4-.,...........|
00001000  50 6f 63 6b 65 74 4c 69  6e 6b 5f 00 90 25 07 00  |PocketLink_..%..|
00001010  47 fd ff ff a7 e4 2b 0a  f7 01 00 00 13 00 00 00  |G.....+.........|
00001020  00 00 00 00 43 6f 6e 74  72 69 62 75 74 6f 72 73  |....Contributors|
00001030  00 00 00 00 88 27 07 00  47 fd ff ff 5a 34 2d 0a  |.....'..G...Z4-.|
00001040  d4 01 00 00 13 01 00 00  00 00 00 00 4a 50 45 47  |............JPEG|
00001050  5f 00 00 00 d8 3e 07 00  47 fd ff ff 8f 34 2d 0a  |_....>..G....4-.|
00001060  2c 00 00 00 13 01 00 00  00 00 00 00 4c 69 6e 65  |,...........Line|
00001070  45 64 69 74 6f 72 5f 00  b0 3f 07 00 47 fd ff ff  |Editor_..?..G...|
00001080  97 34 2d 0a 2c 00 00 00  13 01 00 00 00 00 00 00  |.4-.,...........|
00001090  43 6f 6d 70 72 65 73 73  4a 50 45 47 5f 00 00 00  |CompressJPEG_...|
000010a0  48 40 07 00 47 fd ff ff  9f 34 2d 0a 44 00 00 00  |H@..G....4-.D...|
000010b0  13 01 00 00 00 00 00 00  65 76 65 6e 74 5f 00 00  |........event_..|
000010c0  70 46 07 00 47 fd ff ff  ac 34 2d 0a 30 01 00 00  |pF..G....4-.0...|
000010d0  13 01 00 00 00 00 00 00  47 64 62 6d 5f 00 00 00  |........Gdbm_...|
000010e0  44 41 54 41 20 00 00 00  00 40 2d e9 00 e0 d0 e5  |DATA ....@-.....|
000010f0  58 00 5e e3 78 00 5e 13  01 00 80 02 00 80 fd e8  |X.^.x.^.........|
00001100  44 41 54 41 44 02 00 00  53 57 49 0a 23 50 61 72  |DATAD...SWI.#Par|
00001110  65 6e 74 20 53 74 72 6f  6e 67 48 65 6c 70 3a 21  |ent StrongHelp:!|
00001120  4d 65 6e 75 0a 23 50 6f  73 74 66 69 78 20 5f 0a  |Menu.#Postfix _.|
00001130  23 54 61 62 6c 65 20 43  6f 6c 75 6d 6e 73 20 33  |#Table Columns 3|
00001140  0a 3c 41 44 46 53 3e 0a  3c 42 61 73 69 63 54 72  |.<ADFS>.<BasicTr|
00001150  61 6e 73 3e 0a 3c 42 75  66 66 65 72 3e 0a 3c 43  |ans>.<Buffer>.<C|
00001160  61 63 68 65 3e 0a 3c 43  6f 6c 6f 75 72 54 72 61  |ache>.<ColourTra|
00001170  6e 73 3e 0a 3c 43 6f 6c  6f 75 72 50 69 63 6b 65  |ns>.<ColourPicke|
00001180  72 3e 0a 3c 44 65 62 75  67 67 65 72 3e 0a 3c 44  |r>.<Debugger>.<D|
00001190  65 76 69 63 65 46 53 3e  0a 3c 44 4f 53 46 53 3e  |eviceFS>.<DOSFS>|
000011a0  0a 3c 44 72 61 67 41 53  70 72 69 74 65 3e 0a 3c  |.<DragASprite>.<|
000011b0  44 72 61 77 3e 0a 3c 44  72 61 77 46 69 6c 65 3e  |Draw>.<DrawFile>|
000011c0  0a 3c 45 63 6f 6e 65 74  3e 0a 3c 46 69 6c 65 43  |.<Econet>.<FileC|
000011d0  6f 72 65 3e 0a 3c 46 69  6c 65 72 41 63 74 69 6f  |ore>.<FilerActio|
000011e0  6e 3e 0a 3c 46 69 6c 74  65 72 3e 0a 3c 46 6f 6e  |n>.<Filter>.<Fon|
000011f0  74 3e 0a 3c 46 50 45 6d  75 6c 61 74 6f 72 3e 0a  |t>.<FPEmulator>.|
00001200  3c 46 72 65 65 3e 0a 3c  48 6f 75 72 67 6c 61 73  |<Free>.<Hourglas|
00001210  73 3e 0a 3c 49 49 43 3e  0a 3c 4a 6f 79 73 74 69  |s>.<IIC>.<Joysti|
00001220  63 6b 3e 0a 3c 4a 50 45  47 3e 0a 3c 4d 65 73 73  |ck>.<JPEG>.<Mess|
00001230  61 67 65 54 72 61 6e 73  3e 0a 3c 4e 65 74 46 53  |ageTrans>.<NetFS|
00001240  3e 0a 3c 4e 65 74 50 72  69 6e 74 3e 0a 3c 4f 53  |>.<NetPrint>.<OS|
00001250  3e 0a 3c 50 61 72 61 6c  6c 65 6c 3e 0a 3c 50 44  |>.<Parallel>.<PD|
00001260  72 69 76 65 72 3e 0a 3c  50 44 75 6d 70 65 72 3e  |river>.<PDumper>|
00001270  0a 3c 50 6f 64 75 6c 65  3e 0a 3c 52 61 6d 46 53  |.<Podule>.<RamFS|
00001280  3e 0a 3c 52 65 73 6f 75  72 63 65 46 53 3e 0a 3c  |>.<ResourceFS>.<|
00001290  53 43 53 49 3e 0a 3c 53  63 72 65 65 6e 42 6c 61  |SCSI>.<ScreenBla|
000012a0  6e 6b 65 72 3e 0a 3c 53  68 61 72 65 64 43 4c 69  |nker>.<SharedCLi|
000012b0  62 72 61 72 79 3e 0a 3c  53 68 65 6c 6c 3e 0a 3c  |brary>.<Shell>.<|
000012c0  53 6f 75 6e 64 3e 0a 3c  53 71 75 61 73 68 3e 0a  |Sound>.<Squash>.|
000012d0  3c 53 75 70 65 72 3e 0a  3c 54 61 73 6b 4d 61 6e  |<Super>.<TaskMan|
000012e0  61 67 65 72 3e 0a 3c 54  61 73 6b 57 69 6e 64 6f  |ager>.<TaskWindo|
000012f0  77 3e 0a 3c 54 65 72 72  69 74 6f 72 79 3e 0a 3c  |w>.<Territory>.<|
00001300  57 69 6d 70 3e 0a 23 45  6e 64 54 61 62 6c 65 0a  |Wimp>.#EndTable.|
00001310  0a 3c 4e 6f 6e 2d 4f 53  20 63 61 6c 6c 73 3d 3e  |.<Non-OS calls=>|
00001320  4e 6f 6e 4f 53 3e 09 3c  43 6f 6e 74 72 69 62 75  |NonOS>.<Contribu|
00001330  74 6f 72 73 3d 3e 43 6f  6e 74 72 69 62 75 74 6f  |tors=>Contributo|
00001340  72 73 3e 0a 44 49 52 24  2c 00 00 00 2c 00 00 00  |rs>.DIR$,...,...|
00001350  70 13 00 00 46 fd ff ff  05 4d c7 13 62 00 00 00  |p...F....M..b...|
00001360  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00001370  44 41 54 41 62 00 00 00  41 42 43 4c 69 62 0a 23  |DATAb...ABCLib.#|
00001380  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
00001390  65 66 69 78 20 41 42 43  4c 69 62 5f 0a 23 54 61  |efix ABCLib_.#Ta|
000013a0  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 49 6e  |ble Columns 2.In|
000013b0  69 74 0a 52 65 67 69 73  74 65 72 0a 50 72 6f 66  |it.Register.Prof|
000013c0  69 6c 65 0a 57 41 43 0a  23 45 6e 64 54 61 62 6c  |ile.WAC.#EndTabl|
000013d0  65 0a 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |e...DIR$,...,...|
000013e0  00 14 00 00 46 fd ff ff  a2 fd 71 18 6d 00 00 00  |....F.....q.m...|
000013f0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00001400  44 41 54 41 6d 00 00 00  41 42 49 0a 23 50 61 72  |DATAm...ABI.#Par|
00001410  65 6e 74 20 21 52 6f 6f  74 0a 23 50 72 65 66 69  |ent !Root.#Prefi|
00001420  78 20 41 42 49 5f 0a 23  54 61 62 6c 65 20 43 6f  |x ABI_.#Table Co|
00001430  6c 75 6d 6e 73 20 31 0a  49 6e 69 74 69 61 6c 69  |lumns 1.Initiali|
00001440  73 65 0a 43 6c 6f 73 65  44 6f 77 6e 0a 52 65 6e  |se.CloseDown.Ren|
00001450  64 65 72 53 6c 61 62 0a  52 65 73 65 74 0a 4b 69  |derSlab.Reset.Ki|
00001460  6c 6c 0a 23 45 6e 64 54  61 62 6c 65 0a 00 00 00  |ll.#EndTable....|
00001470  44 49 52 24 28 02 00 00  28 02 00 00 98 16 00 00  |DIR$(...(.......|
00001480  46 fd ff ff c8 e9 a2 d7  f5 00 00 00 13 00 00 00  |F...............|
00001490  00 00 00 00 21 52 6f 6f  74 00 00 00 90 17 00 00  |....!Root.......|
000014a0  46 ff ff ff 0f 10 a3 d7  09 01 00 00 13 00 00 00  |F...............|
000014b0  00 00 00 00 43 6f 6e 74  72 6f 6c 6c 65 72 54 79  |....ControllerTy|
000014c0  70 65 00 00 9c 18 00 00  46 ff ff ff 2c 98 ab d7  |pe......F...,...|
000014d0  9d 00 00 00 13 00 00 00  00 00 00 00 44 72 69 76  |............Driv|
000014e0  65 73 00 00 3c 19 00 00  46 ff ff ff b5 aa ab d7  |es..<...F.......|
000014f0  a9 00 00 00 13 00 00 00  00 00 00 00 44 65 73 63  |............Desc|
00001500  72 69 62 65 44 69 73 63  00 00 00 00 e8 19 00 00  |ribeDisc........|
00001510  46 ff ff ff 4e af ab d7  9c 00 00 00 13 00 00 00  |F...N...........|
00001520  00 00 00 00 44 69 73 63  4f 70 00 00 84 1a 00 00  |....DiscOp......|
00001530  46 ff ff ff 5c c0 ab d7  7a 00 00 00 13 00 00 00  |F...\...z.......|
00001540  00 00 00 00 45 43 43 53  41 6e 64 52 65 74 72 69  |....ECCSAndRetri|
00001550  65 73 00 00 00 1b 00 00  46 ff ff ff aa c4 ab d7  |es......F.......|
00001560  a3 00 00 00 13 00 00 00  00 00 00 00 46 72 65 65  |............Free|
00001570  53 70 61 63 65 00 00 00  a4 1b 00 00 46 ff ff ff  |Space.......F...|
00001580  1c ff ac d7 72 02 00 00  13 00 00 00 00 00 00 00  |....r...........|
00001590  48 44 43 00 18 1e 00 00  46 ff ff ff 54 39 ac d7  |HDC.....F...T9..|
000015a0  a9 02 00 00 13 00 00 00  00 00 00 00 49 44 45 55  |............IDEU|
000015b0  73 65 72 4f 70 00 00 00  c4 20 00 00 46 ff ff ff  |serOp.... ..F...|
000015c0  1b 44 ac d7 9c 00 00 00  13 00 00 00 00 00 00 00  |.D..............|
000015d0  4d 69 73 63 4f 70 00 00  60 21 00 00 46 ff ff ff  |MiscOp..`!..F...|
000015e0  d2 9c ac d7 3c 03 00 00  13 00 00 00 00 00 00 00  |....<...........|
000015f0  50 6f 77 65 72 43 6f 6e  74 72 6f 6c 00 00 00 00  |PowerControl....|
00001600  9c 24 00 00 46 ff ff ff  66 c4 ac d7 64 02 00 00  |.$..F...f...d...|
00001610  13 00 00 00 00 00 00 00  52 65 74 72 69 65 73 00  |........Retries.|
00001620  00 27 00 00 46 ff ff ff  6e d8 ac d7 d8 01 00 00  |.'..F...n.......|
00001630  13 00 00 00 00 00 00 00  53 65 74 49 44 45 43 6f  |........SetIDECo|
00001640  6e 74 72 6f 6c 6c 65 72  00 00 00 00 d8 28 00 00  |ntroller.....(..|
00001650  46 ff ff ff 85 ef ac d7  70 04 00 00 13 00 00 00  |F.......p.......|
00001660  00 00 00 00 56 65 74 46  6f 72 6d 61 74 00 00 00  |....VetFormat...|
00001670  48 2d 00 00 46 ff ff ff  48 4b a6 fa 6a 00 00 00  |H-..F...HK..j...|
00001680  13 00 00 00 00 00 00 00  46 6c 70 50 72 6f 63 65  |........FlpProce|
00001690  73 73 44 43 42 00 00 00  44 41 54 41 f5 00 00 00  |ssDCB...DATA....|
000016a0  41 44 46 53 0a 23 50 72  65 66 69 78 20 41 44 46  |ADFS.#Prefix ADF|
000016b0  53 5f 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |S_.#Parent !Root|
000016c0  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
000016d0  32 0a 3c 43 6f 6e 74 72  6f 6c 6c 65 72 54 79 70  |2.<ControllerTyp|
000016e0  65 3e 0a 3c 44 65 73 63  72 69 62 65 44 69 73 63  |e>.<DescribeDisc|
000016f0  3e 0a 3c 44 69 73 63 4f  70 3e 0a 3c 44 72 69 76  |>.<DiscOp>.<Driv|
00001700  65 73 3e 0a 3c 45 43 43  53 41 6e 64 52 65 74 72  |es>.<ECCSAndRetr|
00001710  69 65 73 3e 0a 3c 46 6c  70 50 72 6f 63 65 73 73  |ies>.<FlpProcess|
00001720  44 43 42 3e 0a 3c 46 72  65 65 53 70 61 63 65 3e  |DCB>.<FreeSpace>|
00001730  0a 3c 48 44 43 3e 0a 3c  49 44 45 55 73 65 72 4f  |.<HDC>.<IDEUserO|
00001740  70 3e 0a 3c 4d 69 73 63  4f 70 3e 0a 3c 50 6f 77  |p>.<MiscOp>.<Pow|
00001750  65 72 43 6f 6e 74 72 6f  6c 3e 0a 3c 52 65 74 72  |erControl>.<Retr|
00001760  69 65 73 3e 0a 3c 53 65  74 49 44 45 43 6f 6e 74  |ies>.<SetIDECont|
00001770  72 6f 6c 6c 65 72 3e 0a  3c 56 65 74 46 6f 72 6d  |roller>.<VetForm|
00001780  61 74 3e 0a 23 45 6e 64  54 61 62 6c 65 00 00 00  |at>.#EndTable...|
00001790  44 41 54 41 09 01 00 00  41 44 46 53 5f 43 6f 6e  |DATA....ADFS_Con|
000017a0  74 72 6f 6c 6c 65 72 54  79 70 65 20 28 26 34 30  |trollerType (&40|
000017b0  32 34 38 29 0a 3d 3e 09  52 30 20 3d 09 64 72 69  |248).=>.R0 =.dri|
000017c0  76 65 20 6e 75 6d 62 65  72 20 28 30 2d 37 29 0a  |ve number (0-7).|
000017d0  3c 3d 09 52 30 20 3d 09  63 6f 6e 74 72 6f 6c 6c  |<=.R0 =.controll|
000017e0  65 72 20 74 79 70 65 3a  0a 09 20 09 30 20 3d 3e  |er type:.. .0 =>|
000017f0  20 64 69 73 63 20 6e 6f  74 20 70 72 65 73 65 6e  | disc not presen|
00001800  74 0a 09 20 09 31 20 3d  3e 20 31 37 37 32 0a 09  |t.. .1 => 1772..|
00001810  20 09 32 20 3d 3e 20 37  31 30 2f 37 31 31 0a 09  | .2 => 710/711..|
00001820  20 09 33 20 3d 3e 20 53  54 35 30 36 0a 09 20 09  | .3 => ST506.. .|
00001830  34 20 3d 3e 20 49 44 45  0a 0a 54 68 69 73 20 63  |4 => IDE..This c|
00001840  61 6c 6c 20 72 65 74 75  72 6e 73 20 74 68 65 20  |all returns the |
00001850  63 6f 6e 74 72 6f 6c 6c  65 72 20 74 79 70 65 20  |controller type |
00001860  6f 66 20 74 68 65 20 67  69 76 65 6e 20 64 72 69  |of the given dri|
00001870  76 65 2c 20 61 6e 64 20  69 73 20 6e 6f 74 20 61  |ve, and is not a|
00001880  76 61 69 6c 61 62 6c 65  20 75 6e 64 65 72 20 52  |vailable under R|
00001890  49 53 43 20 4f 53 20 32  2e 00 00 00 44 41 54 41  |ISC OS 2....DATA|
000018a0  9d 00 00 00 41 44 46 53  5f 44 72 69 76 65 73 20  |....ADFS_Drives |
000018b0  20 28 26 34 30 32 34 32  29 0a 23 50 61 72 65 6e  | (&40242).#Paren|
000018c0  74 20 41 44 46 53 5f 0a  54 68 69 73 20 53 57 49  |t ADFS_.This SWI|
000018d0  20 63 61 6c 6c 73 20 3c  46 69 6c 65 43 6f 72 65  | calls <FileCore|
000018e0  5f 44 72 69 76 65 73 3e  2c 20 61 66 74 65 72 20  |_Drives>, after |
000018f0  66 69 72 73 74 20 73 65  74 74 69 6e 67 20 52 38  |first setting R8|
00001900  20 74 6f 20 70 6f 69 6e  74 20 74 6f 20 74 68 65  | to point to the|
00001910  20 46 69 6c 65 43 6f 72  65 20 69 6e 73 74 61 6e  | FileCore instan|
00001920  63 65 20 70 72 69 76 61  74 65 20 77 6f 72 64 20  |ce private word |
00001930  66 6f 72 20 41 44 46 53  2e 00 00 00 44 41 54 41  |for ADFS....DATA|
00001940  a9 00 00 00 41 44 46 53  5f 44 65 73 63 72 69 62  |....ADFS_Describ|
00001950  65 44 69 73 63 20 28 26  34 30 32 34 35 29 0a 23  |eDisc (&40245).#|
00001960  50 61 72 65 6e 74 20 41  44 46 53 5f 0a 54 68 69  |Parent ADFS_.Thi|
00001970  73 20 53 57 49 20 63 61  6c 6c 73 20 3c 46 69 6c  |s SWI calls <Fil|
00001980  65 43 6f 72 65 5f 44 65  73 63 72 69 62 65 44 69  |eCore_DescribeDi|
00001990  73 63 3e 2c 20 61 66 74  65 72 20 66 69 72 73 74  |sc>, after first|
000019a0  20 73 65 74 74 69 6e 67  20 52 38 20 74 6f 20 70  | setting R8 to p|
000019b0  6f 69 6e 74 20 74 6f 20  74 68 65 20 46 69 6c 65  |oint to the File|
000019c0  43 6f 72 65 20 69 6e 73  74 61 6e 63 65 20 70 72  |Core instance pr|
000019d0  69 76 61 74 65 20 77 6f  72 64 20 66 6f 72 20 41  |ivate word for A|
000019e0  44 46 53 2e 20 00 00 00  44 41 54 41 9c 00 00 00  |DFS. ...DATA....|
000019f0  41 44 46 53 5f 44 69 73  63 4f 70 20 28 26 34 30  |ADFS_DiscOp (&40|
00001a00  32 34 30 29 0a 23 50 61  72 65 6e 74 20 41 44 46  |240).#Parent ADF|
00001a10  53 5f 0a 54 68 69 73 20  53 57 49 20 63 61 6c 6c  |S_.This SWI call|
00001a20  73 20 3c 46 69 6c 65 43  6f 72 65 5f 44 69 73 63  |s <FileCore_Disc|
00001a30  4f 70 3e 2c 20 61 66 74  65 72 20 66 69 72 73 74  |Op>, after first|
00001a40  20 73 65 74 74 69 6e 67  20 52 38 20 74 6f 20 70  | setting R8 to p|
00001a50  6f 69 6e 74 20 74 6f 20  74 68 65 20 46 69 6c 65  |oint to the File|
00001a60  43 6f 72 65 20 69 6e 73  74 61 6e 63 65 20 70 72  |Core instance pr|
00001a70  69 76 61 74 65 20 77 6f  72 64 20 66 6f 72 20 41  |ivate word for A|
00001a80  44 46 53 2e 44 41 54 41  7a 00 00 00 41 44 46 53  |DFS.DATAz...ADFS|
00001a90  5f 45 43 43 53 41 6e 64  52 65 74 72 69 65 73 20  |_ECCSAndRetries |
00001aa0  20 28 26 34 30 32 35 30  29 0a 23 50 61 72 65 6e  | (&40250).#Paren|
00001ab0  74 20 41 44 46 53 5f 0a  54 68 69 73 20 63 61 6c  |t ADFS_.This cal|
00001ac0  6c 20 69 73 20 66 6f 72  20 69 6e 74 65 72 6e 61  |l is for interna|
00001ad0  6c 20 75 73 65 20 6f 6e  6c 79 2c 20 61 6e 64 20  |l use only, and |
00001ae0  6e 6f 74 20 61 76 61 69  6c 61 62 6c 65 20 75 6e  |not available un|
00001af0  64 65 72 20 52 49 53 43  20 4f 53 20 32 2e 00 00  |der RISC OS 2...|
00001b00  44 41 54 41 a3 00 00 00  41 44 46 53 5f 46 72 65  |DATA....ADFS_Fre|
00001b10  65 53 70 61 63 65 20 20  28 26 34 30 32 34 33 29  |eSpace  (&40243)|
00001b20  0a 23 50 61 72 65 6e 74  20 41 44 46 53 5f 0a 54  |.#Parent ADFS_.T|
00001b30  68 69 73 20 53 57 49 20  63 61 6c 6c 73 20 3c 46  |his SWI calls <F|
00001b40  69 6c 65 43 6f 72 65 5f  46 72 65 65 53 70 61 63  |ileCore_FreeSpac|
00001b50  65 3e 2c 20 61 66 74 65  72 20 66 69 72 73 74 20  |e>, after first |
00001b60  73 65 74 74 69 6e 67 20  52 38 20 74 6f 20 70 6f  |setting R8 to po|
00001b70  69 6e 74 20 74 6f 20 74  68 65 20 46 69 6c 65 43  |int to the FileC|
00001b80  6f 72 65 20 69 6e 73 74  61 6e 63 65 20 70 72 69  |ore instance pri|
00001b90  76 61 74 65 20 77 6f 72  64 20 66 6f 72 20 41 44  |vate word for AD|
00001ba0  46 53 2e 00 44 41 54 41  72 02 00 00 41 44 46 53  |FS..DATAr...ADFS|
00001bb0  5f 48 44 43 20 20 28 26  34 30 32 34 31 29 0a 23  |_HDC  (&40241).#|
00001bc0  50 61 72 65 6e 74 20 41  44 46 53 5f 0a 3d 3e 09  |Parent ADFS_.=>.|
00001bd0  52 32 20 3d 09 61 64 64  72 65 73 73 20 6f 66 20  |R2 =.address of |
00001be0  61 6c 74 65 72 6e 61 74  69 76 65 20 68 61 72 64  |alternative hard|
00001bf0  20 64 69 73 63 20 63 6f  6e 74 72 6f 6c 6c 65 72  | disc controller|
00001c00  0a 09 52 33 20 3d 09 61  64 64 72 65 73 73 20 6f  |..R3 =.address o|
00001c10  66 20 70 6f 6c 6c 20 6c  6f 63 61 74 69 6f 6e 20  |f poll location |
00001c20  66 6f 72 20 49 52 51 2f  44 52 51 0a 09 52 34 20  |for IRQ/DRQ..R4 |
00001c30  3d 09 62 69 74 73 20 66  6f 72 20 49 52 51 2f 44  |=.bits for IRQ/D|
00001c40  52 51 0a 09 52 35 20 3d  09 61 64 64 72 65 73 73  |RQ..R5 =.address|
00001c50  20 74 6f 20 65 6e 61 62  6c 65 20 49 52 51 2f 44  | to enable IRQ/D|
00001c60  52 51 0a 09 52 36 20 3d  09 62 69 74 73 20 74 6f  |RQ..R6 =.bits to|
00001c70  20 65 6e 61 62 6c 65 20  49 52 51 2f 44 52 51 0a  | enable IRQ/DRQ.|
00001c80  0a 54 68 69 73 20 63 61  6c 6c 20 73 65 74 73 20  |.This call sets |
00001c90  75 70 20 74 68 65 20 61  64 64 72 65 73 73 20 6f  |up the address o|
00001ca0  66 20 74 68 65 20 53 54  35 30 35 36 20 68 61 72  |f the ST5056 har|
00001cb0  64 20 64 69 73 63 20 63  6f 6e 74 72 6f 6c 6c 65  |d disc controlle|
00001cc0  72 20 74 6f 20 62 65 20  75 73 65 64 20 62 79 20  |r to be used by |
00001cd0  74 68 65 20 41 44 46 53  2e 20 46 6f 72 20 69 6e  |the ADFS. For in|
00001ce0  73 74 61 6e 63 65 2c 20  61 6e 20 65 78 70 61 6e  |stance, an expan|
00001cf0  73 69 6f 6e 20 63 61 72  64 20 63 61 6e 20 73 75  |sion card can su|
00001d00  70 6c 6c 79 20 61 6e 20  61 6c 74 65 72 6e 61 74  |plly an alternat|
00001d10  69 76 65 20 63 6f 6e 74  72 6f 6c 6c 65 72 20 74  |ive controller t|
00001d20  6f 20 74 68 65 20 6f 6e  65 20 6e 6f 72 6d 61 6c  |o the one normal|
00001d30  6c 79 20 75 73 65 64 2e  20 54 68 65 20 63 6f 6e  |ly used. The con|
00001d40  74 72 6f 6c 6c 65 72 20  6d 75 73 74 20 62 65 20  |troller must be |
00001d50  61 6e 20 48 44 36 33 34  36 33 20 28 6f 72 20 63  |an HD63463 (or c|
00001d60  6f 6d 70 61 74 69 62 6c  65 29 2e 0a 0a 54 68 65  |ompatible)...The|
00001d70  20 70 6f 6c 6c 69 6e 67  20 61 6e 64 20 69 6e 74  | polling and int|
00001d80  65 72 75 70 74 20 73 65  6e 73 65 20 69 73 20 64  |erupt sense is d|
00001d90  6f 6e 65 20 75 73 69 6e  67 3a 0a 23 49 6e 64 65  |one using:.#Inde|
00001da0  6e 74 20 32 3b 66 63 6f  64 65 0a 4c 44 52 42 20  |nt 2;fcode.LDRB |
00001db0  20 3c 52 6e 3d 3e 41 73  73 65 6d 62 6c 79 3a 52  | <Rn=>Assembly:R|
00001dc0  6e 3e 2c 5b 70 6f 6c 6c  20 6c 6f 63 61 74 69 6f  |n>,[poll locatio|
00001dd0  6e 5d 0a 54 53 54 20 20  20 52 6e 2c 5b 70 6f 6c  |n].TST   Rn,[pol|
00001de0  6c 20 62 69 74 73 5d 0a  23 49 6e 64 65 6e 74 3b  |l bits].#Indent;|
00001df0  66 0a 0a 54 68 65 20 49  52 51 2f 44 52 51 20 6d  |f..The IRQ/DRQ m|
00001e00  75 73 74 20 62 65 20 31  20 77 68 65 6e 20 61 63  |ust be 1 when ac|
00001e10  74 69 76 65 2e 0a 00 00  44 41 54 41 a9 02 00 00  |tive....DATA....|
00001e20  41 44 46 53 5f 49 44 45  55 73 65 72 4f 70 20 28  |ADFS_IDEUserOp (|
00001e30  26 34 30 32 34 42 29 0a  23 50 61 72 65 6e 74 20  |&4024B).#Parent |
00001e40  41 44 46 53 5f 0a 3d 3e  09 52 30 20 3d 09 3c 66  |ADFS_.=>.R0 =.<f|
00001e50  6c 61 67 73 3d 3e 2e 66  6c 61 67 73 3e 0a 09 52  |lags=>.flags>..R|
00001e60  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 70  |2 =.pointer to p|
00001e70  61 72 61 6d 65 74 65 72  20 62 6c 6f 63 6b 20 66  |arameter block f|
00001e80  6f 72 20 63 6f 6d 6d 61  6e 64 20 61 6e 64 20 72  |or command and r|
00001e90  65 73 75 6c 74 73 0a 09  52 33 20 3d 09 70 6f 69  |esults..R3 =.poi|
00001ea0  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 0a 09  |nter to buffer..|
00001eb0  52 34 20 3d 09 6c 65 6e  67 74 68 20 74 6f 20 74  |R4 =.length to t|
00001ec0  72 61 6e 73 66 65 72 0a  09 52 35 20 3d 09 74 69  |ransfer..R5 =.ti|
00001ed0  6d 65 6f 75 74 20 69 6e  20 63 65 6e 74 69 73 65  |meout in centise|
00001ee0  63 6f 6e 64 73 20 28 30  20 3d 3e 20 75 73 65 20  |conds (0 => use |
00001ef0  64 65 66 61 75 6c 74 29  0a 09 52 31 32 20 3d 09  |default)..R12 =.|
00001f00  70 6f 69 6e 74 65 72 20  74 6f 20 73 74 61 74 69  |pointer to stati|
00001f10  63 20 77 6f 72 6b 20 73  70 61 63 65 0a 0a 3c 3d  |c work space..<=|
00001f20  09 52 30 20 3d 09 63 6f  6d 6d 61 6e 64 20 73 74  |.R0 =.command st|
00001f30  61 74 75 73 20 28 30 20  6f 72 20 61 20 64 69 73  |atus (0 or a dis|
00001f40  63 20 65 72 72 6f 72 20  6e 75 6d 62 65 72 29 0a  |c error number).|
00001f50  09 52 32 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R2 preserved..R|
00001f60  33 2c 52 34 20 75 70 64  61 74 65 64 0a 09 52 35  |3,R4 updated..R5|
00001f70  20 63 6f 72 72 75 70 74  65 64 0a 0a 54 68 69 73  | corrupted..This|
00001f80  20 63 61 6c 6c 20 70 72  6f 76 69 64 65 73 20 74  | call provides t|
00001f90  68 65 20 64 69 72 65 63  74 20 75 73 65 20 69 6e  |he direct use in|
00001fa0  74 65 72 66 61 63 65 20  66 6f 72 20 6c 6f 77 2d  |terface for low-|
00001fb0  6c 65 76 65 6c 20 49 44  45 20 63 6f 6d 6d 61 6e  |level IDE comman|
00001fc0  64 73 2e 20 49 74 20 6d  75 73 74 20 6e 6f 74 20  |ds. It must not |
00001fd0  62 65 20 63 61 6c 6c 65  64 20 69 6e 20 62 61 63  |be called in bac|
00001fe0  6b 67 72 6f 75 6e 64 2e  0a 23 53 75 62 70 61 67  |kground..#Subpag|
00001ff0  65 20 66 6c 61 67 73 0a  49 44 45 20 43 6f 6e 74  |e flags.IDE Cont|
00002000  72 6f 6c 6c 65 72 20 66  6c 61 67 73 0a 42 69 74  |roller flags.Bit|
00002010  09 4d 65 61 6e 69 6e 67  0a 23 6c 69 6e 65 0a 30  |.Meaning.#line.0|
00002020  09 73 65 74 20 3a 20 72  65 73 65 74 20 63 6f 6e  |.set : reset con|
00002030  74 72 6f 6c 6c 65 72 0a  09 63 6c 72 20 3a 20 70  |troller..clr : p|
00002040  72 6f 63 65 73 73 20 63  6f 6d 6d 61 6e 64 0a 32  |rocess command.2|
00002050  34 2d 32 35 09 74 72 61  6e 73 66 65 72 20 64 69  |4-25.transfer di|
00002060  72 65 63 74 69 6f 6e 3a  0a 09 30 30 20 3a 20 6e  |rection:..00 : n|
00002070  6f 20 74 72 61 6e 73 66  65 72 0a 09 30 31 20 3a  |o transfer..01 :|
00002080  20 72 65 61 64 20 28 69  65 20 62 69 74 20 32 34  | read (ie bit 24|
00002090  20 73 65 74 29 0a 09 31  30 20 3a 20 77 72 69 74  | set)..10 : writ|
000020a0  65 20 28 69 65 20 62 69  74 20 32 35 20 73 65 74  |e (ie bit 25 set|
000020b0  29 0a 09 31 31 20 3a 20  72 65 73 65 72 76 65 64  |)..11 : reserved|
000020c0  0a 00 00 00 44 41 54 41  9c 00 00 00 41 44 46 53  |....DATA....ADFS|
000020d0  5f 4d 69 73 63 4f 70 20  28 26 34 30 32 34 43 29  |_MiscOp (&4024C)|
000020e0  0a 23 50 61 72 65 6e 74  20 41 44 46 53 5f 0a 54  |.#Parent ADFS_.T|
000020f0  68 69 73 20 53 57 49 20  63 61 6c 6c 73 20 3c 46  |his SWI calls <F|
00002100  69 6c 65 43 6f 72 65 5f  4d 69 73 63 4f 70 3e 2c  |ileCore_MiscOp>,|
00002110  20 61 66 74 65 72 20 66  69 72 73 74 20 73 65 74  | after first set|
00002120  74 69 6e 67 20 52 38 20  74 6f 20 70 6f 69 6e 74  |ting R8 to point|
00002130  20 74 6f 20 74 68 65 20  46 69 6c 65 43 6f 72 65  | to the FileCore|
00002140  20 69 6e 73 74 61 6e 63  65 20 70 72 69 76 61 74  | instance privat|
00002150  65 20 77 6f 72 64 20 66  6f 72 20 41 44 46 53 2e  |e word for ADFS.|
00002160  44 41 54 41 3c 03 00 00  41 44 46 53 5f 50 6f 77  |DATA<...ADFS_Pow|
00002170  65 72 43 6f 6e 74 72 6f  6c 20 28 26 34 30 32 34  |erControl (&4024|
00002180  39 29 0a 3d 3e 09 52 30  20 3d 09 72 65 61 73 6f  |9).=>.R0 =.reaso|
00002190  6e 20 63 6f 64 65 0a 09  20 09 30 20 3d 3e 20 72  |n code.. .0 => r|
000021a0  65 61 64 20 64 72 69 76  65 20 73 70 69 6e 20 73  |ead drive spin s|
000021b0  74 61 74 75 73 0a 09 20  09 31 20 3d 3e 20 73 65  |tatus.. .1 => se|
000021c0  74 20 64 72 69 76 65 20  61 75 74 6f 73 70 69 6e  |t drive autospin|
000021d0  64 6f 77 6e 0a 09 20 09  32 20 3d 3e 20 63 6f 6e  |down.. .2 => con|
000021e0  74 72 6f 6c 20 64 72 69  76 65 20 73 70 69 6e 20  |trol drive spin |
000021f0  64 69 72 65 63 74 6c 79  20 77 69 74 68 6f 75 74  |directly without|
00002200  20 61 66 66 65 63 74 69  6e 67 20 61 75 74 6f 73  | affecting autos|
00002210  70 69 6e 64 6f 77 6e 0a  09 52 31 20 3d 09 64 72  |pindown..R1 =.dr|
00002220  69 76 65 0a 09 52 32 20  3d 09 64 72 69 76 65 20  |ive..R2 =.drive |
00002230  61 75 74 6f 73 70 69 6e  64 6f 77 6e 2c 20 69 66  |autospindown, if|
00002240  20 52 30 20 3d 20 31 3b  0a 09 20 09 20 20 35 20  | R0 = 1;.. .  5 |
00002250  d7 a0 6e 75 6d 62 65 72  20 6f 66 20 73 65 63 6f  |..number of seco|
00002260  6e 64 73 0a 09 20 09 6f  72 20 61 63 74 69 6f 6e  |nds.. .or action|
00002270  20 74 6f 20 74 61 6b 65  2c 20 69 66 20 52 30 20  | to take, if R0 |
00002280  3d 20 32 3b 0a 09 20 09  20 20 30 20 74 6f 20 73  |= 2;.. .  0 to s|
00002290  70 69 6e 20 64 6f 77 6e  20 69 6d 6d 65 64 69 61  |pin down immedia|
000022a0  74 65 6c 79 0a 09 20 09  20 20 6f 74 68 65 72 77  |tely.. .  otherw|
000022b0  69 73 65 2c 20 73 70 69  6e 20 75 70 20 69 6d 6d  |ise, spin up imm|
000022c0  65 64 69 61 74 65 6c 79  0a 0a 3c 3d 09 52 32 20  |ediately..<=.R2 |
000022d0  3d 09 64 72 69 76 65 20  73 70 69 6e 20 73 74 61  |=.drive spin sta|
000022e0  74 75 73 2c 20 69 66 20  52 30 20 3d 20 30 3b 0a  |tus, if R0 = 0;.|
000022f0  09 20 09 20 20 30 20 69  66 20 64 72 69 76 65 20  |. .  0 if drive |
00002300  69 73 6e 27 74 20 73 70  69 6e 6e 69 6e 67 0a 09  |isn't spinning..|
00002310  20 09 20 20 30 20 69 66  20 64 72 69 76 65 20 69  | .  0 if drive i|
00002320  73 20 73 70 69 6e 6e 69  6e 67 0a 09 52 33 20 3d  |s spinning..R3 =|
00002330  09 70 72 65 76 69 6f 75  73 6c 79 20 76 61 6c 75  |.previously valu|
00002340  65 20 66 6f 72 20 64 72  69 76 65 20 61 75 74 6f  |e for drive auto|
00002350  73 70 69 6e 64 6f 77 6e  2c 20 69 66 20 52 30 20  |spindown, if R0 |
00002360  3d 20 31 0a 0a 54 68 69  73 20 63 61 6c 6c 20 63  |= 1..This call c|
00002370  6f 6e 74 72 6f 6c 73 20  74 68 65 20 70 6f 77 65  |ontrols the powe|
00002380  72 20 73 61 76 69 6e 67  20 66 65 61 74 75 72 65  |r saving feature|
00002390  73 20 6f 66 20 74 68 65  20 41 44 46 53 20 73 79  |s of the ADFS sy|
000023a0  73 74 65 6d 2e 20 49 74  20 63 61 6e 20 62 65 20  |stem. It can be |
000023b0  64 61 6e 67 65 72 6f 75  73 20 74 6f 20 75 73 65  |dangerous to use|
000023c0  20 74 68 69 73 20 63 61  6c 6c 20 6f 6e 20 64 72  | this call on dr|
000023d0  69 76 65 73 20 74 68 61  74 20 6e 6f 74 20 66 75  |ives that not fu|
000023e0  6c 6c 79 20 73 75 70 70  6f 72 74 20 64 72 69 76  |lly support driv|
000023f0  65 20 73 70 69 6e 20 63  6f 6e 74 72 6f 6c 2e 20  |e spin control. |
00002400  54 68 65 20 63 6f 6e 74  72 6f 6c 6c 65 72 20 6f  |The controller o|
00002410  6e 20 61 74 20 6c 65 61  73 74 20 74 77 6f 20 64  |n at least two d|
00002420  72 69 76 65 73 20 74 65  73 74 65 64 20 68 61 6e  |rives tested han|
00002430  67 20 75 70 20 77 68 65  6e 20 61 75 74 6f 73 70  |g up when autosp|
00002440  69 6e 64 6f 77 6e 20 69  73 20 65 6e 61 62 6c 65  |indown is enable|
00002450  64 3b 20 61 20 72 65 73  65 74 20 64 6f 65 73 6e  |d; a reset doesn|
00002460  27 74 20 72 65 63 6f 76  65 72 20 74 68 65 20 73  |'t recover the s|
00002470  69 74 75 61 74 69 6f 6e  2c 20 61 6c 74 68 6f 75  |ituation, althou|
00002480  67 68 74 20 61 20 70 6f  77 65 72 2d 64 6f 77 6e  |ght a power-down|
00002490  20 72 65 73 65 74 20 64  6f 65 73 2e 44 41 54 41  | reset does.DATA|
000024a0  64 02 00 00 41 44 46 53  5f 52 65 74 72 69 65 73  |d...ADFS_Retries|
000024b0  20 20 28 26 34 30 32 34  34 29 0a 23 50 61 72 65  |  (&40244).#Pare|
000024c0  6e 74 20 41 44 46 53 5f  0a 3d 3e 09 52 30 20 3d  |nt ADFS_.=>.R0 =|
000024d0  09 6d 61 73 6b 20 6f 66  20 62 69 74 73 20 74 6f  |.mask of bits to|
000024e0  20 63 68 61 6e 67 65 0a  09 52 31 20 3d 09 6e 65  | change..R1 =.ne|
000024f0  77 20 76 61 6c 75 65 73  20 6f 66 20 62 69 74 73  |w values of bits|
00002500  20 74 6f 20 63 68 61 6e  67 65 0a 0a 3c 3d 09 52  | to change..<=.R|
00002510  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
00002520  3d 09 52 30 20 41 4e 44  20 65 6e 74 72 79 20 76  |=.R0 AND entry v|
00002530  61 6c 75 65 20 6f 66 20  52 31 0a 09 52 32 20 3d  |alue of R1..R2 =|
00002540  09 6f 6c 64 20 76 61 6c  75 65 20 6f 66 20 72 65  |.old value of re|
00002550  74 72 79 20 77 6f 72 64  0a 09 52 33 20 3d 09 6e  |try word..R3 =.n|
00002560  65 77 20 76 61 6c 75 65  20 6f 66 20 72 65 74 72  |ew value of retr|
00002570  79 20 77 6f 72 64 0a 0a  54 68 69 73 20 63 61 6c  |y word..This cal|
00002580  6c 20 73 65 74 73 20 75  70 20 74 68 65 20 6e 75  |l sets up the nu|
00002590  6d 62 65 72 20 6f 66 20  72 65 74 72 69 65 73 20  |mber of retries |
000025a0  75 73 65 64 20 62 79 20  77 72 69 74 69 6e 67 20  |used by writing |
000025b0  74 6f 20 74 68 65 20 72  65 74 72 79 20 77 6f 72  |to the retry wor|
000025c0  64 2e 20 54 68 65 20 66  6f 72 6d 61 74 20 6f 66  |d. The format of|
000025d0  20 74 68 65 20 77 6f 72  64 20 69 73 3a 0a 0a 23  | the word is:..#|
000025e0  54 61 62 0a 42 79 74 65  09 4e 75 6d 62 65 72 20  |Tab.Byte.Number |
000025f0  6f 66 20 72 65 74 72 69  65 73 20 66 6f 72 0a 23  |of retries for.#|
00002600  4c 69 6e 65 0a 30 09 68  61 72 64 20 64 69 73 63  |Line.0.hard disc|
00002610  20 72 65 61 64 2f 77 72  69 74 65 20 73 65 63 74  | read/write sect|
00002620  6f 72 0a 31 09 66 6c 6f  70 70 79 20 64 69 73 63  |or.1.floppy disc|
00002630  20 72 65 61 64 2f 77 72  69 74 65 20 73 65 63 74  | read/write sect|
00002640  6f 72 0a 32 09 66 6c 6f  70 70 79 20 64 69 73 63  |or.2.floppy disc|
00002650  20 6d 6f 75 6e 74 20 28  70 65 72 20 63 6f 70 79  | mount (per copy|
00002660  20 6f 66 20 74 68 65 20  64 69 73 63 20 6d 61 70  | of the disc map|
00002670  29 0a 33 09 76 65 72 69  66 79 20 61 66 74 65 72  |).3.verify after|
00002680  20 2a 46 6f 72 6d 61 74  2c 20 62 65 66 6f 72 65  | *Format, before|
00002690  20 73 65 63 74 6f 72 20  69 73 20 63 6f 6e 73 69  | sector is consi|
000026a0  64 65 72 65 64 20 61 20  64 65 66 65 63 74 0a 0a  |dered a defect..|
000026b0  54 68 65 20 6e 65 77 20  76 61 6c 75 65 20 69 73  |The new value is|
000026c0  20 63 61 6c 63 75 6c 61  74 65 64 20 61 73 20 66  | calculated as f|
000026d0  6f 6c 6c 6f 77 73 3a 0a  20 20 28 6f 6c 64 20 76  |ollows:.  (old v|
000026e0  61 6c 75 65 20 41 4e 44  20 4e 4f 54 20 52 30 29  |alue AND NOT R0)|
000026f0  20 45 4f 52 20 28 52 31  20 41 4e 44 20 52 30 29  | EOR (R1 AND R0)|
00002700  44 41 54 41 d8 01 00 00  41 44 46 53 5f 53 65 74  |DATA....ADFS_Set|
00002710  49 44 45 43 6f 6e 74 72  6f 6c 6c 65 72 20 20 28  |IDEController  (|
00002720  26 34 30 32 34 41 29 0a  23 50 61 72 65 6e 74 20  |&4024A).#Parent |
00002730  41 44 46 53 5f 0a 3d 3e  09 52 32 20 3d 09 70 6f  |ADFS_.=>.R2 =.po|
00002740  69 6e 74 65 72 20 74 6f  20 49 44 45 20 63 6f 6e  |inter to IDE con|
00002750  74 72 6f 6c 6c 65 72 0a  09 52 33 20 3d 09 70 6f  |troller..R3 =.po|
00002760  69 6e 74 65 72 20 74 6f  20 69 6e 74 65 72 72 75  |inter to interru|
00002770  70 74 20 73 74 61 74 75  73 20 6f 66 20 63 6f 6e  |pt status of con|
00002780  74 72 6f 6c 6c 65 72 0a  09 52 34 20 3d 09 41 4e  |troller..R4 =.AN|
00002790  44 20 77 69 74 68 20 73  74 61 74 75 73 2c 20 4e  |D with status, N|
000027a0  45 20 3d 3e 20 49 52 51  0a 09 52 35 20 3d 09 70  |E => IRQ..R5 =.p|
000027b0  6f 69 6e 74 65 72 20 74  6f 20 69 6e 74 65 72 72  |ointer to interr|
000027c0  75 70 74 20 6d 61 73 6b  0a 09 52 36 20 3d 09 4f  |upt mask..R6 =.O|
000027d0  52 20 69 6e 74 6f 20 6d  61 73 6b 20 65 6e 61 62  |R into mask enab|
000027e0  6c 65 73 20 49 52 51 0a  09 52 37 20 3d 09 70 6f  |les IRQ..R7 =.po|
000027f0  69 6e 74 65 72 20 74 6f  20 64 61 74 61 20 72 65  |inter to data re|
00002800  61 64 20 72 6f 75 74 69  6e 65 20 28 30 20 66 6f  |ad routine (0 fo|
00002810  72 20 64 65 66 61 75 6c  74 29 0a 09 52 38 20 3d  |r default)..R8 =|
00002820  09 70 6f 69 6e 74 65 72  20 74 6f 20 64 61 74 61  |.pointer to data|
00002830  20 77 72 69 74 65 20 72  6f 75 74 69 6e 65 20 28  | write routine (|
00002840  30 20 66 6f 72 20 64 65  66 61 75 6c 74 29 0a 09  |0 for default)..|
00002850  52 31 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |R12 =.pointer to|
00002860  20 73 74 61 74 69 63 20  77 6f 72 6b 20 73 70 61  | static work spa|
00002870  63 65 0a 0a 3c 3d 09 41  6c 6c 20 72 65 67 69 73  |ce..<=.All regis|
00002880  74 65 72 73 20 70 72 65  73 65 72 76 65 64 0a 0a  |ters preserved..|
00002890  54 68 69 73 20 63 61 6c  6c 20 67 69 76 65 73 20  |This call gives |
000028a0  74 68 65 20 49 44 45 20  64 72 69 76 65 72 20 74  |the IDE driver t|
000028b0  68 65 20 64 65 74 61 69  6c 73 20 6f 66 20 61 6e  |he details of an|
000028c0  20 61 6c 74 65 72 6e 61  74 69 76 65 20 63 6f 6e  | alternative con|
000028d0  74 72 6f 6c 6c 65 72 2e  44 41 54 41 70 04 00 00  |troller.DATAp...|
000028e0  41 44 46 53 5f 56 65 74  46 6f 72 6d 61 74 20 20  |ADFS_VetFormat  |
000028f0  28 26 34 30 32 34 36 29  0a 23 50 61 72 65 6e 74  |(&40246).#Parent|
00002900  20 41 44 46 53 5f 0a 3d  3e 09 52 30 20 3d 09 70  | ADFS_.=>.R0 =.p|
00002910  6f 69 6e 74 65 72 20 74  6f 20 64 69 73 63 20 66  |ointer to disc f|
00002920  6f 72 6d 61 74 20 73 74  72 75 63 74 75 72 65 20  |ormat structure |
00002930  74 6f 20 62 65 20 76 65  74 74 65 64 0a 09 52 31  |to be vetted..R1|
00002940  20 3d 09 70 61 72 61 6d  65 74 65 72 73 20 70 72  | =.parameters pr|
00002950  65 76 69 6f 75 73 6c 79  20 70 61 73 73 65 64 20  |eviously passed |
00002960  62 79 20 41 44 46 53 20  69 6e 20 52 32 20 74 6f  |by ADFS in R2 to|
00002970  20 27 49 6d 61 67 65 27  46 53 5f 44 69 73 63 46  | 'Image'FS_DiscF|
00002980  6f 72 6d 61 74 20 28 69  65 20 64 72 69 76 65 20  |ormat (ie drive |
00002990  6e 75 6d 62 65 72 29 0a  0a 3c 3d 09 52 30 2c 52  |number)..<=.R0,R|
000029a0  31 20 70 72 65 73 65 72  76 65 64 0a 0a 54 68 69  |1 preserved..Thi|
000029b0  73 20 63 61 6c 6c 20 76  65 74 73 20 74 68 65 20  |s call vets the |
000029c0  67 69 76 65 6e 20 64 69  73 63 20 66 6f 72 6d 61  |given disc forma|
000029d0  74 20 73 74 72 75 63 74  75 72 65 20 66 6f 72 20  |t structure for |
000029e0  61 63 68 69 65 76 61 62  69 6c 69 74 79 20 77 69  |achievability wi|
000029f0  74 68 20 74 68 65 20 61  76 61 69 6c 61 62 6c 65  |th the available|
00002a00  20 68 61 72 64 77 61 72  65 2e 20 41 44 46 53 20  | hardware. ADFS |
00002a10  75 70 64 61 74 65 73 20  74 68 65 20 64 69 73 63  |updates the disc|
00002a20  20 66 6f 72 6d 61 74 20  73 74 72 75 63 74 75 72  | format structur|
00002a30  65 73 20 77 69 74 68 20  76 61 6c 75 65 73 20 74  |es with values t|
00002a40  68 61 74 20 69 74 20 63  61 6e 20 61 63 74 75 61  |hat it can actua|
00002a50  6c 6c 79 20 61 63 68 69  65 76 65 20 77 69 74 68  |lly achieve with|
00002a60  20 74 68 65 20 68 61 72  64 77 61 72 65 20 61 76  | the hardware av|
00002a70  61 69 6c 61 62 6c 65 2e  20 46 6f 72 20 65 78 61  |ailable. For exa|
00002a80  6d 70 6c 65 20 74 68 65  20 6f 6e 6c 79 20 66 69  |mple the only fi|
00002a90  6c 6c 20 62 79 74 65 20  76 61 6c 75 65 20 61 76  |ll byte value av|
00002aa0  61 69 6c 61 62 6c 65 20  77 68 65 6e 20 66 6f 72  |ailable when for|
00002ab0  6d 61 74 74 69 6e 67 20  6d 69 67 68 74 20 62 65  |matting might be|
00002ac0  20 30 2c 20 62 75 74 20  74 68 65 20 72 65 71 75  | 0, but the requ|
00002ad0  65 73 74 65 64 20 76 61  6c 75 65 20 6d 61 79 20  |ested value may |
00002ae0  62 65 20 26 34 45 2c 20  68 65 6e 63 65 20 30 20  |be &4E, hence 0 |
00002af0  77 6f 75 6c 64 20 62 65  20 66 69 6c 6c 65 64 20  |would be filled |
00002b00  69 6e 20 61 73 20 74 68  65 20 66 69 6c 6c 20 62  |in as the fill b|
00002b10  79 74 65 20 76 61 6c 75  65 2e 0a 0a 49 66 20 41  |yte value...If A|
00002b20  44 46 53 20 63 61 6e 27  74 20 73 65 6e 73 69 62  |DFS can't sensib|
00002b30  6c 79 20 64 6f 77 6e 67  72 61 64 65 20 74 68 65  |ly downgrade the|
00002b40  20 70 61 72 61 6d 65 74  65 72 73 20 73 74 72 75  | parameters stru|
00002b50  63 74 75 72 65 2c 20 69  74 20 77 69 6c 6c 20 67  |cture, it will g|
00002b60  65 6e 65 72 61 74 65 20  61 6e 20 65 72 72 6f 72  |enerate an error|
00002b70  2e 0a 0a 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |...This call is |
00002b80  74 79 70 69 63 61 6c 6c  79 20 6d 61 64 65 20 62  |typically made b|
00002b90  79 20 46 69 6c 65 43 6f  72 65 20 6f 72 20 62 79  |y FileCore or by|
00002ba0  20 74 68 65 20 69 6d 61  67 65 20 66 69 6c 69 6e  | the image filin|
00002bb0  67 20 73 79 73 74 65 6d  20 27 49 6d 61 67 65 46  |g system 'ImageF|
00002bc0  53 27 2c 20 69 6e 20 72  65 73 70 6f 6e 73 65 20  |S', in response |
00002bd0  74 6f 20 41 44 46 53 20  63 61 6c 6c 69 6e 67 20  |to ADFS calling |
00002be0  3c 46 69 6c 65 43 6f 72  65 5f 44 69 73 63 46 6f  |<FileCore_DiscFo|
00002bf0  72 6d 61 74 3e 20 6f 72  20 27 49 6d 61 67 65 46  |rmat> or 'ImageF|
00002c00  53 27 5f 44 69 73 63 46  6f 72 6d 61 74 20 28 65  |S'_DiscFormat (e|
00002c10  67 20 3c 44 4f 53 46 53  5f 44 69 73 63 46 6f 72  |g <DOSFS_DiscFor|
00002c20  6d 61 74 3e 29 20 72 65  73 70 65 63 74 69 76 65  |mat>) respective|
00002c30  6c 79 2e 0a 0a 54 68 65  20 76 61 6c 75 65 20 69  |ly...The value i|
00002c40  6e 20 52 31 20 69 73 20  75 73 65 64 20 74 6f 20  |n R1 is used to |
00002c50  70 61 73 73 20 65 6e 6f  75 67 68 20 69 6e 66 6f  |pass enough info|
00002c60  72 6d 61 74 69 6f 6e 20  6f 6e 20 74 68 65 20 68  |rmation on the h|
00002c70  61 72 64 77 61 72 65 20  6f 6e 20 77 68 69 63 68  |ardware on which|
00002c80  20 74 68 65 20 66 6f 72  6d 61 74 20 69 73 20 74  | the format is t|
00002c90  6f 20 74 61 6b 65 20 70  6c 61 63 65 20 66 6f 72  |o take place for|
00002ca0  20 74 68 65 20 64 69 73  63 20 66 6f 72 6d 61 74  | the disc format|
00002cb0  20 73 74 72 75 63 74 75  72 65 20 74 6f 20 62 65  | structure to be|
00002cc0  20 76 65 74 74 65 64 2e  20 41 44 46 53 20 75 73  | vetted. ADFS us|
00002cd0  65 73 20 74 68 65 20 64  72 69 76 65 20 6e 75 6d  |es the drive num|
00002ce0  62 65 72 20 66 6f 72 20  74 68 69 73 3b 20 6f 74  |ber for this; ot|
00002cf0  68 65 72 20 68 61 6e 64  6c 65 72 73 20 6f 66 20  |her handlers of |
00002d00  64 69 73 63 73 20 6d 61  79 20 70 61 73 73 20 64  |discs may pass d|
00002d10  69 66 66 65 72 65 6e 74  20 69 6e 66 6f 72 6d 61  |ifferent informa|
00002d20  74 69 6f 6e 20 69 66 20  74 68 65 79 20 69 6d 70  |tion if they imp|
00002d30  6c 65 6d 65 6e 74 20 61  20 56 65 74 46 6f 72 6d  |lement a VetForm|
00002d40  61 74 20 53 57 49 2e 0a  44 41 54 41 6a 00 00 00  |at SWI..DATAj...|
00002d50  41 44 46 53 5f 46 6c 70  50 72 6f 63 65 73 73 44  |ADFS_FlpProcessD|
00002d60  43 42 20 28 26 34 30 32  34 37 29 0a 54 68 69 73  |CB (&40247).This|
00002d70  20 63 61 6c 6c 20 69 73  20 66 6f 72 20 69 6e 74  | call is for int|
00002d80  65 72 6e 61 6c 20 75 73  65 20 6f 6e 6c 79 2c 20  |ernal use only, |
00002d90  61 6e 64 20 6e 6f 74 20  61 76 61 69 6c 61 62 6c  |and not availabl|
00002da0  65 20 75 6e 64 65 72 20  52 49 53 43 20 4f 53 20  |e under RISC OS |
00002db0  32 2e 00 00 44 49 52 24  74 01 00 00 74 01 00 00  |2...DIR$t...t...|
00002dc0  28 2f 00 00 46 fd ff ff  82 47 8c a5 b7 01 00 00  |(/..F....G......|
00002dd0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00002de0  e0 30 00 00 46 ff ff ff  8b 51 8c a5 04 01 00 00  |.0..F....Q......|
00002df0  13 00 00 00 00 00 00 00  41 72 63 68 69 76 65 49  |........ArchiveI|
00002e00  6e 66 6f 00 e4 31 00 00  46 ff ff ff 05 68 8c a5  |nfo..1..F....h..|
00002e10  90 01 00 00 13 00 00 00  00 00 00 00 53 74 61 74  |............Stat|
00002e20  75 73 00 00 74 33 00 00  46 ff ff ff 3b a4 8b a5  |us..t3..F...;...|
00002e30  8a 00 00 00 13 00 00 00  00 00 00 00 4f 70 65 6e  |............Open|
00002e40  41 72 63 68 69 76 65 00  00 34 00 00 46 ff ff ff  |Archive..4..F...|
00002e50  61 b4 8b a5 ac 00 00 00  13 00 00 00 00 00 00 00  |a...............|
00002e60  43 6c 6f 73 65 41 72 63  68 69 76 65 00 00 00 00  |CloseArchive....|
00002e70  ac 34 00 00 46 ff ff ff  a4 d4 8b a5 01 01 00 00  |.4..F...........|
00002e80  13 00 00 00 00 00 00 00  45 6e 63 72 79 70 74 69  |........Encrypti|
00002e90  6f 6e 00 00 b0 35 00 00  46 ff ff ff 78 07 8c a5  |on...5..F...x...|
00002ea0  c0 00 00 00 13 00 00 00  00 00 00 00 43 6f 6d 70  |............Comp|
00002eb0  72 65 73 73 69 6f 6e 00  70 36 00 00 46 fd ff ff  |ression.p6..F...|
00002ec0  d7 04 8c a5 5d 00 00 00  13 00 00 00 00 00 00 00  |....]...........|
00002ed0  63 6f 6d 70 72 65 73 73  74 79 70 65 73 00 00 00  |compresstypes...|
00002ee0  d0 36 00 00 46 ff ff ff  6c 22 8c a5 aa 00 00 00  |.6..F...l"......|
00002ef0  13 00 00 00 00 00 00 00  43 72 65 61 74 65 41 72  |........CreateAr|
00002f00  63 68 69 76 65 00 00 00  7c 37 00 00 46 ff ff ff  |chive...|7..F...|
00002f10  5e 35 8c a5 c7 00 00 00  13 00 00 00 00 00 00 00  |^5..............|
00002f20  43 6f 6d 70 61 63 74 00  44 41 54 41 b7 01 00 00  |Compact.DATA....|
00002f30  41 72 63 46 53 0a 23 50  61 72 65 6e 74 20 21 52  |ArcFS.#Parent !R|
00002f40  6f 6f 74 0a 23 50 72 65  66 69 78 20 41 72 63 46  |oot.#Prefix ArcF|
00002f50  53 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |S_.#Table Column|
00002f60  73 20 32 0a 3c 41 72 63  68 69 76 65 49 6e 66 6f  |s 2.<ArchiveInfo|
00002f70  3e 0a 3c 53 74 61 74 75  73 3e 0a 3c 4f 70 65 6e  |>.<Status>.<Open|
00002f80  41 72 63 68 69 76 65 3e  0a 3c 43 6c 6f 73 65 41  |Archive>.<CloseA|
00002f90  72 63 68 69 76 65 3e 0a  3c 45 6e 63 72 79 70 74  |rchive>.<Encrypt|
00002fa0  69 6f 6e 3e 0a 3c 43 6f  6d 70 72 65 73 73 69 6f  |ion>.<Compressio|
00002fb0  6e 3e 0a 3c 43 72 65 61  74 65 41 72 63 68 69 76  |n>.<CreateArchiv|
00002fc0  65 3e 0a 3c 43 6f 6d 70  61 63 74 3e 0a 52 65 61  |e>.<Compact>.Rea|
00002fd0  64 4f 70 74 69 6f 6e 73  0a 48 6f 75 72 67 6c 61  |dOptions.Hourgla|
00002fe0  73 73 4f 6e 0a 48 6f 75  72 67 6c 61 73 73 4f 66  |ssOn.HourglassOf|
00002ff0  66 0a 53 65 74 45 6e 63  72 79 70 74 69 6f 6e 0a  |f.SetEncryption.|
00003000  53 65 74 43 6f 6d 70 72  65 73 73 69 6f 6e 0a 41  |SetCompression.A|
00003010  75 74 6f 43 6f 6d 70 4f  6e 0a 41 75 74 6f 43 6f  |utoCompOn.AutoCo|
00003020  6d 70 4f 66 66 0a 41 72  63 49 6e 66 6f 0a 4f 70  |mpOff.ArcInfo.Op|
00003030  65 6e 41 72 63 0a 43 6c  6f 73 65 41 72 63 0a 43  |enArc.CloseArc.C|
00003040  72 65 61 74 65 41 72 63  0a 43 6f 6d 70 61 63 74  |reateArc.Compact|
00003050  41 72 63 0a 4f 62 6a 65  63 74 49 6e 66 6f 0a 52  |Arc.ObjectInfo.R|
00003060  65 61 64 42 75 66 66 65  72 53 69 7a 65 73 0a 53  |eadBufferSizes.S|
00003070  65 74 52 44 42 53 69 7a  65 0a 53 65 74 52 41 42  |etRDBSize.SetRAB|
00003080  53 69 7a 65 0a 53 65 74  48 65 61 64 65 72 47 61  |Size.SetHeaderGa|
00003090  70 73 0a 4e 61 6d 65 64  41 72 63 49 6e 66 6f 0a  |ps.NamedArcInfo.|
000030a0  47 65 74 41 72 63 4e 61  6d 65 0a 52 65 61 64 43  |GetArcName.ReadC|
000030b0  6f 6d 70 72 65 73 73 65  64 0a 57 72 69 74 65 43  |ompressed.WriteC|
000030c0  6f 6d 70 72 65 73 73 65  64 0a 45 6e 73 75 72 65  |ompressed.Ensure|
000030d0  47 61 70 73 0a 23 45 6e  64 54 61 62 6c 65 0a 00  |Gaps.#EndTable..|
000030e0  44 41 54 41 04 01 00 00  41 72 63 46 53 5f 41 72  |DATA....ArcFS_Ar|
000030f0  63 68 69 76 65 49 6e 66  6f 20 20 28 26 34 33 37  |chiveInfo  (&437|
00003100  43 30 29 0a 23 50 61 72  65 6e 74 20 41 72 63 46  |C0).#Parent ArcF|
00003110  53 5f 0a 3d 3e 09 52 30  20 3d 09 61 72 63 68 69  |S_.=>.R0 =.archi|
00003120  76 65 20 6e 75 6d 62 65  72 0a 3c 3d 09 52 30 20  |ve number.<=.R0 |
00003130  3d 09 61 72 63 68 69 76  65 20 6e 61 6d 65 20 28  |=.archive name (|
00003140  6f 72 20 6e 75 6c 6c 20  69 66 20 6e 6f 74 20 6f  |or null if not o|
00003150  70 65 6e 29 0a 09 52 31  20 3d 09 61 72 63 68 69  |pen)..R1 =.archi|
00003160  76 65 20 70 61 74 68 0a  09 52 31 20 3d 09 70 6f  |ve path..R1 =.po|
00003170  69 6e 74 65 72 20 74 6f  20 61 72 63 68 69 76 65  |inter to archive|
00003180  20 68 65 61 64 65 72 73  20 28 69 6e 74 65 72 6e  | headers (intern|
00003190  61 6c 20 75 73 65 29 0a  0a 54 68 69 73 20 53 57  |al use)..This SW|
000031a0  49 20 67 69 76 65 73 20  74 68 65 20 6e 61 6d 65  |I gives the name|
000031b0  20 61 6e 64 20 70 61 74  68 6e 61 6d 65 20 6f 66  | and pathname of|
000031c0  20 74 68 65 20 61 72 63  68 69 76 65 20 77 68 6f  | the archive who|
000031d0  73 65 20 6e 75 6d 62 65  72 20 69 73 20 67 69 76  |se number is giv|
000031e0  65 6e 2e 0a 44 41 54 41  90 01 00 00 41 72 63 46  |en..DATA....ArcF|
000031f0  53 5f 53 74 61 74 75 73  20 20 28 26 34 33 37 43  |S_Status  (&437C|
00003200  31 29 0a 23 50 61 72 65  6e 74 20 41 72 63 46 53  |1).#Parent ArcFS|
00003210  5f 0a 3c 3d 09 52 30 20  3d 09 73 74 61 74 75 73  |_.<=.R0 =.status|
00003220  20 69 6e 20 66 6f 72 6d  20 26 76 76 62 62 66 66  | in form &vvbbff|
00003230  65 65 0a 0a 54 68 69 73  20 53 57 49 20 72 65 74  |ee..This SWI ret|
00003240  75 72 6e 73 20 74 68 65  20 63 75 72 72 65 6e 74  |urns the current|
00003250  20 73 74 61 74 75 73 20  6f 66 20 41 72 63 46 53  | status of ArcFS|
00003260  2e 0a 0a 23 54 61 62 0a  62 79 74 65 09 6d 65 61  |...#Tab.byte.mea|
00003270  6e 69 6e 67 0a 23 4c 69  6e 65 0a 76 76 09 46 46  |ning.#Line.vv.FF|
00003280  20 66 6f 72 20 72 65 61  64 2f 77 72 69 74 65 2c  | for read/write,|
00003290  20 30 30 20 66 6f 72 20  72 65 61 64 20 6f 6e 6c  | 00 for read onl|
000032a0  79 0a 62 62 09 6e 75 6d  62 65 72 20 6f 66 20 62  |y.bb.number of b|
000032b0  69 74 73 20 66 6f 72 20  63 72 75 6e 63 68 20 2f  |its for crunch /|
000032c0  20 63 6f 6d 70 72 65 73  73 20 28 30 20 6f 74 68  | compress (0 oth|
000032d0  65 72 77 69 73 65 29 0a  66 66 09 3c 63 6f 6d 70  |erwise).ff.<comp|
000032e0  72 65 73 73 69 6f 6e 20  66 6f 72 6d 61 74 3d 3e  |ression format=>|
000032f0  41 72 63 46 53 5f 63 6f  6d 70 72 65 73 73 74 79  |ArcFS_compressty|
00003300  70 65 73 3e 0a 65 65 09  3c 62 69 74 73 3d 3e 2e  |pes>.ee.<bits=>.|
00003310  62 69 74 73 3e 0a 23 73  75 62 70 61 67 65 20 62  |bits>.#subpage b|
00003320  69 74 73 0a 41 72 63 46  53 5f 53 74 61 74 75 73  |its.ArcFS_Status|
00003330  20 62 69 74 73 0a 62 69  74 09 6d 65 61 6e 69 6e  | bits.bit.meanin|
00003340  67 20 69 66 20 73 65 74  0a 23 4c 69 6e 65 0a 30  |g if set.#Line.0|
00003350  09 66 69 6c 65 73 20 77  69 6c 6c 20 62 65 20 67  |.files will be g|
00003360  61 72 62 6c 65 64 0a 31  2d 37 09 72 65 73 65 72  |arbled.1-7.reser|
00003370  76 65 64 2e 44 41 54 41  8a 00 00 00 41 72 63 46  |ved.DATA....ArcF|
00003380  53 5f 4f 70 65 6e 41 72  63 68 69 76 65 20 20 28  |S_OpenArchive  (|
00003390  26 34 33 37 43 32 29 0a  23 50 61 72 65 6e 74 20  |&437C2).#Parent |
000033a0  41 72 63 46 53 5f 0a 3c  3d 09 52 30 20 3d 09 70  |ArcFS_.<=.R0 =.p|
000033b0  6f 69 6e 74 65 72 20 74  6f 20 66 69 6c 65 6e 61  |ointer to filena|
000033c0  6d 65 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |me..R1 =.pointer|
000033d0  20 74 6f 20 72 65 66 65  72 65 6e 63 65 20 6e 61  | to reference na|
000033e0  6d 65 0a 0a 54 68 69 73  20 53 57 49 20 6f 70 65  |me..This SWI ope|
000033f0  6e 73 20 61 6e 20 61 72  63 68 69 76 65 2e 00 00  |ns an archive...|
00003400  44 41 54 41 ac 00 00 00  41 72 63 46 53 5f 43 6c  |DATA....ArcFS_Cl|
00003410  6f 73 65 41 72 63 68 69  76 65 20 20 28 26 34 33  |oseArchive  (&43|
00003420  37 43 33 29 0a 23 50 61  72 65 6e 74 20 41 72 63  |7C3).#Parent Arc|
00003430  46 53 5f 0a 3c 3d 09 52  30 20 3d 09 70 6f 69 6e  |FS_.<=.R0 =.poin|
00003440  74 65 72 20 74 6f 20 72  65 66 65 72 65 6e 63 65  |ter to reference|
00003450  20 6e 61 6d 65 0a 0a 54  68 69 73 20 53 57 49 20  | name..This SWI |
00003460  63 6c 6f 73 65 73 20 61  6e 20 61 72 63 68 69 76  |closes an archiv|
00003470  65 2c 20 72 65 74 75 72  6e 69 6e 67 20 61 6e 20  |e, returning an |
00003480  65 72 72 6f 72 20 69 66  20 6e 6f 20 61 72 63 68  |error if no arch|
00003490  69 76 65 20 77 69 74 68  20 74 68 61 74 20 6e 61  |ive with that na|
000034a0  6d 65 20 77 61 73 20 6f  70 65 6e 2e 44 41 54 41  |me was open.DATA|
000034b0  01 01 00 00 41 72 63 46  53 5f 45 6e 63 72 79 70  |....ArcFS_Encryp|
000034c0  74 69 6f 6e 20 20 28 26  34 33 37 43 34 29 0a 23  |tion  (&437C4).#|
000034d0  50 61 72 65 6e 74 20 41  72 63 46 53 5f 0a 3c 3d  |Parent ArcFS_.<=|
000034e0  09 52 30 20 3d 09 3c 65  6e 63 72 79 70 74 69 6f  |.R0 =.<encryptio|
000034f0  6e 20 6d 65 74 68 6f 64  3d 3e 2e 74 79 70 65 73  |n method=>.types|
00003500  3e 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |>..R1 =.pointer |
00003510  74 6f 20 70 61 73 73 77  6f 72 64 20 28 75 70 20  |to password (up |
00003520  74 6f 20 33 32 20 62 79  74 65 73 29 0a 0a 54 68  |to 32 bytes)..Th|
00003530  69 73 20 53 57 49 20 73  65 74 73 20 74 68 65 20  |is SWI sets the |
00003540  65 6e 63 72 79 70 74 69  6f 6e 20 6d 65 74 68 6f  |encryption metho|
00003550  64 20 61 6e 64 20 70 61  73 73 77 6f 72 64 20 75  |d and password u|
00003560  73 65 64 2e 0a 23 53 75  62 70 61 67 65 20 74 79  |sed..#Subpage ty|
00003570  70 65 73 0a 45 6e 63 72  79 70 74 69 6f 6e 20 74  |pes.Encryption t|
00003580  79 70 65 73 0a 76 61 6c  75 65 09 6d 65 61 6e 69  |ypes.value.meani|
00003590  6e 67 0a 30 09 6e 6f 20  65 6e 63 72 79 70 74 69  |ng.0.no encrypti|
000035a0  6f 6e 0a 31 09 67 61 72  62 6c 65 64 0a 00 00 00  |on.1.garbled....|
000035b0  44 41 54 41 c0 00 00 00  41 72 63 46 53 5f 43 6f  |DATA....ArcFS_Co|
000035c0  6d 70 72 65 73 73 69 6f  6e 20 20 28 26 34 33 37  |mpression  (&437|
000035d0  43 35 29 0a 23 50 61 72  65 6e 74 20 41 72 63 46  |C5).#Parent ArcF|
000035e0  53 5f 0a 3c 3d 09 52 30  20 3d 09 3c 63 6f 6d 70  |S_.<=.R0 =.<comp|
000035f0  72 65 73 73 69 6f 6e 20  66 6f 72 6d 61 74 3d 3e  |ression format=>|
00003600  41 72 63 46 53 5f 63 6f  6d 70 72 65 73 73 74 79  |ArcFS_compressty|
00003610  70 65 73 3e 0a 09 52 31  20 3d 09 6e 75 6d 62 65  |pes>..R1 =.numbe|
00003620  72 20 6f 66 20 62 69 74  73 20 28 69 66 20 61 70  |r of bits (if ap|
00003630  70 6c 69 63 61 62 6c 65  29 0a 0a 54 68 69 73 20  |plicable)..This |
00003640  53 57 49 20 73 65 74 73  20 74 68 65 20 64 61 74  |SWI sets the dat|
00003650  61 20 63 6f 6d 70 72 65  73 73 69 6f 6e 20 66 6f  |a compression fo|
00003660  72 6d 61 74 20 74 6f 20  62 65 20 75 73 65 64 2e  |rmat to be used.|
00003670  44 41 54 41 5d 00 00 00  41 72 63 46 53 20 43 6f  |DATA]...ArcFS Co|
00003680  6d 70 72 65 73 73 69 6f  6e 20 66 6f 72 6d 61 74  |mpression format|
00003690  73 0a 63 6f 64 65 09 74  79 70 65 0a 23 4c 69 6e  |s.code.type.#Lin|
000036a0  65 0a 26 38 32 09 53 74  6f 72 65 0a 26 38 33 09  |e.&82.Store.&83.|
000036b0  50 61 63 6b 0a 26 38 38  09 43 72 75 6e 63 68 0a  |Pack.&88.Crunch.|
000036c0  26 46 46 09 43 6f 6d 70  72 65 73 73 0a 00 00 00  |&FF.Compress....|
000036d0  44 41 54 41 aa 00 00 00  41 72 63 46 53 5f 43 72  |DATA....ArcFS_Cr|
000036e0  65 61 74 65 41 72 63 68  69 76 65 20 20 28 26 34  |eateArchive  (&4|
000036f0  33 37 43 36 29 0a 23 50  61 72 65 6e 74 20 41 72  |37C6).#Parent Ar|
00003700  63 46 53 5f 0a 3c 3d 09  52 30 20 3d 09 70 61 74  |cFS_.<=.R0 =.pat|
00003710  68 6e 61 6d 65 20 66 6f  72 20 6e 65 77 20 61 72  |hname for new ar|
00003720  63 68 69 76 65 0a 0a 54  68 69 73 20 53 57 49 20  |chive..This SWI |
00003730  63 72 65 61 74 65 73 20  28 62 75 74 20 64 6f 65  |creates (but doe|
00003740  73 20 6e 6f 74 20 6f 70  65 6e 29 20 61 20 6e 65  |s not open) a ne|
00003750  77 20 61 72 63 68 69 76  65 2e 0a 0a 4e 6f 74 65  |w archive...Note|
00003760  3a 20 52 65 61 64 2f 57  72 69 74 65 20 76 65 72  |: Read/Write ver|
00003770  73 69 6f 6e 20 6f 6e 6c  79 2e 00 00 44 41 54 41  |sion only...DATA|
00003780  c7 00 00 00 41 72 63 46  53 5f 43 6f 6d 70 61 63  |....ArcFS_Compac|
00003790  74 20 20 28 26 34 33 37  43 37 29 0a 23 50 61 72  |t  (&437C7).#Par|
000037a0  65 6e 74 20 41 72 63 46  53 5f 0a 3c 3d 09 52 30  |ent ArcFS_.<=.R0|
000037b0  20 3d 09 61 72 63 68 69  76 65 20 6e 61 6d 65 20  | =.archive name |
000037c0  28 6f 72 20 30 20 66 6f  72 20 43 53 44 29 0a 0a  |(or 0 for CSD)..|
000037d0  54 68 69 73 20 53 57 49  20 63 6f 6d 70 61 63 74  |This SWI compact|
000037e0  73 20 61 6e 20 61 72 63  68 69 76 65 20 74 6f 20  |s an archive to |
000037f0  72 65 6d 6f 76 65 64 20  67 61 70 73 20 6c 65 66  |removed gaps lef|
00003800  74 20 62 79 20 64 65 6c  65 74 69 6f 6e 73 20 61  |t by deletions a|
00003810  6e 64 20 66 69 6c 65 20  6f 76 65 72 77 72 69 74  |nd file overwrit|
00003820  65 73 2e 0a 0a 4e 6f 74  65 3a 20 52 65 61 64 2f  |es...Note: Read/|
00003830  57 72 69 74 65 20 76 65  72 73 69 6f 6e 20 6f 6e  |Write version on|
00003840  6c 79 2e 00 44 49 52 24  70 00 00 00 70 00 00 00  |ly..DIR$p...p...|
00003850  b4 38 00 00 46 fd ff ff  1d 0d ee 4e 74 01 00 00  |.8..F......Nt...|
00003860  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00003870  28 3a 00 00 46 ff ff ff  4e 6e ee 4e 01 01 00 00  |(:..F...Nn.N....|
00003880  13 00 00 00 00 00 00 00  41 64 64 45 76 65 6e 74  |........AddEvent|
00003890  00 00 00 00 2c 3b 00 00  46 fd ff ff 37 33 8e a5  |....,;..F...73..|
000038a0  7d 02 00 00 13 00 00 00  00 00 00 00 65 76 65 6e  |}...........even|
000038b0  74 73 00 00 44 41 54 41  74 01 00 00 41 75 64 69  |ts..DATAt...Audi|
000038c0  6f 4d 61 6e 61 67 65 72  0a 23 50 61 72 65 6e 74  |oManager.#Parent|
000038d0  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 41  | !Root.#Prefix A|
000038e0  75 64 69 6f 4d 61 6e 61  67 65 72 5f 0a 23 54 61  |udioManager_.#Ta|
000038f0  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 49 6e  |ble Columns 2.In|
00003900  66 6f 0a 52 65 73 65 74  0a 4c 69 73 74 44 72 69  |fo.Reset.ListDri|
00003910  76 65 72 73 0a 44 65 66  61 75 6c 74 73 0a 44 72  |vers.Defaults.Dr|
00003920  69 76 65 72 0a 53 65 6c  65 63 74 53 61 6d 70 6c  |iver.SelectSampl|
00003930  65 72 0a 53 61 6d 70 6c  65 72 53 74 61 74 75 73  |er.SamplerStatus|
00003940  0a 53 74 61 72 74 53 61  6d 70 6c 69 6e 67 0a 53  |.StartSampling.S|
00003950  74 6f 70 53 61 6d 70 6c  69 6e 67 0a 44 65 73 65  |topSampling.Dese|
00003960  6c 65 63 74 53 61 6d 70  6c 65 72 0a 50 6c 61 79  |lectSampler.Play|
00003970  53 61 6d 70 6c 65 0a 46  69 6c 6c 42 75 66 66 65  |Sample.FillBuffe|
00003980  72 0a 52 65 74 75 72 6e  43 75 72 73 6f 72 0a 4b  |r.ReturnCursor.K|
00003990  69 6c 6c 53 61 6d 70 6c  65 0a 41 64 6a 75 73 74  |illSample.Adjust|
000039a0  50 6c 61 79 0a 43 6f 6e  76 65 72 74 50 69 74 63  |Play.ConvertPitc|
000039b0  68 0a 53 74 65 72 65 6f  0a 41 74 74 61 63 68 56  |h.Stereo.AttachV|
000039c0  6f 69 63 65 0a 53 6f 75  6e 64 50 61 63 6b 65 64  |oice.SoundPacked|
000039d0  0a 53 6f 75 6e 64 0a 52  65 61 64 43 43 42 0a 57  |.Sound.ReadCCB.W|
000039e0  72 69 74 65 43 43 42 0a  50 6c 61 79 53 61 6d 70  |riteCCB.PlaySamp|
000039f0  6c 65 46 72 6f 6d 46 69  6c 65 0a 51 75 65 75 65  |leFromFile.Queue|
00003a00  45 76 65 6e 74 0a 3c 41  64 64 45 76 65 6e 74 3e  |Event.<AddEvent>|
00003a10  0a 52 65 64 69 72 65 63  74 56 49 44 43 0a 23 45  |.RedirectVIDC.#E|
00003a20  6e 64 54 61 62 6c 65 0a  44 41 54 41 01 01 00 00  |ndTable.DATA....|
00003a30  41 75 64 69 6f 4d 61 6e  61 67 65 72 5f 41 64 64  |AudioManager_Add|
00003a40  45 76 65 6e 74 0a 23 50  61 72 65 6e 74 20 21 52  |Event.#Parent !R|
00003a50  6f 6f 74 0a 3d 3e 09 52  30 20 3d 20 3c 65 76 65  |oot.=>.R0 = <eve|
00003a60  6e 74 20 6e 75 6d 62 65  72 3d 3e 41 75 64 69 6f  |nt number=>Audio|
00003a70  4d 61 6e 61 67 65 72 5f  65 76 65 6e 74 73 3e 0a  |Manager_events>.|
00003a80  09 52 31 20 3d 20 41 75  64 69 6f 77 6f 72 6b 73  |.R1 = Audioworks|
00003a90  20 66 69 6c 65 0a 09 52  32 20 3d 20 31 20 74 6f  | file..R2 = 1 to|
00003aa0  20 63 61 63 68 65 20 69  6e 20 52 4d 41 0a 0a 54  | cache in RMA..T|
00003ab0  68 69 73 20 53 57 49 20  61 64 64 73 20 61 20 73  |his SWI adds a s|
00003ac0  61 6d 70 6c 65 20 74 6f  20 61 20 70 61 72 74 69  |ample to a parti|
00003ad0  63 75 6c 61 72 20 64 65  73 6b 74 6f 70 20 65 76  |cular desktop ev|
00003ae0  65 6e 74 3b 20 74 68 69  73 20 6d 65 61 6e 73 20  |ent; this means |
00003af0  74 68 61 74 20 77 68 65  6e 65 76 65 72 20 74 68  |that whenever th|
00003b00  65 20 65 76 65 6e 74 20  6f 63 63 75 72 73 20 74  |e event occurs t|
00003b10  68 65 20 73 61 6d 70 6c  65 20 77 69 6c 6c 20 62  |he sample will b|
00003b20  65 20 70 6c 61 79 65 64  2e 00 00 00 44 41 54 41  |e played....DATA|
00003b30  7d 02 00 00 45 76 65 6e  74 20 6e 75 6d 62 65 72  |}...Event number|
00003b40  73 0a 4e 75 6d 62 65 72  09 45 76 65 6e 74 0a 23  |s.Number.Event.#|
00003b50  4c 69 6e 65 0a 31 09 41  70 70 6c 69 63 61 74 69  |Line.1.Applicati|
00003b60  6f 6e 20 73 61 76 65 20  66 69 6c 65 0a 33 09 41  |on save file.3.A|
00003b70  70 70 6c 69 63 61 74 69  6f 6e 20 6c 6f 61 64 20  |pplication load |
00003b80  66 69 6c 65 0a 35 09 46  69 6c 65 72 20 64 6f 75  |file.5.Filer dou|
00003b90  62 6c 65 2d 63 6c 69 63  6b 20 66 69 6c 65 0a 39  |ble-click file.9|
00003ba0  09 50 61 6c 65 74 74 65  20 63 68 61 6e 67 65 0a  |.Palette change.|
00003bb0  31 30 09 44 65 73 6b 74  6f 70 20 73 61 76 65 0a  |10.Desktop save.|
00003bc0  2d 34 09 53 79 73 74 65  6d 20 62 65 65 70 0a 2d  |-4.System beep.-|
00003bd0  37 09 46 61 74 61 6c 20  77 69 6d 70 20 65 72 72  |7.Fatal wimp err|
00003be0  6f 72 0a 2d 38 09 57 69  6d 70 20 65 72 72 6f 72  |or.-8.Wimp error|
00003bf0  0a 2d 39 09 4b 65 79 70  72 65 73 73 3a 20 53 70  |.-9.Keypress: Sp|
00003c00  61 63 65 0a 2d 31 30 09  4b 65 79 70 72 65 73 73  |ace.-10.Keypress|
00003c10  3a 20 52 65 74 75 72 6e  0a 2d 31 31 09 4b 65 79  |: Return.-11.Key|
00003c20  70 72 65 73 73 3a 20 4f  74 68 65 72 0a 26 34 30  |press: Other.&40|
00003c30  30 43 31 09 4d 6f 64 65  20 63 68 61 6e 67 65 0a  |0C1.Mode change.|
00003c40  26 34 30 30 43 32 09 54  61 73 6b 20 73 74 61 72  |&400C2.Task star|
00003c50  74 69 6e 67 0a 26 34 30  30 43 33 09 54 61 73 6b  |ting.&400C3.Task|
00003c60  20 71 75 69 74 74 69 6e  67 0a 26 34 30 30 43 41  | quitting.&400CA|
00003c70  09 49 63 6f 6e 69 73 65  20 77 69 6e 64 6f 77 0a  |.Iconise window.|
00003c80  26 46 46 30 30 30 30 30  31 09 4d 65 64 69 61 20  |&FF000001.Media |
00003c90  6e 6f 74 20 70 72 65 73  65 6e 74 0a 26 46 46 30  |not present.&FF0|
00003ca0  30 30 30 30 32 09 4d 65  64 69 61 20 6e 6f 74 20  |00002.Media not |
00003cb0  6b 6e 6f 77 6e 0a 26 46  46 30 30 30 30 30 34 09  |known.&FF000004.|
00003cc0  4d 65 64 69 61 20 73 65  61 72 63 68 20 65 6e 64  |Media search end|
00003cd0  0a 26 46 46 46 46 30 30  30 36 09 44 65 6c 65 74  |.&FFFF0006.Delet|
00003ce0  65 20 66 69 6c 65 0a 26  46 46 46 46 30 30 30 38  |e file.&FFFF0008|
00003cf0  09 43 72 65 61 74 65 20  64 69 72 65 63 74 6f 72  |.Create director|
00003d00  79 0a 26 46 46 46 46 30  31 30 31 09 43 72 65 61  |y.&FFFF0101.Crea|
00003d10  74 65 20 61 20 66 69 6c  65 0a 26 46 46 46 46 30  |te a file.&FFFF0|
00003d20  31 30 33 09 43 6c 6f 73  65 20 61 20 66 69 6c 65  |103.Close a file|
00003d30  0a 26 46 46 46 46 30 31  30 35 09 52 65 6e 61 6d  |.&FFFF0105.Renam|
00003d40  65 20 66 69 6c 65 0a 26  46 46 46 46 46 46 30 32  |e file.&FFFFFF02|
00003d50  09 57 69 6e 64 6f 77 20  6d 6f 76 69 6e 67 0a 26  |.Window moving.&|
00003d60  46 46 46 46 46 46 30 33  09 57 69 6e 64 6f 77 20  |FFFFFF03.Window |
00003d70  63 6c 6f 73 69 6e 67 0a  26 46 46 46 46 46 46 30  |closing.&FFFFFF0|
00003d80  37 09 44 72 61 67 20 66  69 6e 69 73 68 65 64 0a  |7.Drag finished.|
00003d90  26 46 46 46 46 46 46 30  39 09 4d 65 6e 75 20 73  |&FFFFFF09.Menu s|
00003da0  65 6c 65 63 74 69 6f 6e  0a 00 00 00 44 49 52 24  |election....DIR$|
00003db0  2c 00 00 00 2c 00 00 00  d8 3d 00 00 46 fd ff ff  |,...,....=..F...|
00003dc0  cd 49 c7 13 c1 00 00 00  13 00 00 00 00 00 00 00  |.I..............|
00003dd0  21 52 6f 6f 74 00 00 00  44 41 54 41 c1 00 00 00  |!Root...DATA....|
00003de0  41 57 52 65 6e 64 65 72  0a 23 50 61 72 65 6e 74  |AWRender.#Parent|
00003df0  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 41  | !Root.#Prefix A|
00003e00  57 52 65 6e 64 65 72 5f  0a 23 54 61 62 6c 65 20  |WRender_.#Table |
00003e10  43 6f 6c 75 6d 6e 73 20  32 0a 46 69 6c 65 49 6e  |Columns 2.FileIn|
00003e20  69 74 41 64 64 72 65 73  73 0a 52 65 6e 64 65 72  |itAddress.Render|
00003e30  41 64 64 72 65 73 73 0a  44 6f 63 42 6f 75 6e 64  |Address.DocBound|
00003e40  73 0a 53 65 6e 64 44 65  66 73 0a 43 6c 61 69 6d  |s.SendDefs.Claim|
00003e50  56 65 63 74 6f 72 73 0a  52 65 6c 65 61 73 65 56  |Vectors.ReleaseV|
00003e60  65 63 74 6f 72 73 0a 46  69 6e 64 46 69 72 73 74  |ectors.FindFirst|
00003e70  46 6f 6e 74 0a 46 69 6e  64 4e 65 78 74 46 6f 6e  |Font.FindNextFon|
00003e80  74 0a 4d 65 6d 6f 72 79  4e 65 65 64 65 64 0a 23  |t.MemoryNeeded.#|
00003e90  45 6e 64 54 61 62 6c 65  0a 00 00 00 44 49 52 24  |EndTable....DIR$|
00003ea0  2c 00 00 00 2c 00 00 00  c8 3e 00 00 46 fd ff ff  |,...,....>..F...|
00003eb0  5b 8b 1d 00 33 00 00 00  13 00 00 00 00 00 00 00  |[...3...........|
00003ec0  21 52 6f 6f 74 00 00 00  44 41 54 41 33 00 00 00  |!Root...DATA3...|
00003ed0  42 61 73 69 63 54 72 61  6e 73 0a 23 50 61 72 65  |BasicTrans.#Pare|
00003ee0  6e 74 20 21 52 6f 6f 74  0a 45 72 72 6f 72 0a 48  |nt !Root.Error.H|
00003ef0  45 4c 50 0a 4d 65 73 73  61 67 65 00 44 49 52 24  |ELP.Message.DIR$|
00003f00  2c 00 00 00 2c 00 00 00  28 3f 00 00 46 fd ff ff  |,...,...(?..F...|
00003f10  7c e1 dc 14 59 00 00 00  13 00 00 00 00 00 00 00  ||...Y...........|
00003f20  21 52 6f 6f 74 00 00 00  44 41 54 41 59 00 00 00  |!Root...DATAY...|
00003f30  42 6f 72 64 65 72 73 0a  23 50 61 72 65 6e 74 20  |Borders.#Parent |
00003f40  21 52 6f 6f 74 0a 23 50  72 65 66 69 78 20 42 6f  |!Root.#Prefix Bo|
00003f50  72 64 65 72 73 5f 0a 54  61 73 6b 53 74 61 72 74  |rders_.TaskStart|
00003f60  0a 54 61 73 6b 51 75 69  74 0a 50 6c 6f 74 46 61  |.TaskQuit.PlotFa|
00003f70  6e 63 79 42 6f 72 64 65  72 73 0a 50 6f 6c 6c 30  |ncyBorders.Poll0|
00003f80  0a 00 00 00 44 49 52 24  cc 00 00 00 cc 00 00 00  |....DIR$........|
00003f90  50 40 00 00 46 fd ff ff  77 c3 63 db 8a 00 00 00  |P@..F...w.c.....|
00003fa0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00003fb0  dc 40 00 00 46 ff ff ff  ee 21 1e 44 20 01 00 00  |.@..F....!.D ...|
00003fc0  13 00 00 00 00 00 00 00  47 65 74 49 6e 66 6f 00  |........GetInfo.|
00003fd0  fc 41 00 00 46 fd ff ff  9d 04 62 88 b1 00 00 00  |.A..F.....b.....|
00003fe0  13 00 00 00 00 00 00 00  62 75 66 66 65 72 73 00  |........buffers.|
00003ff0  b0 42 00 00 46 fd ff ff  8c 19 1e 44 7a 00 00 00  |.B..F......Dz...|
00004000  13 00 00 00 00 00 00 00  66 6c 61 67 73 00 00 00  |........flags...|
00004010  2c 43 00 00 47 ff ff ff  2b 5b 11 07 6b 02 00 00  |,C..G...+[..k...|
00004020  13 00 00 00 00 00 00 00  43 72 65 61 74 65 00 00  |........Create..|
00004030  98 45 00 00 46 ff ff ff  d8 53 a6 fa 66 01 00 00  |.E..F....S..f...|
00004040  13 00 00 00 00 00 00 00  72 65 6d 6f 76 65 00 00  |........remove..|
00004050  44 41 54 41 8a 00 00 00  42 75 66 66 65 72 0a 23  |DATA....Buffer.#|
00004060  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
00004070  65 66 69 78 20 42 75 66  66 65 72 5f 0a 3c 43 72  |efix Buffer_.<Cr|
00004080  65 61 74 65 3e 0a 44 65  72 65 67 69 73 74 65 72  |eate>.Deregister|
00004090  0a 3c 47 65 74 49 6e 66  6f 3e 0a 4c 69 6e 6b 44  |.<GetInfo>.LinkD|
000040a0  65 76 69 63 65 0a 4d 6f  64 69 66 79 46 6c 61 67  |evice.ModifyFlag|
000040b0  73 0a 3c 52 65 6d 6f 76  65 3e 0a 52 65 67 69 73  |s.<Remove>.Regis|
000040c0  74 65 72 0a 54 68 72 65  73 68 6f 6c 64 0a 55 6e  |ter.Threshold.Un|
000040d0  6c 69 6e 6b 44 65 76 69  63 65 00 00 44 41 54 41  |linkDevice..DATA|
000040e0  20 01 00 00 42 75 66 66  65 72 5f 47 65 74 49 6e  | ...Buffer_GetIn|
000040f0  66 6f 20 28 26 34 32 39  34 37 29 0a 23 50 61 72  |fo (&42947).#Par|
00004100  65 6e 74 20 42 75 66 66  65 72 5f 0a 3d 3e 09 52  |ent Buffer_.=>.R|
00004110  30 20 3d 20 3c 62 75 66  66 65 72 20 6e 75 6d 62  |0 = <buffer numb|
00004120  65 72 3d 3e 42 75 66 66  65 72 5f 62 75 66 66 65  |er=>Buffer_buffe|
00004130  72 73 3e 0a 0a 5c 3c 3d  09 52 30 20 3d 20 3c 66  |rs>..\<=.R0 = <f|
00004140  6c 61 67 73 3d 3e 42 75  66 66 65 72 5f 66 6c 61  |lags=>Buffer_fla|
00004150  67 73 3e 0a 09 52 31 20  3d 20 62 75 66 66 65 72  |gs>..R1 = buffer|
00004160  20 73 74 61 72 74 0a 09  52 32 20 3d 20 62 75 66  | start..R2 = buf|
00004170  66 65 72 20 65 6e 64 0a  09 52 33 20 3d 20 69 6e  |fer end..R3 = in|
00004180  73 65 72 74 69 6f 6e 20  6f 66 66 73 65 74 0a 09  |sertion offset..|
00004190  52 34 20 3d 20 72 65 6d  6f 76 61 6c 20 6f 66 66  |R4 = removal off|
000041a0  73 65 74 0a 09 52 35 20  3d 20 62 79 74 65 73 20  |set..R5 = bytes |
000041b0  66 72 65 65 0a 09 52 36  20 3d 20 62 79 74 65 73  |free..R6 = bytes|
000041c0  20 75 73 65 64 0a 0a 54  68 69 73 20 53 57 49 20  | used..This SWI |
000041d0  72 65 61 64 73 20 69 6e  66 6f 72 6d 61 74 69 6f  |reads informatio|
000041e0  6e 20 61 62 6f 75 74 20  61 20 70 61 72 74 69 63  |n about a partic|
000041f0  75 6c 61 72 20 62 75 66  66 65 72 2e 44 41 54 41  |ular buffer.DATA|
00004200  b1 00 00 00 42 75 66 66  65 72 20 62 75 66 66 65  |....Buffer buffe|
00004210  72 73 0a 5c 23 09 46 6f  72 0a 23 4c 69 6e 65 0a  |rs.\#.For.#Line.|
00004220  30 09 4b 65 79 62 6f 61  72 64 0a 31 09 53 65 72  |0.Keyboard.1.Ser|
00004230  69 61 6c 20 69 6e 70 75  74 0a 32 09 53 65 72 69  |ial input.2.Seri|
00004240  61 6c 20 6f 75 74 70 75  74 0a 33 09 50 72 69 6e  |al output.3.Prin|
00004250  74 65 72 0a 34 09 53 6f  75 6e 64 20 63 68 61 6e  |ter.4.Sound chan|
00004260  6e 65 6c 20 30 0a 35 09  53 6f 75 6e 64 20 63 68  |nel 0.5.Sound ch|
00004270  61 6e 6e 65 6c 20 31 0a  36 09 53 6f 75 6e 64 20  |annel 1.6.Sound |
00004280  63 68 61 6e 6e 65 6c 20  32 0a 37 09 53 6f 75 6e  |channel 2.7.Soun|
00004290  64 20 63 68 61 6e 6e 65  6c 20 33 0a 38 09 53 70  |d channel 3.8.Sp|
000042a0  65 65 63 68 0a 39 09 4d  6f 75 73 65 0a 00 00 00  |eech.9.Mouse....|
000042b0  44 41 54 41 7a 00 00 00  42 75 66 66 65 72 20 66  |DATAz...Buffer f|
000042c0  6c 61 67 73 0a 42 69 74  09 4d 65 61 6e 69 6e 67  |lags.Bit.Meaning|
000042d0  0a 23 4c 69 6e 65 0a 30  09 44 6f 72 6d 61 6e 74  |.#Line.0.Dormant|
000042e0  0a 31 09 47 65 6e 65 72  61 74 65 20 65 76 65 6e  |.1.Generate even|
000042f0  74 20 6f 6e 20 65 6d 70  74 79 0a 32 09 47 65 6e  |t on empty.2.Gen|
00004300  65 72 61 74 65 20 65 76  65 6e 74 20 6f 6e 20 66  |erate event on f|
00004310  75 6c 6c 0a 33 09 55 70  43 61 6c 6c 20 6f 6e 20  |ull.3.UpCall on |
00004320  74 68 72 65 73 68 6f 6c  64 0a 00 00 44 41 54 41  |threshold...DATA|
00004330  6b 02 00 00 42 75 66 66  65 72 5f 43 72 65 61 74  |k...Buffer_Creat|
00004340  65 20 28 26 34 32 39 34  30 29 0a 23 50 61 72 65  |e (&42940).#Pare|
00004350  6e 74 20 42 75 66 66 65  72 5f 0a 3d 3e 09 52 30  |nt Buffer_.=>.R0|
00004360  20 3d 09 42 75 66 66 65  72 27 73 20 3c 66 6c 61  | =.Buffer's <fla|
00004370  67 20 77 6f 72 64 3d 3e  62 75 66 66 65 72 5f 66  |g word=>buffer_f|
00004380  6c 61 67 73 3e 0a 09 52  31 20 3d 09 73 69 7a 65  |lags>..R1 =.size|
00004390  20 6f 66 20 62 75 66 66  65 72 20 74 6f 20 62 65  | of buffer to be|
000043a0  20 63 72 65 61 74 65 64  0a 09 52 32 20 3d 09 70  | created..R2 =.p|
000043b0  72 65 66 65 72 72 65 64  20 68 61 6e 64 6c 65 20  |referred handle |
000043c0  66 6f 72 20 74 68 65 20  62 75 66 66 65 72 2c 20  |for the buffer, |
000043d0  2d 31 20 74 6f 20 67 65  74 20 74 68 65 20 62 75  |-1 to get the bu|
000043e0  66 66 65 72 20 6d 61 6e  61 67 65 72 20 74 6f 20  |ffer manager to |
000043f0  67 65 6e 65 72 61 74 65  20 6f 6e 65 0a 3c 3d 09  |generate one.<=.|
00004400  52 30 20 3d 20 42 75 66  66 65 72 20 48 61 6e 64  |R0 = Buffer Hand|
00004410  6c 65 0a 0a 54 68 69 73  20 63 6c 61 69 6d 73 20  |le..This claims |
00004420  61 6e 20 61 72 65 61 20  6f 66 20 74 68 65 20 52  |an area of the R|
00004430  4d 41 20 61 6e 64 20 72  65 67 69 73 74 65 72 73  |MA and registers|
00004440  20 69 74 20 61 73 20 61  20 62 75 66 66 65 72 2e  | it as a buffer.|
00004450  20 49 74 20 63 61 6e 20  61 74 20 6d 6f 73 74 20  | It can at most |
00004460  68 6f 6c 64 20 52 31 2d  31 20 62 79 74 65 73 2e  |hold R1-1 bytes.|
00004470  0a 49 66 20 52 32 20 5c  3c 3e 2d 31 2c 20 74 68  |.If R2 \<>-1, th|
00004480  65 20 67 69 76 65 6e 20  6e 75 6d 62 65 72 20 69  |e given number i|
00004490  73 20 63 68 65 63 6b 65  64 20 66 6f 72 20 75 6e  |s checked for un|
000044a0  69 71 75 65 2c 20 69 66  20 69 74 20 61 6c 72 65  |ique, if it alre|
000044b0  61 64 79 20 65 78 69 73  74 2c 20 61 20 6e 65 77  |ady exist, a new|
000044c0  20 6f 6e 65 20 69 73 20  69 6e 76 65 6e 74 65 64  | one is invented|
000044d0  2e 0a 4e 6f 74 65 2c 20  74 68 61 74 20 79 6f 75  |..Note, that you|
000044e0  20 61 72 65 20 6e 6f 74  20 6e 65 65 64 69 6e 67  | are not needing|
000044f0  20 61 6e 79 20 63 6f 6d  70 6c 69 63 61 74 65 64  | any complicated|
00004500  20 63 61 6c 63 75 6c 61  74 69 6f 6e 73 20 74 6f  | calculations to|
00004510  20 77 72 69 74 65 20 64  61 74 61 20 69 6e 74 6f  | write data into|
00004520  20 74 68 65 20 62 75 66  66 65 72 2e 20 49 74 27  | the buffer. It'|
00004530  73 20 61 20 70 69 65 63  65 20 6f 66 20 6d 65 6d  |s a piece of mem|
00004540  6f 72 79 20 6c 69 6b 65  20 61 6c 6c 20 6f 74 68  |ory like all oth|
00004550  65 72 73 20 74 6f 6f 2e  20 47 65 74 20 74 68 65  |ers too. Get the|
00004560  20 61 64 64 72 65 73 73  20 77 69 74 68 20 3c 42  | address with <B|
00004570  75 66 66 65 72 5f 47 65  74 49 6e 66 6f 3e 20 61  |uffer_GetInfo> a|
00004580  6e 64 20 77 72 69 74 65  20 74 6f 20 74 68 65 20  |nd write to the |
00004590  62 75 66 66 65 72 2e 00  44 41 54 41 66 01 00 00  |buffer..DATAf...|
000045a0  42 75 66 66 65 72 5f 52  65 6d 6f 76 65 20 28 26  |Buffer_Remove (&|
000045b0  34 32 39 34 31 29 0a 23  50 61 72 65 6e 74 20 42  |42941).#Parent B|
000045c0  75 66 66 65 72 5f 0a 3d  3e 09 52 30 20 3d 09 48  |uffer_.=>.R0 =.H|
000045d0  61 6e 64 6c 65 20 6f 66  20 62 75 66 66 65 72 20  |andle of buffer |
000045e0  74 6f 20 62 65 20 72 65  6d 6f 76 65 64 0a 0a 54  |to be removed..T|
000045f0  68 69 73 20 72 65 6d 6f  76 65 73 20 74 68 65 20  |his removes the |
00004600  62 75 66 66 65 72 20 73  70 65 63 69 66 69 65 64  |buffer specified|
00004610  20 62 79 20 69 74 73 20  68 61 6e 64 6c 65 20 67  | by its handle g|
00004620  69 76 65 6e 20 69 6e 20  52 30 2e 20 49 74 20 72  |iven in R0. It r|
00004630  65 6c 65 61 73 65 73 20  74 68 65 20 77 6f 72 6b  |eleases the work|
00004640  73 70 61 63 65 20 69 6e  20 74 68 65 20 52 4d 41  |space in the RMA|
00004650  20 72 65 73 65 72 76 65  64 20 66 6f 72 20 74 68  | reserved for th|
00004660  69 73 20 62 75 66 66 65  72 2e 20 59 6f 75 20 73  |is buffer. You s|
00004670  68 6f 75 6c 64 20 74 68  69 73 20 74 6f 20 72 65  |hould this to re|
00004680  6d 6f 76 65 20 62 75 66  66 65 72 73 20 63 72 65  |move buffers cre|
00004690  61 74 65 64 20 77 69 74  68 20 3c 42 75 66 66 65  |ated with <Buffe|
000046a0  72 5f 43 72 65 61 74 65  3e 20 62 75 74 20 66 6f  |r_Create> but fo|
000046b0  72 20 62 75 66 66 65 72  73 20 6d 61 64 65 20 75  |r buffers made u|
000046c0  73 69 6e 67 20 42 75 66  66 65 72 5f 52 65 67 69  |sing Buffer_Regi|
000046d0  73 74 65 72 20 79 6f 75  20 73 68 6f 75 6c 64 20  |ster you should |
000046e0  75 73 65 20 42 75 66 66  65 72 5f 44 65 52 65 67  |use Buffer_DeReg|
000046f0  69 73 74 65 72 20 69 6e  73 74 65 61 64 2e 00 00  |ister instead...|
00004700  44 49 52 24 2c 00 00 00  2c 00 00 00 2c 47 00 00  |DIR$,...,...,G..|
00004710  46 fd ff ff b4 4b 22 a5  9c 00 00 00 13 00 00 00  |F....K".........|
00004720  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00004730  9c 00 00 00 43 61 63 68  65 0a 23 50 61 72 65 6e  |....Cache.#Paren|
00004740  74 20 21 52 6f 6f 74 0a  23 50 72 65 66 69 78 20  |t !Root.#Prefix |
00004750  43 61 63 68 65 5f 0a 23  54 61 62 6c 65 20 43 6f  |Cache_.#Table Co|
00004760  6c 75 6d 6e 73 20 32 0a  43 6f 6e 74 72 6f 6c 0a  |lumns 2.Control.|
00004770  43 61 63 68 65 61 62 6c  65 0a 55 70 64 61 74 65  |Cacheable.Update|
00004780  61 62 6c 65 0a 44 69 73  72 75 70 74 69 76 65 0a  |able.Disruptive.|
00004790  46 6c 75 73 68 0a 23 45  6e 64 54 61 62 6c 65 0a  |Flush.#EndTable.|
000047a0  0a 4e 6f 74 20 61 76 61  69 6c 61 62 6c 65 20 66  |.Not available f|
000047b0  72 6f 6d 20 52 49 53 43  20 4f 53 20 33 2e 35 20  |rom RISC OS 3.5 |
000047c0  6f 6e 77 61 72 64 73 2e  44 49 52 24 2c 00 00 00  |onwards.DIR$,...|
000047d0  2c 00 00 00 f4 47 00 00  46 fd ff ff dc 66 ee 13  |,....G..F....f..|
000047e0  c9 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
000047f0  74 00 00 00 44 41 54 41  c9 00 00 00 43 41 49 46  |t...DATA....CAIF|
00004800  53 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |S.#Parent !Root.|
00004810  23 50 72 65 66 69 78 20  43 41 49 46 53 5f 0a 23  |#Prefix CAIFS_.#|
00004820  54 61 62 6c 65 20 43 6f  6c 75 6d 6e 73 20 32 0a  |Table Columns 2.|
00004830  43 72 65 61 74 65 41 72  63 68 69 76 65 0a 43 6f  |CreateArchive.Co|
00004840  6d 70 61 63 74 46 72 65  65 53 70 61 63 65 0a 43  |mpactFreeSpace.C|
00004850  6c 6f 73 65 47 61 70 73  0a 46 72 65 65 53 70 61  |loseGaps.FreeSpa|
00004860  63 65 0a 44 69 72 53 69  7a 65 0a 43 6f 6d 70 61  |ce.DirSize.Compa|
00004870  63 74 69 6f 6e 54 79 70  65 0a 4c 5a 57 42 69 74  |ctionType.LZWBit|
00004880  73 0a 43 61 63 68 65 46  69 6c 65 0a 53 63 72 61  |s.CacheFile.Scra|
00004890  70 46 69 6c 65 0a 44 69  72 43 61 63 68 65 0a 52  |pFile.DirCache.R|
000048a0  65 61 64 46 69 6c 65 49  6e 66 6f 0a 46 69 78 52  |eadFileInfo.FixR|
000048b0  4d 41 0a 23 45 6e 64 54  61 62 6c 65 0a 00 00 00  |MA.#EndTable....|
000048c0  44 49 52 24 2c 00 00 00  2c 00 00 00 ec 48 00 00  |DIR$,...,....H..|
000048d0  46 fd ff ff d8 93 dc 14  53 00 00 00 13 00 00 00  |F.......S.......|
000048e0  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
000048f0  53 00 00 00 43 6f 6c 6f  75 72 44 62 6f 78 0a 23  |S...ColourDbox.#|
00004900  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
00004910  65 66 69 78 20 43 6f 6c  6f 75 72 44 62 6f 78 5f  |efix ColourDbox_|
00004920  0a 43 6c 61 73 73 53 57  49 0a 50 6f 73 74 46 69  |.ClassSWI.PostFi|
00004930  6c 74 65 72 0a 50 72 65  46 69 6c 74 65 72 0a 00  |lter.PreFilter..|
00004940  44 49 52 24 2c 00 00 00  2c 00 00 00 6c 49 00 00  |DIR$,...,...lI..|
00004950  46 fd ff ff 66 9a dc 14  56 00 00 00 13 00 00 00  |F...f...V.......|
00004960  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00004970  56 00 00 00 43 6f 6c 6f  75 72 45 78 74 65 6e 64  |V...ColourExtend|
00004980  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
00004990  50 72 65 66 69 78 20 43  6f 6c 6f 75 72 45 78 74  |Prefix ColourExt|
000049a0  65 6e 64 5f 0a 49 6e 66  6f 0a 43 6f 6e 74 72 6f  |end_.Info.Contro|
000049b0  6c 0a 49 6e 76 61 6c 69  64 61 74 65 43 61 63 68  |l.InvalidateCach|
000049c0  65 0a 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |e...DIR$,...,...|
000049d0  f0 49 00 00 46 fd ff ff  2d ae dc 14 53 00 00 00  |.I..F...-...S...|
000049e0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000049f0  44 41 54 41 53 00 00 00  43 6f 6c 6f 75 72 4d 65  |DATAS...ColourMe|
00004a00  6e 75 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |nu.#Parent !Root|
00004a10  0a 23 50 72 65 66 69 78  20 43 6f 6c 6f 75 72 4d  |.#Prefix ColourM|
00004a20  65 6e 75 5f 0a 43 6c 61  73 73 53 57 49 0a 50 6f  |enu_.ClassSWI.Po|
00004a30  73 74 46 69 6c 74 65 72  0a 50 72 65 46 69 6c 74  |stFilter.PreFilt|
00004a40  65 72 0a 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |er..DIR$,...,...|
00004a50  70 4a 00 00 46 fd ff ff  11 4a c7 13 c6 00 00 00  |pJ..F....J......|
00004a60  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00004a70  44 41 54 41 c6 00 00 00  43 6f 6c 6f 75 72 50 69  |DATA....ColourPi|
00004a80  63 6b 65 72 0a 23 50 61  72 65 6e 74 20 21 52 6f  |cker.#Parent !Ro|
00004a90  6f 74 0a 23 50 72 65 66  69 78 20 43 6f 6c 6f 75  |ot.#Prefix Colou|
00004aa0  72 50 69 63 6b 65 72 5f  0a 23 54 61 62 6c 65 20  |rPicker_.#Table |
00004ab0  43 6f 6c 75 6d 6e 73 20  32 0a 52 65 67 69 73 74  |Columns 2.Regist|
00004ac0  65 72 4d 6f 64 65 6c 0a  44 65 72 65 67 69 73 74  |erModel.Deregist|
00004ad0  65 72 4d 6f 64 65 6c 0a  4f 70 65 6e 44 69 61 6c  |erModel.OpenDial|
00004ae0  6f 67 75 65 0a 43 6c 6f  73 65 44 69 61 6c 6f 67  |ogue.CloseDialog|
00004af0  75 65 0a 55 70 64 61 74  65 44 69 61 6c 6f 67 75  |ue.UpdateDialogu|
00004b00  65 0a 52 65 61 64 44 69  61 6c 6f 67 75 65 0a 53  |e.ReadDialogue.S|
00004b10  65 74 43 6f 6c 6f 75 72  0a 48 65 6c 70 52 65 70  |etColour.HelpRep|
00004b20  6c 79 0a 4d 6f 64 65 6c  53 57 49 0a 23 45 6e 64  |ly.ModelSWI.#End|
00004b30  54 61 62 6c 65 0a 00 00  44 49 52 24 24 03 00 00  |Table...DIR$$...|
00004b40  24 03 00 00 5c 4e 00 00  46 fd ff ff 7e 77 65 db  |$...\N..F...~we.|
00004b50  c2 02 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00004b60  74 00 00 00 20 51 00 00  46 ff ff ff cb 17 65 db  |t... Q..F.....e.|
00004b70  30 02 00 00 13 00 00 00  00 00 00 00 53 65 74 46  |0...........SetF|
00004b80  6f 6e 74 43 6f 6c 6f 75  72 73 00 00 50 53 00 00  |ontColours..PS..|
00004b90  46 ff ff ff 77 02 64 db  2a 01 00 00 13 00 00 00  |F...w.d.*.......|
00004ba0  00 00 00 00 43 6f 6c 6f  75 72 4e 75 6d 62 65 72  |....ColourNumber|
00004bb0  54 6f 47 43 4f 4c 00 00  7c 54 00 00 46 ff ff ff  |ToGCOL..|T..F...|
00004bc0  fd 14 64 db aa 00 00 00  13 00 00 00 00 00 00 00  |..d.............|
00004bd0  47 43 4f 4c 54 6f 43 6f  6c 6f 75 72 4e 75 6d 62  |GCOLToColourNumb|
00004be0  65 72 00 00 28 55 00 00  46 ff ff ff f7 1e 64 db  |er..(U..F.....d.|
00004bf0  2a 01 00 00 13 00 00 00  00 00 00 00 49 6e 76 61  |*...........Inva|
00004c00  6c 69 64 61 74 65 43 61  63 68 65 00 54 56 00 00  |lidateCache.TV..|
00004c10  46 ff ff ff 89 2c 64 db  d6 00 00 00 13 00 00 00  |F....,d.........|
00004c20  00 00 00 00 52 65 74 75  72 6e 43 6f 6c 6f 75 72  |....ReturnColour|
00004c30  4e 75 6d 62 65 72 00 00  2c 57 00 00 46 ff ff ff  |Number..,W..F...|
00004c40  81 36 64 db 5a 01 00 00  13 00 00 00 00 00 00 00  |.6d.Z...........|
00004c50  52 65 74 75 72 6e 43 6f  6c 6f 75 72 4e 75 6d 62  |ReturnColourNumb|
00004c60  65 72 46 6f 72 4d 6f 64  65 00 00 00 88 58 00 00  |erForMode....X..|
00004c70  46 ff ff ff 88 51 64 db  e0 03 00 00 13 00 00 00  |F....Qd.........|
00004c80  00 00 00 00 52 65 74 75  72 6e 46 6f 6e 74 43 6f  |....ReturnFontCo|
00004c90  6c 6f 75 72 73 00 00 00  68 5c 00 00 46 ff ff ff  |lours...h\..F...|
00004ca0  22 61 64 db 49 01 00 00  13 00 00 00 00 00 00 00  |"ad.I...........|
00004cb0  52 65 74 75 72 6e 47 43  4f 4c 00 00 b4 5d 00 00  |ReturnGCOL...]..|
00004cc0  46 ff ff ff 5c 70 64 db  51 01 00 00 13 00 00 00  |F...\pd.Q.......|
00004cd0  00 00 00 00 52 65 74 75  72 6e 47 43 4f 4c 46 6f  |....ReturnGCOLFo|
00004ce0  72 4d 6f 64 65 00 00 00  08 5f 00 00 46 ff ff ff  |rMode...._..F...|
00004cf0  b3 7f 64 db da 00 00 00  13 00 00 00 00 00 00 00  |..d.............|
00004d00  52 65 74 75 72 6e 4f 70  70 43 6f 6c 6f 75 72 4e  |ReturnOppColourN|
00004d10  75 6d 62 65 72 00 00 00  e4 5f 00 00 46 ff ff ff  |umber...._..F...|
00004d20  6c 8b 64 db 73 01 00 00  13 00 00 00 00 00 00 00  |l.d.s...........|
00004d30  52 65 74 75 72 6e 4f 70  70 43 6f 6c 6f 75 72 4e  |ReturnOppColourN|
00004d40  75 6d 62 65 72 46 6f 72  4d 6f 64 65 00 00 00 00  |umberForMode....|
00004d50  58 61 00 00 46 ff ff ff  91 97 64 db c0 00 00 00  |Xa..F.....d.....|
00004d60  13 00 00 00 00 00 00 00  52 65 74 75 72 6e 4f 70  |........ReturnOp|
00004d70  70 47 43 4f 4c 00 00 00  18 62 00 00 46 ff ff ff  |pGCOL....b..F...|
00004d80  5c a3 64 db 55 01 00 00  13 00 00 00 00 00 00 00  |\.d.U...........|
00004d90  52 65 74 75 72 6e 4f 70  70 47 43 4f 4c 46 6f 72  |ReturnOppGCOLFor|
00004da0  4d 6f 64 65 00 00 00 00  70 63 00 00 46 ff ff ff  |Mode....pc..F...|
00004db0  32 ae 64 db 70 01 00 00  13 00 00 00 00 00 00 00  |2.d.p...........|
00004dc0  53 65 6c 65 63 74 47 43  4f 4c 54 61 62 6c 65 00  |SelectGCOLTable.|
00004dd0  e0 64 00 00 46 ff ff ff  96 03 65 db 33 03 00 00  |.d..F.....e.3...|
00004de0  13 00 00 00 00 00 00 00  53 65 6c 65 63 74 54 61  |........SelectTa|
00004df0  62 6c 65 00 14 68 00 00  46 ff ff ff 98 43 65 db  |ble..h..F....Ce.|
00004e00  5b 01 00 00 13 00 00 00  00 00 00 00 53 65 74 47  |[...........SetG|
00004e10  43 4f 4c 00 70 69 00 00  46 fd ff ff d6 5c 65 db  |COL.pi..F....\e.|
00004e20  27 01 00 00 13 00 00 00  00 00 00 00 47 43 4f 4c  |'...........GCOL|
00004e30  66 6c 61 67 73 00 00 00  98 6a 00 00 46 ff ff ff  |flags....j..F...|
00004e40  ad 72 65 db b4 01 00 00  13 00 00 00 00 00 00 00  |.re.............|
00004e50  53 65 74 4f 70 70 47 43  4f 4c 00 00 44 41 54 41  |SetOppGCOL..DATA|
00004e60  c2 02 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 0a  |....ColourTrans.|
00004e70  23 50 61 72 65 6e 74 20  21 52 6f 6f 74 0a 23 50  |#Parent !Root.#P|
00004e80  72 65 66 69 78 20 43 6f  6c 6f 75 72 54 72 61 6e  |refix ColourTran|
00004e90  73 5f 0a 23 54 61 62 6c  65 20 20 31 38 20 32 37  |s_.#Table  18 27|
00004ea0  0a 3c 43 6f 6c 6f 75 72  4e 75 6d 62 65 72 54 6f  |.<ColourNumberTo|
00004eb0  47 43 4f 4c 3e 0a 43 6f  6e 76 65 72 74 43 49 45  |GCOL>.ConvertCIE|
00004ec0  54 6f 52 47 42 0a 43 6f  6e 76 65 72 74 43 4d 59  |ToRGB.ConvertCMY|
00004ed0  4b 54 6f 52 47 42 0a 43  6f 6e 76 65 72 74 44 65  |KToRGB.ConvertDe|
00004ee0  76 69 63 65 43 6f 6c 6f  75 72 0a 43 6f 6e 76 65  |viceColour.Conve|
00004ef0  72 74 44 65 76 69 63 65  50 61 6c 65 74 74 65 0a  |rtDevicePalette.|
00004f00  43 6f 6e 76 65 72 74 48  53 56 54 6f 52 47 42 0a  |ConvertHSVToRGB.|
00004f10  43 6f 6e 76 65 72 74 52  47 42 54 6f 43 49 45 0a  |ConvertRGBToCIE.|
00004f20  43 6f 6e 76 65 72 74 52  47 42 54 6f 43 4d 59 4b  |ConvertRGBToCMYK|
00004f30  0a 43 6f 6e 76 65 72 74  52 47 42 54 6f 48 53 56  |.ConvertRGBToHSV|
00004f40  0a 3c 47 43 4f 4c 54 6f  43 6f 6c 6f 75 72 4e 75  |.<GCOLToColourNu|
00004f50  6d 62 65 72 3e 0a 47 65  6e 65 72 61 74 65 54 61  |mber>.GenerateTa|
00004f60  62 6c 65 0a 3c 49 6e 76  61 6c 69 64 61 74 65 43  |ble.<InvalidateC|
00004f70  61 63 68 65 3e 0a 4d 69  73 63 4f 70 0a 52 65 61  |ache>.MiscOp.Rea|
00004f80  64 43 61 6c 69 62 72 61  74 69 6f 6e 0a 52 65 61  |dCalibration.Rea|
00004f90  64 50 61 6c 65 74 74 65  0a 3c 52 65 74 75 72 6e  |dPalette.<Return|
00004fa0  43 6f 6c 6f 75 72 4e 75  6d 62 65 72 3e 0a 3c 52  |ColourNumber>.<R|
00004fb0  65 74 75 72 6e 43 6f 6c  6f 75 72 4e 75 6d 62 65  |eturnColourNumbe|
00004fc0  72 46 6f 72 4d 6f 64 65  3e 0a 3c 52 65 74 75 72  |rForMode>.<Retur|
00004fd0  6e 46 6f 6e 74 43 6f 6c  6f 75 72 73 3e 0a 3c 52  |nFontColours>.<R|
00004fe0  65 74 75 72 6e 47 43 4f  4c 3e 0a 3c 52 65 74 75  |eturnGCOL>.<Retu|
00004ff0  72 6e 47 43 4f 4c 46 6f  72 4d 6f 64 65 3e 0a 3c  |rnGCOLForMode>.<|
00005000  52 65 74 75 72 6e 4f 70  70 43 6f 6c 6f 75 72 4e  |ReturnOppColourN|
00005010  75 6d 62 65 72 3e 0a 3c  52 65 74 75 72 6e 4f 70  |umber>.<ReturnOp|
00005020  70 43 6f 6c 6f 75 72 4e  75 6d 62 65 72 46 6f 72  |pColourNumberFor|
00005030  4d 6f 64 65 3e 0a 3c 52  65 74 75 72 6e 4f 70 70  |Mode>.<ReturnOpp|
00005040  47 43 4f 4c 3e 0a 3c 52  65 74 75 72 6e 4f 70 70  |GCOL>.<ReturnOpp|
00005050  47 43 4f 4c 46 6f 72 4d  6f 64 65 3e 0a 3c 53 65  |GCOLForMode>.<Se|
00005060  6c 65 63 74 47 43 4f 4c  54 61 62 6c 65 3e 0a 3c  |lectGCOLTable>.<|
00005070  53 65 6c 65 63 74 54 61  62 6c 65 3e 0a 53 65 74  |SelectTable>.Set|
00005080  43 61 6c 69 62 72 61 74  69 6f 6e 0a 53 65 74 43  |Calibration.SetC|
00005090  6f 6c 6f 75 72 0a 3c 53  65 74 46 6f 6e 74 43 6f  |olour.<SetFontCo|
000050a0  6c 6f 75 72 73 3e 0a 3c  53 65 74 47 43 4f 4c 3e  |lours>.<SetGCOL>|
000050b0  0a 3c 53 65 74 4f 70 70  47 43 4f 4c 3e 0a 53 65  |.<SetOppGCOL>.Se|
000050c0  74 4f 70 70 54 65 78 74  43 6f 6c 6f 75 72 0a 53  |tOppTextColour.S|
000050d0  65 74 54 65 78 74 43 6f  6c 6f 75 72 0a 57 72 69  |etTextColour.Wri|
000050e0  74 65 43 61 6c 69 62 72  61 74 69 6f 6e 54 6f 46  |teCalibrationToF|
000050f0  69 6c 65 0a 57 72 69 74  65 4c 6f 61 64 69 6e 67  |ile.WriteLoading|
00005100  73 54 6f 46 69 6c 65 0a  57 72 69 74 65 50 61 6c  |sToFile.WritePal|
00005110  65 74 74 65 0a 23 45 6e  64 54 61 62 6c 65 00 00  |ette.#EndTable..|
00005120  44 41 54 41 30 02 00 00  43 6f 6c 6f 75 72 54 72  |DATA0...ColourTr|
00005130  61 6e 73 5f 53 65 74 46  6f 6e 74 43 6f 6c 6f 75  |ans_SetFontColou|
00005140  72 73 20 28 26 34 30 37  34 46 29 0a 23 50 61 72  |rs (&4074F).#Par|
00005150  65 6e 74 20 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |ent ColourTrans_|
00005160  0a 3d 3e 09 52 30 20 3d  09 66 6f 6e 74 20 68 61  |.=>.R0 =.font ha|
00005170  6e 64 6c 65 2c 20 6f 72  20 30 20 66 6f 72 20 63  |ndle, or 0 for c|
00005180  75 72 72 65 6e 74 20 66  6f 6e 74 0a 09 52 31 20  |urrent font..R1 |
00005190  3d 09 62 61 63 6b 67 72  6f 75 6e 64 20 70 61 6c  |=.background pal|
000051a0  65 74 74 65 20 65 6e 74  72 79 0a 09 52 32 20 3d  |ette entry..R2 =|
000051b0  09 66 6f 72 65 67 72 6f  75 6e 64 20 70 61 6c 65  |.foreground pale|
000051c0  74 74 65 20 65 6e 74 72  79 0a 09 52 33 20 3d 09  |tte entry..R3 =.|
000051d0  6d 61 78 69 6d 75 6d 20  66 6f 72 65 67 72 6f 75  |maximum foregrou|
000051e0  6e 64 20 63 6f 6c 6f 75  72 20 6f 66 66 73 65 74  |nd colour offset|
000051f0  20 28 30 2d 31 34 29 0a  0a 3c 3d 09 52 30 20 70  | (0-14)..<=.R0 p|
00005200  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 62  |reserved..R1 =.b|
00005210  61 63 6b 67 72 6f 75 6e  64 20 6c 6f 67 69 63 61  |ackground logica|
00005220  6c 20 63 6f 6c 6f 75 72  20 28 70 72 65 73 65 72  |l colour (preser|
00005230  76 65 64 20 69 66 20 69  6e 20 32 35 36 20 63 6f  |ved if in 256 co|
00005240  6c 6f 75 72 20 6d 6f 64  65 29 0a 09 52 32 20 3d  |lour mode)..R2 =|
00005250  09 66 6f 72 65 67 72 6f  75 6e 64 20 6c 6f 67 69  |.foreground logi|
00005260  63 61 6c 20 63 6f 6c 6f  75 72 0a 09 52 33 20 3d  |cal colour..R3 =|
00005270  09 6d 61 78 69 6d 75 6d  20 73 65 6e 73 69 62 6c  |.maximum sensibl|
00005280  65 20 63 6f 6c 6f 75 72  20 6f 66 66 73 65 74 20  |e colour offset |
00005290  28 75 70 20 74 6f 20 52  33 20 6f 6e 20 65 6e 74  |(up to R3 on ent|
000052a0  72 79 29 0a 0a 54 68 69  73 20 63 61 6c 6c 2c 20  |ry)..This call, |
000052b0  67 69 76 65 6e 20 61 20  70 61 69 72 20 6f 66 20  |given a pair of |
000052c0  70 61 6c 65 74 74 65 20  65 6e 74 72 69 65 73 2c  |palette entries,|
000052d0  20 66 69 6e 64 73 20 74  68 65 20 62 65 73 74 20  | finds the best |
000052e0  61 76 61 69 6c 61 62 6c  65 20 72 61 6e 67 65 20  |available range |
000052f0  6f 66 20 61 6e 74 69 2d  61 6c 69 61 73 69 6e 67  |of anti-aliasing|
00005300  20 63 6f 6c 6f 75 72 73  20 69 6e 20 74 68 65 20  | colours in the |
00005310  63 75 72 72 65 6e 74 20  70 61 6c 65 74 74 65 2c  |current palette,|
00005320  20 61 6e 64 20 73 65 74  73 20 74 68 65 20 66 6f  | and sets the fo|
00005330  6e 74 20 6d 61 6e 61 67  65 72 20 74 6f 20 75 73  |nt manager to us|
00005340  65 20 74 68 65 73 65 20  63 6f 6c 6f 75 72 73 2e  |e these colours.|
00005350  44 41 54 41 2a 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA*...ColourTr|
00005360  61 6e 73 5f 43 6f 6c 6f  75 72 4e 75 6d 62 65 72  |ans_ColourNumber|
00005370  54 6f 47 43 4f 4c 20 28  26 34 30 37 34 44 29 0a  |ToGCOL (&4074D).|
00005380  23 50 61 72 65 6e 74 20  43 6f 6c 6f 75 72 54 72  |#Parent ColourTr|
00005390  61 6e 73 5f 0a 3d 3e 09  52 30 20 3d 09 63 6f 6c  |ans_.=>.R0 =.col|
000053a0  6f 75 72 20 6e 75 6d 62  65 72 0a 3c 3d 09 52 30  |our number.<=.R0|
000053b0  20 3d 09 47 43 4f 4c 0a  0a 54 68 69 73 20 63 61  | =.GCOL..This ca|
000053c0  6c 6c 20 63 68 61 6e 67  65 73 20 74 68 65 20 76  |ll changes the v|
000053d0  61 6c 75 65 20 70 61 73  73 65 64 20 66 72 6f 6d  |alue passed from|
000053e0  20 61 20 63 6f 6c 6f 75  72 20 6e 75 6d 62 65 72  | a colour number|
000053f0  2c 20 74 6f 20 61 20 47  43 4f 4c 2e 0a 0a 55 73  |, to a GCOL...Us|
00005400  65 20 74 68 69 73 20 61  6e 64 20 3c 43 6f 6c 6f  |e this and <Colo|
00005410  75 72 54 72 61 6e 73 5f  47 43 4f 4c 54 6f 43 6f  |urTrans_GCOLToCo|
00005420  6c 6f 75 72 4e 75 6d 62  65 72 3e 2c 20 6f 6e 6c  |lourNumber>, onl|
00005430  79 20 69 6e 20 32 35 36  20 63 6f 6c 6f 75 72 20  |y in 256 colour |
00005440  6d 6f 64 65 73 2c 20 74  68 65 20 72 65 73 75 6c  |modes, the resul|
00005450  74 73 20 69 6e 20 61 6e  79 20 6f 74 68 65 72 20  |ts in any other |
00005460  6d 6f 64 65 73 20 77 69  6c 6c 20 62 65 20 6d 65  |modes will be me|
00005470  61 6e 69 6e 67 6c 65 73  73 2e 00 00 44 41 54 41  |aningless...DATA|
00005480  aa 00 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |....ColourTrans_|
00005490  47 43 4f 4c 54 6f 43 6f  6c 6f 75 72 4e 75 6d 62  |GCOLToColourNumb|
000054a0  65 72 20 28 26 34 30 37  34 43 29 0a 23 50 61 72  |er (&4074C).#Par|
000054b0  65 6e 74 20 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |ent ColourTrans_|
000054c0  0a 3d 3e 09 52 30 20 3d  09 47 43 4f 4c 0a 3c 3d  |.=>.R0 =.GCOL.<=|
000054d0  09 52 30 20 3d 09 63 6f  6c 6f 75 72 20 6e 75 6d  |.R0 =.colour num|
000054e0  62 65 72 0a 0a 54 68 69  73 20 63 61 6c 6c 20 63  |ber..This call c|
000054f0  68 61 6e 67 65 73 20 74  68 65 20 76 61 6c 75 65  |hanges the value|
00005500  20 70 61 73 73 65 64 20  66 72 6f 6d 20 47 43 4f  | passed from GCO|
00005510  4c 2c 20 74 6f 20 61 20  63 6f 6c 6f 75 72 20 6e  |L, to a colour n|
00005520  75 6d 62 65 72 2e 00 00  44 41 54 41 2a 01 00 00  |umber...DATA*...|
00005530  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 49 6e 76 61  |ColourTrans_Inva|
00005540  6c 69 64 61 74 65 43 61  63 68 65 20 28 26 34 30  |lidateCache (&40|
00005550  37 35 30 29 0a 23 50 61  72 65 6e 74 20 43 6f 6c  |750).#Parent Col|
00005560  6f 75 72 54 72 61 6e 73  5f 0a 54 68 69 73 20 63  |ourTrans_.This c|
00005570  61 6c 6c 20 6d 75 73 74  20 62 65 20 69 73 73 75  |all must be issu|
00005580  65 64 20 77 68 65 6e 65  76 65 72 20 74 68 65 20  |ed whenever the |
00005590  70 61 6c 65 74 74 65 20  68 61 73 20 63 68 61 6e  |palette has chan|
000055a0  67 65 64 20 73 69 6e 63  65 20 43 6f 6c 6f 75 72  |ged since Colour|
000055b0  54 72 61 6e 73 20 77 61  73 20 6c 61 73 74 20 63  |Trans was last c|
000055c0  61 6c 6c 65 64 2e 20 4e  6f 74 65 20 74 68 61 74  |alled. Note that|
000055d0  20 63 6f 6c 6f 75 72 20  63 68 61 6e 67 65 73 20  | colour changes |
000055e0  64 75 65 20 74 6f 20 61  20 6d 6f 64 65 20 63 68  |due to a mode ch|
000055f0  61 6e 67 65 20 61 72 65  20 64 65 74 65 63 74 65  |ange are detecte|
00005600  64 2e 20 59 6f 75 20 6f  6e 6c 79 20 6e 65 65 64  |d. You only need|
00005610  20 74 6f 20 75 73 65 20  74 68 69 73 20 69 66 20  | to use this if |
00005620  61 6e 6f 74 68 65 72 20  6f 66 20 74 68 65 20 70  |another of the p|
00005630  61 6c 65 74 74 65 20 63  68 61 6e 67 65 20 6f 70  |alette change op|
00005640  65 72 61 74 69 6f 6e 73  20 77 61 73 20 75 73 65  |erations was use|
00005650  64 2e 00 00 44 41 54 41  d6 00 00 00 43 6f 6c 6f  |d...DATA....Colo|
00005660  75 72 54 72 61 6e 73 5f  52 65 74 75 72 6e 43 6f  |urTrans_ReturnCo|
00005670  6c 6f 75 72 4e 75 6d 62  65 72 20 28 26 34 30 37  |lourNumber (&407|
00005680  34 34 29 0a 23 50 61 72  65 6e 74 20 43 6f 6c 6f  |44).#Parent Colo|
00005690  75 72 54 72 61 6e 73 5f  0a 3d 3e 09 52 30 20 3d  |urTrans_.=>.R0 =|
000056a0  09 70 61 6c 65 74 74 65  20 65 6e 74 72 79 0a 3c  |.palette entry.<|
000056b0  3d 09 52 30 20 3d 09 63  6f 6c 6f 75 72 20 6e 75  |=.R0 =.colour nu|
000056c0  6d 62 65 72 0a 0a 54 68  69 73 20 63 61 6c 6c 2c  |mber..This call,|
000056d0  20 67 69 76 65 6e 20 61  20 70 61 6c 65 74 74 65  | given a palette|
000056e0  20 65 6e 74 72 79 2c 20  72 65 74 75 72 6e 73 20  | entry, returns |
000056f0  74 68 65 20 63 6c 6f 73  65 73 74 20 63 6f 6c 6f  |the closest colo|
00005700  75 72 20 6e 75 6d 62 65  72 20 69 6e 20 74 68 65  |ur number in the|
00005710  20 63 75 72 72 65 6e 74  20 6d 6f 64 65 20 61 6e  | current mode an|
00005720  64 20 70 61 6c 65 74 74  65 2e 00 00 44 41 54 41  |d palette...DATA|
00005730  5a 01 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |Z...ColourTrans_|
00005740  52 65 74 75 72 6e 43 6f  6c 6f 75 72 4e 75 6d 62  |ReturnColourNumb|
00005750  65 72 46 6f 72 4d 6f 64  65 20 28 26 34 30 37 34  |erForMode (&4074|
00005760  36 29 0a 3d 3e 09 52 30  20 3d 09 70 61 6c 65 74  |6).=>.R0 =.palet|
00005770  74 65 20 65 6e 74 72 79  0a 09 52 31 20 3d 09 64  |te entry..R1 =.d|
00005780  65 73 74 69 6e 61 74 69  6f 6e 20 6d 6f 64 65 2c  |estination mode,|
00005790  20 6f 72 20 2d 31 20 66  6f 72 20 63 75 72 72 65  | or -1 for curre|
000057a0  6e 74 20 6d 6f 64 65 0a  09 52 32 20 3d 09 70 61  |nt mode..R2 =.pa|
000057b0  6c 65 74 74 65 20 70 6f  69 6e 74 65 72 2c 20 6f  |lette pointer, o|
000057c0  72 20 2d 31 20 66 6f 72  20 63 75 72 72 65 6e 74  |r -1 for current|
000057d0  20 70 61 6c 65 74 74 65  2c 20 6f 72 20 30 20 66  | palette, or 0 f|
000057e0  6f 72 20 64 65 66 61 75  6c 74 20 66 6f 72 20 74  |or default for t|
000057f0  68 65 20 6d 6f 64 65 0a  0a 3c 3d 09 52 30 20 3d  |he mode..<=.R0 =|
00005800  09 63 6f 6c 6f 75 72 20  6e 75 6d 62 65 72 0a 09  |.colour number..|
00005810  52 31 2c 52 32 20 70 72  65 73 65 72 76 65 64 20  |R1,R2 preserved |
00005820  0a 0a 54 68 69 73 20 63  61 6c 6c 2c 20 67 69 76  |..This call, giv|
00005830  65 6e 20 61 20 70 61 6c  65 74 74 65 20 65 6e 74  |en a palette ent|
00005840  72 79 2c 20 61 20 64 65  73 74 69 6e 61 74 69 6f  |ry, a destinatio|
00005850  6e 20 6d 6f 64 65 20 61  6e 64 20 70 61 6c 65 74  |n mode and palet|
00005860  74 65 2c 20 72 65 74 75  72 6e 73 20 74 68 65 20  |te, returns the |
00005870  63 6c 6f 73 65 73 74 20  63 6f 6c 6f 75 72 20 6e  |closest colour n|
00005880  75 6d 62 65 72 2e 00 00  44 41 54 41 e0 03 00 00  |umber...DATA....|
00005890  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
000058a0  72 6e 46 6f 6e 74 43 6f  6c 6f 75 72 73 20 28 26  |rnFontColours (&|
000058b0  34 30 37 34 45 29 0a 23  50 61 72 65 6e 74 20 43  |4074E).#Parent C|
000058c0  6f 6c 6f 75 72 54 72 61  6e 73 5f 0a 3d 3e 09 52  |olourTrans_.=>.R|
000058d0  30 20 3d 09 66 6f 6e 74  20 68 61 6e 64 6c 65 2c  |0 =.font handle,|
000058e0  20 6f 72 20 30 20 66 6f  72 20 63 75 72 72 65 6e  | or 0 for curren|
000058f0  74 20 66 6f 6e 74 0a 09  52 31 20 3d 09 62 61 63  |t font..R1 =.bac|
00005900  6b 67 6f 72 75 6e 64 20  70 61 6c 65 74 74 65 20  |kgorund palette |
00005910  65 6e 74 72 79 0a 09 52  32 20 3d 09 66 6f 72 65  |entry..R2 =.fore|
00005920  67 72 6f 75 6e 64 20 70  61 6c 65 74 74 65 20 65  |ground palette e|
00005930  6e 74 72 79 0a 09 52 33  20 3d 09 6d 61 78 69 6d  |ntry..R3 =.maxim|
00005940  75 6d 20 66 6f 72 65 67  72 6f 75 6e 64 20 63 6f  |um foreground co|
00005950  6c 6f 75 72 20 6f 66 66  73 65 74 20 28 30 2d 31  |lour offset (0-1|
00005960  34 29 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |4)..<=.R0 preser|
00005970  76 65 64 0a 09 52 31 20  3d 09 62 61 63 6b 67 72  |ved..R1 =.backgr|
00005980  6f 75 6e 64 20 6c 6f 67  69 63 61 6c 20 63 6f 6c  |ound logical col|
00005990  6f 75 72 20 28 70 72 65  73 65 72 76 65 64 20 69  |our (preserved i|
000059a0  66 20 69 6e 20 32 35 36  20 63 6f 6c 6f 75 72 20  |f in 256 colour |
000059b0  6d 6f 64 65 29 0a 09 52  32 20 3d 09 66 6f 72 65  |mode)..R2 =.fore|
000059c0  67 72 6f 75 6e 64 20 6c  6f 67 69 63 61 6c 20 63  |ground logical c|
000059d0  6f 6c 6f 75 72 0a 09 52  33 20 3d 09 6d 61 78 69  |olour..R3 =.maxi|
000059e0  6d 75 6d 20 73 65 6e 73  69 62 6c 65 20 63 6f 6c  |mum sensible col|
000059f0  6f 75 72 20 6f 66 66 73  65 74 20 28 75 70 20 74  |our offset (up t|
00005a00  6f 20 52 33 20 6f 6e 20  65 6e 74 72 79 29 0a 0a  |o R3 on entry)..|
00005a10  54 68 69 73 20 63 61 6c  6c 2c 20 67 69 76 65 6e  |This call, given|
00005a20  20 62 61 63 6b 67 72 6f  75 6e 64 20 61 6e 64 20  | background and |
00005a30  66 6f 72 65 67 72 6f 75  6e 64 20 63 6f 6c 6f 75  |foreground colou|
00005a40  72 73 20 61 6e 64 20 74  68 65 20 6e 75 6d 62 65  |rs and the numbe|
00005a50  72 20 6f 66 20 61 6e 74  69 20 61 6c 69 61 73 69  |r of anti aliasi|
00005a60  6e 67 20 63 6f 6c 6f 75  72 73 20 64 65 73 69 72  |ng colours desir|
00005a70  65 64 2c 20 66 69 6e 64  73 20 74 68 65 20 6d 61  |ed, finds the ma|
00005a80  78 69 6d 75 6d 20 72 61  6e 67 65 20 6f 66 20 63  |ximum range of c|
00005a90  6f 6c 6f 75 72 20 74 68  61 74 20 63 61 6e 20 73  |olour that can s|
00005aa0  65 6e 73 69 62 6c 79 20  62 65 20 75 73 65 64 2e  |ensibly be used.|
00005ab0  20 53 6f 20 66 6f 72 20  74 68 65 20 67 69 76 65  | So for the give|
00005ac0  6e 20 70 61 6c 65 74 74  65 20 65 6e 74 72 69 65  |n palette entrie|
00005ad0  73 2c 20 69 74 20 66 69  6e 64 73 20 74 68 65 20  |s, it finds the |
00005ae0  62 65 73 74 20 66 69 74  20 69 6e 20 74 68 65 20  |best fit in the |
00005af0  63 75 72 72 65 6e 74 20  70 61 6c 65 74 74 65 2c  |current palette,|
00005b00  20 61 6e 64 20 74 68 65  6e 20 69 6e 73 70 65 63  | and then inspec|
00005b10  74 73 20 74 68 65 20 6f  74 68 65 72 20 61 76 61  |ts the other ava|
00005b20  69 6c 61 62 6c 65 20 63  6f 6c 6f 75 72 73 20 74  |ilable colours t|
00005b30  6f 20 64 65 64 75 63 65  20 74 68 65 20 6d 61 78  |o deduce the max|
00005b40  69 6d 75 6d 20 70 6f 73  73 69 62 6c 65 20 61 6d  |imum possible am|
00005b50  6f 75 6e 74 20 6f 66 20  61 6e 74 69 2d 61 6c 69  |ount of anti-ali|
00005b60  61 73 69 6e 67 20 75 70  20 74 6f 20 74 68 65 20  |asing up to the |
00005b70  6c 69 6d 69 74 20 69 6e  20 52 33 2e 0a 0a 49 66  |limit in R3...If|
00005b80  20 61 6e 74 69 2d 61 6c  69 61 73 69 6e 67 20 69  | anti-aliasing i|
00005b90  73 20 64 65 73 69 72 61  62 6c 65 2c 20 79 6f 75  |s desirable, you|
00005ba0  20 73 68 6f 75 6c 64 20  73 65 74 20 52 33 3d 31  | should set R3=1|
00005bb0  34 20 6f 6e 20 65 6e 74  72 79 3b 20 6f 74 68 65  |4 on entry; othe|
00005bc0  72 77 69 73 65 20 73 65  74 20 52 33 3d 30 20 66  |rwise set R3=0 f|
00005bd0  6f 72 20 6d 6f 6e 6f 63  68 72 6f 6d 65 2e 0a 0a  |or monochrome...|
00005be0  54 68 65 20 76 61 6c 75  65 73 20 69 6e 20 52 31  |The values in R1|
00005bf0  2d 52 33 20 6f 6e 20 65  78 69 74 20 61 72 65 20  |-R3 on exit are |
00005c00  73 75 69 74 61 62 6c 65  20 66 6f 72 20 70 61 73  |suitable for pas|
00005c10  73 69 6e 67 20 74 6f 20  3c 46 6f 6e 74 5f 53 65  |sing to <Font_Se|
00005c20  74 46 6f 6e 74 43 6f 6c  6f 75 72 73 3e 2c 20 6f  |tFontColours>, o|
00005c30  72 20 69 6e 63 6c 75 64  69 6e 67 20 69 6e 20 61  |r including in a|
00005c40  20 66 6f 6e 74 20 73 74  72 69 6e 67 20 69 6e 20  | font string in |
00005c50  61 20 63 6f 6d 6d 61 6e  64 20 28 31 38 29 20 73  |a command (18) s|
00005c60  65 71 75 65 6e 63 65 2e  44 41 54 41 49 01 00 00  |equence.DATAI...|
00005c70  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00005c80  72 6e 47 43 4f 4c 20 28  26 34 30 37 34 32 29 0a  |rnGCOL (&40742).|
00005c90  23 50 61 72 65 6e 74 20  43 6f 6c 6f 75 72 54 72  |#Parent ColourTr|
00005ca0  61 6e 73 5f 0a 3d 3e 09  52 30 20 3d 09 50 61 6c  |ans_.=>.R0 =.Pal|
00005cb0  65 74 74 65 20 65 6e 74  72 79 0a 3c 3d 09 52 30  |ette entry.<=.R0|
00005cc0  20 3d 09 47 43 4f 4c 0a  0a 54 68 69 73 20 63 61  | =.GCOL..This ca|
00005cd0  6c 6c 2c 20 67 69 76 65  6e 20 61 20 70 61 6c 65  |ll, given a pale|
00005ce0  74 74 65 20 65 6e 74 72  79 2c 20 72 65 74 75 72  |tte entry, retur|
00005cf0  6e 73 20 74 68 65 20 63  6c 6f 73 65 73 74 20 47  |ns the closest G|
00005d00  43 4f 4c 20 69 6e 20 74  68 65 20 63 75 72 72 65  |COL in the curre|
00005d10  6e 74 20 6d 6f 64 65 20  61 6e 64 20 70 61 6c 65  |nt mode and pale|
00005d20  74 74 65 2e 20 49 74 27  73 20 65 71 75 69 76 61  |tte. It's equiva|
00005d30  6c 65 6e 74 20 74 6f 20  3c 43 6f 6c 6f 75 72 54  |lent to <ColourT|
00005d40  72 61 6e 73 5f 52 65 74  75 72 6e 47 43 4f 4c 46  |rans_ReturnGCOLF|
00005d50  6f 72 4d 6f 64 65 3e 20  66 6f 72 20 74 68 65 20  |orMode> for the |
00005d60  67 69 76 65 6e 20 70 61  6c 65 74 74 65 20 65 6e  |given palette en|
00005d70  74 72 79 2c 20 77 69 74  68 20 70 61 72 61 6d 65  |try, with parame|
00005d80  74 65 72 73 20 6f 66 20  2d 31 20 66 6f 72 20 62  |ters of -1 for b|
00005d90  6f 74 68 20 74 68 65 20  6d 6f 64 65 20 61 6e 64  |oth the mode and|
00005da0  20 70 61 6c 65 74 74 65  20 70 6f 69 6e 74 65 72  | palette pointer|
00005db0  2e 00 00 00 44 41 54 41  51 01 00 00 43 6f 6c 6f  |....DATAQ...Colo|
00005dc0  75 72 54 72 61 6e 73 5f  52 65 74 75 72 6e 47 43  |urTrans_ReturnGC|
00005dd0  4f 4c 46 6f 72 4d 6f 64  65 20 28 26 34 30 37 34  |OLForMode (&4074|
00005de0  35 29 0a 23 50 61 72 65  6e 74 20 43 6f 6c 6f 75  |5).#Parent Colou|
00005df0  72 54 72 61 6e 73 5f 0a  3d 3e 09 52 30 20 3d 09  |rTrans_.=>.R0 =.|
00005e00  50 61 6c 65 74 74 65 20  65 6e 74 72 79 0a 09 52  |Palette entry..R|
00005e10  31 20 3d 09 64 65 73 74  69 6e 61 74 69 6f 6e 20  |1 =.destination |
00005e20  6d 6f 64 65 2c 20 2d 31  20 66 6f 72 20 63 75 72  |mode, -1 for cur|
00005e30  72 65 6e 74 20 6d 6f 64  65 0a 09 52 32 20 3d 09  |rent mode..R2 =.|
00005e40  70 61 6c 65 74 74 65 20  70 6f 69 6e 74 65 72 2c  |palette pointer,|
00005e50  20 6f 72 20 2d 31 20 66  6f 72 20 63 75 72 72 65  | or -1 for curre|
00005e60  6e 74 20 70 61 6c 65 74  74 65 2c 20 6f 72 20 30  |nt palette, or 0|
00005e70  20 66 6f 72 20 64 65 66  61 75 6c 74 20 66 6f 72  | for default for|
00005e80  20 74 68 65 20 6d 6f 64  65 0a 0a 3c 3d 09 52 30  | the mode..<=.R0|
00005e90  20 3d 09 47 43 4f 4c 0a  09 52 31 2c 52 32 20 70  | =.GCOL..R1,R2 p|
00005ea0  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 63  |reserved..This c|
00005eb0  61 6c 6c 2c 20 67 69 76  65 6e 20 61 20 70 61 6c  |all, given a pal|
00005ec0  65 74 74 65 20 65 6e 74  72 79 2c 20 61 20 64 65  |ette entry, a de|
00005ed0  73 74 69 6e 61 74 69 6f  6e 20 6d 6f 64 65 20 61  |stination mode a|
00005ee0  6e 64 20 70 61 6c 65 74  74 65 2c 20 72 65 74 75  |nd palette, retu|
00005ef0  72 6e 73 20 74 68 65 20  63 6c 6f 73 65 73 74 20  |rns the closest |
00005f00  47 43 4f 4c 2e 00 00 00  44 41 54 41 da 00 00 00  |GCOL....DATA....|
00005f10  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00005f20  72 6e 4f 70 70 43 6f 6c  6f 75 72 4e 75 6d 62 65  |rnOppColourNumbe|
00005f30  72 20 28 26 34 30 37 34  39 29 0a 23 50 61 72 65  |r (&40749).#Pare|
00005f40  6e 74 20 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 0a  |nt ColourTrans_.|
00005f50  3d 3e 09 52 30 20 3d 09  70 61 6c 65 74 74 65 20  |=>.R0 =.palette |
00005f60  65 6e 74 72 79 0a 3c 3d  09 52 30 20 3d 09 63 6f  |entry.<=.R0 =.co|
00005f70  6c 6f 75 72 20 6e 75 6d  62 65 72 0a 0a 54 68 69  |lour number..Thi|
00005f80  73 20 63 61 6c 6c 2c 20  67 69 76 65 6e 20 61 20  |s call, given a |
00005f90  70 61 6c 65 74 74 65 20  65 6e 74 72 79 2c 20 72  |palette entry, r|
00005fa0  65 74 75 72 6e 73 20 74  68 65 20 66 75 72 74 68  |eturns the furth|
00005fb0  65 73 74 20 63 6f 6c 6f  75 72 20 6e 75 6d 62 65  |est colour numbe|
00005fc0  72 20 69 6e 20 74 68 65  20 63 75 72 72 65 6e 74  |r in the current|
00005fd0  20 6d 6f 64 65 20 61 6e  64 20 70 61 6c 65 74 74  | mode and palett|
00005fe0  65 2e 00 00 44 41 54 41  73 01 00 00 43 6f 6c 6f  |e...DATAs...Colo|
00005ff0  75 72 54 72 61 6e 73 5f  52 65 74 75 72 6e 4f 70  |urTrans_ReturnOp|
00006000  70 43 6f 6c 6f 75 72 4e  75 6d 62 65 72 46 6f 72  |pColourNumberFor|
00006010  4d 6f 64 65 20 28 26 34  30 37 34 42 29 0a 23 50  |Mode (&4074B).#P|
00006020  61 72 65 6e 74 20 43 6f  6c 6f 75 72 54 72 61 6e  |arent ColourTran|
00006030  73 5f 0a 3d 3e 09 52 30  20 3d 09 70 61 6c 65 74  |s_.=>.R0 =.palet|
00006040  74 65 20 65 6e 74 72 79  0a 09 52 31 20 3d 09 64  |te entry..R1 =.d|
00006050  65 73 74 69 6e 61 74 69  6f 6e 20 6d 6f 64 65 2c  |estination mode,|
00006060  20 6f 72 20 2d 31 20 66  6f 72 20 63 75 72 72 65  | or -1 for curre|
00006070  6e 74 20 6d 6f 64 65 0a  09 52 32 20 3d 09 70 61  |nt mode..R2 =.pa|
00006080  6c 65 74 74 65 20 70 6f  69 6e 74 65 72 2c 20 6f  |lette pointer, o|
00006090  72 20 2d 31 20 66 6f 72  20 63 75 72 72 65 6e 74  |r -1 for current|
000060a0  20 70 61 6c 65 74 74 65  2c 20 6f 72 20 30 20 66  | palette, or 0 f|
000060b0  6f 72 20 64 65 66 61 75  6c 74 20 66 6f 72 20 74  |or default for t|
000060c0  68 65 20 6d 6f 64 65 0a  0a 3c 3d 09 52 30 20 3d  |he mode..<=.R0 =|
000060d0  09 63 6f 6c 6f 75 72 20  6e 75 6d 62 65 72 0a 09  |.colour number..|
000060e0  52 31 2c 52 32 20 70 72  65 73 65 72 76 65 64 20  |R1,R2 preserved |
000060f0  0a 0a 54 68 69 73 20 63  61 6c 6c 2c 20 67 69 76  |..This call, giv|
00006100  65 6e 20 61 20 70 61 6c  65 74 74 65 20 65 6e 74  |en a palette ent|
00006110  72 79 2c 20 61 20 64 65  73 74 69 6e 61 74 69 6f  |ry, a destinatio|
00006120  6e 20 6d 6f 64 65 20 61  6e 64 20 70 61 6c 65 74  |n mode and palet|
00006130  74 65 2c 20 72 65 74 75  72 6e 73 20 74 68 65 20  |te, returns the |
00006140  66 75 72 74 68 65 73 74  20 63 6f 6c 6f 75 72 20  |furthest colour |
00006150  6e 75 6d 62 65 72 2e 00  44 41 54 41 c0 00 00 00  |number..DATA....|
00006160  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00006170  72 6e 4f 70 70 47 43 4f  4c 20 28 26 34 30 37 34  |rnOppGCOL (&4074|
00006180  37 29 0a 23 50 61 72 65  6e 74 20 43 6f 6c 6f 75  |7).#Parent Colou|
00006190  72 54 72 61 6e 73 5f 0a  3d 3e 09 52 30 20 3d 09  |rTrans_.=>.R0 =.|
000061a0  70 61 6c 65 74 74 65 20  65 6e 74 72 79 0a 3c 3d  |palette entry.<=|
000061b0  09 52 30 20 3d 09 47 43  4f 4c 0a 0a 54 68 69 73  |.R0 =.GCOL..This|
000061c0  20 63 61 6c 6c 2c 20 67  69 76 65 6e 20 61 20 70  | call, given a p|
000061d0  61 6c 65 74 74 65 20 65  6e 74 72 79 2c 20 72 65  |alette entry, re|
000061e0  74 75 72 6e 73 20 74 68  65 20 66 75 72 74 68 65  |turns the furthe|
000061f0  73 74 20 47 43 4f 4c 20  69 6e 20 74 68 65 20 63  |st GCOL in the c|
00006200  75 72 72 65 6e 74 20 6d  6f 64 65 20 61 6e 64 20  |urrent mode and |
00006210  70 61 6c 65 74 74 65 2e  44 41 54 41 55 01 00 00  |palette.DATAU...|
00006220  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00006230  72 6e 4f 70 70 47 43 4f  4c 46 6f 72 4d 6f 64 65  |rnOppGCOLForMode|
00006240  20 28 26 34 30 37 34 41  29 0a 23 50 61 72 65 6e  | (&4074A).#Paren|
00006250  74 20 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 0a 3d  |t ColourTrans_.=|
00006260  3e 09 52 30 20 3d 09 50  61 6c 65 74 74 65 20 65  |>.R0 =.Palette e|
00006270  6e 74 72 79 0a 09 52 31  20 3d 09 64 65 73 74 69  |ntry..R1 =.desti|
00006280  6e 61 74 69 6f 6e 20 6d  6f 64 65 2c 20 2d 31 20  |nation mode, -1 |
00006290  66 6f 72 20 63 75 72 72  65 6e 74 20 6d 6f 64 65  |for current mode|
000062a0  0a 09 52 32 20 3d 09 70  61 6c 65 74 74 65 20 70  |..R2 =.palette p|
000062b0  6f 69 6e 74 65 72 2c 20  6f 72 20 2d 31 20 66 6f  |ointer, or -1 fo|
000062c0  72 20 63 75 72 72 65 6e  74 20 70 61 6c 65 74 74  |r current palett|
000062d0  65 2c 20 6f 72 20 30 20  66 6f 72 20 64 65 66 61  |e, or 0 for defa|
000062e0  75 6c 74 20 66 6f 72 20  74 68 65 20 6d 6f 64 65  |ult for the mode|
000062f0  0a 0a 3c 3d 09 52 30 20  3d 09 47 43 4f 4c 0a 09  |..<=.R0 =.GCOL..|
00006300  52 31 2c 52 32 20 70 72  65 73 65 72 76 65 64 0a  |R1,R2 preserved.|
00006310  0a 54 68 69 73 20 63 61  6c 6c 2c 20 67 69 76 65  |.This call, give|
00006320  6e 20 61 20 70 61 6c 65  74 74 65 20 65 6e 74 72  |n a palette entr|
00006330  79 2c 20 61 20 64 65 73  74 69 6e 61 74 69 6f 6e  |y, a destination|
00006340  20 6d 6f 64 65 20 61 6e  64 20 70 61 6c 65 74 74  | mode and palett|
00006350  65 2c 20 72 65 74 75 72  6e 73 20 74 68 65 20 66  |e, returns the f|
00006360  75 72 74 68 65 73 74 20  47 43 4f 4c 2e 00 00 00  |urthest GCOL....|
00006370  44 41 54 41 70 01 00 00  43 6f 6c 6f 75 72 54 72  |DATAp...ColourTr|
00006380  61 6e 73 5f 53 65 6c 65  63 74 47 43 4f 4c 54 61  |ans_SelectGCOLTa|
00006390  62 6c 65 20 28 26 34 30  37 34 31 29 0a 23 50 61  |ble (&40741).#Pa|
000063a0  72 65 6e 74 20 43 6f 6c  6f 75 72 54 72 61 6e 73  |rent ColourTrans|
000063b0  5f 0a 54 68 65 20 72 65  67 69 73 74 65 72 73 20  |_.The registers |
000063c0  66 6f 72 20 74 68 69 73  20 63 61 6c 6c 20 61 72  |for this call ar|
000063d0  65 20 75 73 65 64 20 6a  75 73 74 20 61 73 20 69  |e used just as i|
000063e0  6e 20 3c 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 53  |n <ColourTrans_S|
000063f0  65 6c 65 63 74 54 61 62  6c 65 3e 2e 0a 0a 54 68  |electTable>...Th|
00006400  69 73 20 63 61 6c 6c 2c  20 67 69 76 65 6e 20 61  |is call, given a|
00006410  20 73 6f 75 72 63 65 20  6d 6f 64 65 20 61 6e 64  | source mode and|
00006420  20 70 61 6c 65 74 74 65  2c 20 61 20 64 65 73 74  | palette, a dest|
00006430  69 6e 61 74 69 6f 6e 20  6d 6f 64 65 20 61 6e 64  |ination mode and|
00006440  20 70 61 6c 65 74 74 65  2c 20 61 6e 64 20 61 20  | palette, and a |
00006450  62 75 66 66 65 72 2c 20  73 65 74 73 20 75 70 20  |buffer, sets up |
00006460  61 20 6c 69 73 74 20 6f  66 20 47 43 4f 4c 73 20  |a list of GCOLs |
00006470  69 6e 20 74 68 65 20 62  75 66 66 65 72 2e 20 54  |in the buffer. T|
00006480  68 65 20 76 61 6c 75 65  73 20 63 61 6e 20 73 75  |he values can su|
00006490  62 73 65 71 75 65 6e 74  6c 79 20 62 65 20 75 73  |bsequently be us|
000064a0  65 64 20 62 79 20 70 61  73 73 69 6e 67 20 74 68  |ed by passing th|
000064b0  65 6d 20 74 6f 20 3c 47  43 4f 4c 3d 3e 42 41 53  |em to <GCOL=>BAS|
000064c0  49 43 3a 47 43 4f 4c 3e  20 61 6e 64 20 3c 54 49  |IC:GCOL> and <TI|
000064d0  4e 54 3d 3e 42 41 53 49  43 3a 54 49 4e 54 3e 2e  |NT=>BASIC:TINT>.|
000064e0  44 41 54 41 33 03 00 00  43 6f 6c 6f 75 72 54 72  |DATA3...ColourTr|
000064f0  61 6e 73 5f 53 65 6c 65  63 74 54 61 62 6c 65 20  |ans_SelectTable |
00006500  28 26 34 30 37 34 30 29  0a 23 50 61 72 65 6e 74  |(&40740).#Parent|
00006510  20 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 0a 3d 3e  | ColourTrans_.=>|
00006520  09 52 30 20 3d 09 73 6f  75 72 63 65 20 6d 6f 64  |.R0 =.source mod|
00006530  65 20 6f 72 20 28 69 66  20 3e 3d 20 32 35 36 29  |e or (if >= 256)|
00006540  20 70 6f 69 6e 74 65 72  20 74 6f 20 73 70 72 69  | pointer to spri|
00006550  74 65 20 61 72 65 61 0a  09 52 31 20 3d 09 73 6f  |te area..R1 =.so|
00006560  75 72 63 65 20 70 61 6c  65 74 74 65 20 70 6f 69  |urce palette poi|
00006570  6e 74 65 72 20 6f 72 20  28 69 66 20 3e 3d 20 32  |nter or (if >= 2|
00006580  35 36 29 20 70 6f 69 6e  74 65 72 20 74 6f 20 73  |56) pointer to s|
00006590  70 72 69 74 65 20 6e 61  6d 65 2f 73 70 72 69 74  |prite name/sprit|
000065a0  65 20 69 6e 20 61 72 65  61 20 70 6f 69 6e 74 65  |e in area pointe|
000065b0  64 20 74 6f 20 62 79 20  52 30 20 28 61 73 20 73  |d to by R0 (as s|
000065c0  70 65 63 69 66 69 65 64  20 62 79 20 52 35 29 0a  |pecified by R5).|
000065d0  09 52 32 20 3d 09 64 65  73 74 69 6e 61 74 69 6f  |.R2 =.destinatio|
000065e0  6e 20 6d 6f 64 65 2c 20  6f 72 20 2d 31 20 66 6f  |n mode, or -1 fo|
000065f0  72 20 63 75 72 72 65 6e  74 20 6d 6f 64 65 0a 09  |r current mode..|
00006600  52 33 20 3d 09 64 65 73  74 69 6e 61 74 69 6f 6e  |R3 =.destination|
00006610  20 70 61 6c 65 74 74 65  20 70 6f 69 6e 74 65 72  | palette pointer|
00006620  2c 20 6f 72 20 2d 31 20  66 6f 72 20 63 75 72 72  |, or -1 for curr|
00006630  65 6e 74 20 70 61 6c 65  74 74 65 2c 20 6f 72 20  |ent palette, or |
00006640  30 20 66 6f 72 20 64 65  66 61 75 6c 74 20 66 6f  |0 for default fo|
00006650  72 20 74 68 65 20 6d 6f  64 65 0a 09 52 34 20 3d  |r the mode..R4 =|
00006660  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
00006670  65 72 0a 09 52 35 20 3d  09 3c 66 6c 61 67 73 3d  |er..R5 =.<flags=|
00006680  3e 2e 66 6c 61 67 73 3e  20 28 6f 6e 6c 79 20 75  |>.flags> (only u|
00006690  73 65 64 20 69 66 20 52  30 20 3e 3d 20 32 35 36  |sed if R0 >= 256|
000066a0  29 0a 0a 3c 3d 09 41 6c  6c 20 72 65 67 69 73 74  |)..<=.All regist|
000066b0  65 72 73 20 70 72 65 73  65 72 76 65 64 0a 0a 54  |ers preserved..T|
000066c0  68 69 73 20 63 61 6c 6c  20 73 65 74 73 20 75 70  |his call sets up|
000066d0  20 61 20 74 72 61 6e 73  6c 61 74 69 6f 6e 20 74  | a translation t|
000066e0  61 62 6c 65 20 69 6e 20  61 20 62 75 66 66 65 72  |able in a buffer|
000066f0  20 2d 20 74 68 61 74 20  69 73 2c 20 61 20 73 65  | - that is, a se|
00006700  74 20 6f 66 20 63 6f 6c  6f 75 72 20 6e 75 6d 62  |t of colour numb|
00006710  65 72 73 20 61 73 20 75  73 65 64 20 62 79 20 73  |ers as used by s|
00006720  63 61 6c 65 64 20 73 70  72 69 74 65 20 70 6c 6f  |caled sprite plo|
00006730  74 74 69 6e 67 2e 0a 23  53 75 62 70 61 67 65 20  |tting..#Subpage |
00006740  66 6c 61 67 73 0a 53 65  6c 65 63 74 20 54 61 62  |flags.Select Tab|
00006750  6c 65 20 66 6c 61 67 73  0a 42 69 74 09 4d 65 61  |le flags.Bit.Mea|
00006760  6e 69 6e 67 20 69 66 20  73 65 74 0a 23 4c 69 6e  |ning if set.#Lin|
00006770  65 0a 30 09 52 31 20 3d  20 70 6f 69 6e 74 65 72  |e.0.R1 = pointer|
00006780  20 74 6f 20 73 70 72 69  74 65 20 28 6f 74 68 65  | to sprite (othe|
00006790  72 77 69 73 65 20 73 70  72 69 74 65 20 6e 61 6d  |rwise sprite nam|
000067a0  65 29 0a 31 09 75 73 65  20 63 75 72 72 65 6e 74  |e).1.use current|
000067b0  20 70 61 6c 65 74 74 65  20 69 66 20 73 70 72 69  | palette if spri|
000067c0  74 65 20 64 6f 65 73 6e  27 74 20 68 61 76 65 20  |te doesn't have |
000067d0  6f 6e 65 20 28 6f 74 68  65 72 77 69 73 65 20 64  |one (otherwise d|
000067e0  65 66 61 75 6c 74 20 70  61 6c 65 74 74 65 29 0a  |efault palette).|
000067f0  6f 74 68 65 72 20 62 69  74 73 20 72 65 73 65 72  |other bits reser|
00006800  76 65 64 20 28 6d 75 73  74 20 62 65 20 7a 65 72  |ved (must be zer|
00006810  6f 29 0a 00 44 41 54 41  5b 01 00 00 43 6f 6c 6f  |o)..DATA[...Colo|
00006820  75 72 54 72 61 6e 73 5f  53 65 74 47 43 4f 4c 20  |urTrans_SetGCOL |
00006830  28 26 34 30 37 34 33 29  0a 23 50 61 72 65 6e 74  |(&40743).#Parent|
00006840  20 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 0a 3d 3e  | ColourTrans_.=>|
00006850  09 52 30 20 3d 09 50 61  6c 65 74 74 65 20 65 6e  |.R0 =.Palette en|
00006860  74 72 79 0a 09 52 33 20  3d 09 3c 66 6c 61 67 73  |try..R3 =.<flags|
00006870  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 47 43  |=>ColourTrans_GC|
00006880  4f 4c 66 6c 61 67 73 3e  0a 09 52 34 20 3d 09 47  |OLflags>..R4 =.G|
00006890  43 4f 4c 20 61 63 74 69  6f 6e 0a 20 20 20 0a 3c  |COL action.   .<|
000068a0  3d 09 52 30 20 3d 09 47  43 4f 4c 0a 09 52 32 20  |=.R0 =.GCOL..R2 |
000068b0  3d 09 6c 6f 67 32 20 6f  66 20 62 69 74 73 2d 70  |=.log2 of bits-p|
000068c0  65 72 2d 70 69 78 65 6c  20 66 6f 72 20 63 75 72  |er-pixel for cur|
000068d0  72 65 6e 74 20 6d 6f 64  65 0a 09 52 33 20 3d 09  |rent mode..R3 =.|
000068e0  69 6e 69 74 69 61 6c 20  76 61 6c 75 65 20 41 4e  |initial value AN|
000068f0  44 20 26 38 30 0a 09 52  34 20 70 72 65 73 65 72  |D &80..R4 preser|
00006900  76 65 64 0a 0a 54 68 69  73 20 63 61 6c 6c 2c 20  |ved..This call, |
00006910  67 69 76 65 6e 20 61 20  70 61 6c 65 74 74 65 20  |given a palette |
00006920  65 6e 74 72 79 2c 20 77  6f 72 6b 73 20 6f 75 74  |entry, works out|
00006930  20 74 68 65 20 63 6c 6f  73 65 73 74 20 47 43 4f  | the closest GCO|
00006940  4c 20 69 6e 20 74 68 65  20 63 75 72 72 65 6e 74  |L in the current|
00006950  20 6d 6f 64 65 20 61 6e  64 20 70 61 6c 65 74 74  | mode and palett|
00006960  65 2c 20 61 6e 64 20 73  65 74 73 20 69 74 2e 00  |e, and sets it..|
00006970  44 41 54 41 27 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA'...ColourTr|
00006980  61 6e 73 5f 53 65 74 47  43 4f 4c 20 66 6c 61 67  |ans_SetGCOL flag|
00006990  73 20 66 6f 72 20 52 33  0a 42 69 74 09 4d 65 61  |s for R3.Bit.Mea|
000069a0  6e 69 6e 67 20 69 66 20  73 65 74 0a 23 4c 69 6e  |ning if set.#Lin|
000069b0  65 0a 37 09 73 65 74 20  62 61 63 6b 67 72 6f 75  |e.7.set backgrou|
000069c0  6e 64 20 63 6f 6c 6f 75  72 20 28 6f 74 68 65 72  |nd colour (other|
000069d0  77 69 73 65 20 66 6f 72  65 67 72 6f 75 6e 64 29  |wise foreground)|
000069e0  0a 38 09 75 73 65 20 45  43 46 27 73 20 74 6f 20  |.8.use ECF's to |
000069f0  67 69 76 65 20 61 20 62  65 74 74 65 72 20 61 70  |give a better ap|
00006a00  70 72 6f 78 69 6d 61 74  69 6f 6e 20 74 6f 20 74  |proximation to t|
00006a10  68 65 20 63 6f 6c 6f 75  72 0a 0a 54 68 65 20 72  |he colour..The r|
00006a20  65 6d 61 69 6e 69 6e 67  20 62 69 74 73 20 6f 66  |emaining bits of|
00006a30  20 52 33 20 61 6e 64 20  74 68 65 20 74 6f 70 20  | R3 and the top |
00006a40  74 68 72 65 65 20 62 79  74 65 73 20 6f 66 20 52  |three bytes of R|
00006a50  34 20 61 72 65 20 72 65  73 65 72 76 65 64 2c 20  |4 are reserved, |
00006a60  61 6e 64 20 73 68 6f 75  6c 64 20 62 65 20 73 65  |and should be se|
00006a70  74 20 74 6f 20 7a 65 72  6f 20 74 6f 20 61 6c 6c  |t to zero to all|
00006a80  6f 77 20 66 6f 72 20 66  75 74 75 72 65 20 65 78  |ow for future ex|
00006a90  70 61 6e 73 69 6f 6e 00  44 41 54 41 b4 01 00 00  |pansion.DATA....|
00006aa0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 74 4f  |ColourTrans_SetO|
00006ab0  70 70 47 43 4f 4c 20 28  26 34 30 37 34 38 29 0a  |ppGCOL (&40748).|
00006ac0  23 50 61 72 65 6e 74 20  43 6f 6c 6f 75 72 54 72  |#Parent ColourTr|
00006ad0  61 6e 73 5f 0a 3d 3e 09  52 30 20 3d 09 70 61 6c  |ans_.=>.R0 =.pal|
00006ae0  65 74 74 65 20 65 6e 74  72 79 0a 09 52 33 20 3d  |ette entry..R3 =|
00006af0  09 30 20 66 6f 72 20 66  6f 72 65 67 72 6f 75 6e  |.0 for foregroun|
00006b00  64 20 6f 72 20 31 32 38  20 66 6f 72 20 62 61 63  |d or 128 for bac|
00006b10  6b 67 72 6f 75 6e 64 0a  09 52 34 20 3d 09 47 43  |kground..R4 =.GC|
00006b20  4f 4c 20 61 63 74 69 6f  6e 0a 0a 3c 3d 09 52 30  |OL action..<=.R0|
00006b30  20 3d 09 47 43 4f 4c 0a  09 52 32 20 3d 09 6c 6f  | =.GCOL..R2 =.lo|
00006b40  67 32 20 6f 66 20 62 69  74 73 2d 70 65 72 2d 70  |g2 of bits-per-p|
00006b50  69 78 65 6c 20 66 6f 72  20 63 75 72 72 65 6e 74  |ixel for current|
00006b60  20 6d 6f 64 65 0a 09 52  33 20 3d 09 69 6e 69 74  | mode..R3 =.init|
00006b70  69 61 6c 20 76 61 6c 75  65 20 41 4e 44 20 26 38  |ial value AND &8|
00006b80  30 0a 09 52 34 20 70 72  65 73 65 72 76 65 64 20  |0..R4 preserved |
00006b90  0a 0a 54 68 69 73 20 63  61 6c 6c 2c 20 67 69 76  |..This call, giv|
00006ba0  65 6e 20 61 20 70 61 6c  65 74 74 65 20 65 6e 74  |en a palette ent|
00006bb0  72 79 2c 20 77 6f 72 6b  73 20 6f 75 74 20 74 68  |ry, works out th|
00006bc0  65 20 66 75 72 74 68 65  73 74 20 47 43 4f 4c 20  |e furthest GCOL |
00006bd0  69 6e 20 74 68 65 20 63  75 72 72 65 6e 74 20 6d  |in the current m|
00006be0  6f 64 65 20 61 6e 64 20  70 61 6c 65 74 74 65 2c  |ode and palette,|
00006bf0  20 61 6e 64 20 73 65 74  73 20 69 74 2e 0a 0a 54  | and sets it...T|
00006c00  68 65 20 74 6f 70 20 74  68 72 65 65 20 62 69 74  |he top three bit|
00006c10  73 20 6f 66 20 52 33 20  61 6e 64 20 52 34 20 73  |s of R3 and R4 s|
00006c20  68 6f 75 6c 64 20 62 65  20 7a 65 72 6f 20 74 6f  |hould be zero to|
00006c30  20 61 6c 6c 6f 77 20 66  6f 72 20 66 75 74 75 72  | allow for futur|
00006c40  65 20 65 78 70 61 6e 73  69 6f 6e 2e 44 49 52 24  |e expansion.DIR$|
00006c50  2c 00 00 00 2c 00 00 00  78 6c 00 00 46 fd ff ff  |,...,...xl..F...|
00006c60  4c b4 dc 14 45 00 00 00  13 00 00 00 00 00 00 00  |L...E...........|
00006c70  21 52 6f 6f 74 00 00 00  44 41 54 41 45 00 00 00  |!Root...DATAE...|
00006c80  44 43 53 0a 23 50 61 72  65 6e 74 20 21 52 6f 6f  |DCS.#Parent !Roo|
00006c90  74 0a 23 50 72 65 66 69  78 20 44 43 53 5f 0a 43  |t.#Prefix DCS_.C|
00006ca0  6c 61 73 73 53 57 49 0a  50 6f 73 74 46 69 6c 74  |lassSWI.PostFilt|
00006cb0  65 72 0a 50 72 65 46 69  6c 74 65 72 0a 00 00 00  |er.PreFilter....|
00006cc0  44 49 52 24 a4 00 00 00  a4 00 00 00 64 6d 00 00  |DIR$........dm..|
00006cd0  46 fd ff ff 79 4d d2 be  f2 01 00 00 13 00 00 00  |F...yM..........|
00006ce0  00 00 00 00 21 52 6f 6f  74 00 00 00 58 6f 00 00  |....!Root...Xo..|
00006cf0  46 ff ff ff 77 b5 81 d2  ee 01 00 00 13 00 00 00  |F...w...........|
00006d00  00 00 00 00 54 68 72 6f  77 62 61 63 6b 53 65 6e  |....ThrowbackSen|
00006d10  64 00 00 00 48 71 00 00  46 ff ff ff f0 48 d2 be  |d...Hq..F....H..|
00006d20  e8 00 00 00 13 00 00 00  00 00 00 00 54 68 72 6f  |............Thro|
00006d30  77 62 61 63 6b 53 74 61  72 74 00 00 30 72 00 00  |wbackStart..0r..|
00006d40  46 ff ff ff 7a 41 d2 be  ab 00 00 00 13 00 00 00  |F...zA..........|
00006d50  00 00 00 00 54 68 72 6f  77 62 61 63 6b 45 6e 64  |....ThrowbackEnd|
00006d60  00 00 00 00 44 41 54 41  f2 01 00 00 44 44 45 55  |....DATA....DDEU|
00006d70  74 69 6c 73 0a 23 50 61  72 65 6e 74 20 21 52 6f  |tils.#Parent !Ro|
00006d80  6f 74 0a 23 50 72 65 66  69 78 20 44 44 45 55 74  |ot.#Prefix DDEUt|
00006d90  69 6c 73 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |ils_.#Table Colu|
00006da0  6d 6e 73 20 32 0a 50 72  65 66 69 78 0a 53 65 74  |mns 2.Prefix.Set|
00006db0  43 4c 53 69 7a 65 0a 53  65 74 43 4c 0a 47 65 74  |CLSize.SetCL.Get|
00006dc0  43 4c 53 69 7a 65 0a 47  65 74 43 6c 0a 54 68 72  |CLSize.GetCl.Thr|
00006dd0  6f 77 62 61 63 6b 52 65  67 69 73 74 65 72 0a 54  |owbackRegister.T|
00006de0  68 72 6f 77 62 61 63 6b  55 6e 52 65 67 69 73 74  |hrowbackUnRegist|
00006df0  65 72 0a 3c 54 68 72 6f  77 62 61 63 6b 53 74 61  |er.<ThrowbackSta|
00006e00  72 74 3e 0a 3c 54 68 72  6f 77 62 61 63 6b 53 65  |rt>.<ThrowbackSe|
00006e10  6e 64 3e 0a 3c 54 68 72  6f 77 62 61 63 6b 45 6e  |nd>.<ThrowbackEn|
00006e20  64 3e 0a 23 45 6e 64 54  61 62 6c 65 0a 0a 54 68  |d>.#EndTable..Th|
00006e30  72 6f 77 62 61 63 6b 20  70 72 6f 74 6f 63 6f 6c  |rowback protocol|
00006e40  20 3a 0a 23 49 6e 64 65  6e 74 20 34 0a 23 54 61  | :.#Indent 4.#Ta|
00006e50  62 6c 65 20 34 20 32 34  0a 3c 34 32 35 38 30 20  |ble 4 24.<42580 |
00006e60  54 68 72 6f 77 62 61 63  6b 53 74 61 72 74 3d 3e  |ThrowbackStart=>|
00006e70  77 69 6d 70 5f 75 6d 34  32 35 38 30 3e 0a 3c 34  |wimp_um42580>.<4|
00006e80  32 35 38 31 20 50 72 6f  63 65 73 73 69 6e 67 46  |2581 ProcessingF|
00006e90  69 6c 65 3d 3e 77 69 6d  70 5f 75 6d 34 32 35 38  |ile=>wimp_um4258|
00006ea0  31 3e 0a 3c 34 32 35 38  32 20 45 72 72 6f 72 73  |1>.<42582 Errors|
00006eb0  49 6e 3d 3e 77 69 6d 70  5f 75 6d 34 32 35 38 32  |In=>wimp_um42582|
00006ec0  3e 0a 3c 34 32 35 38 33  20 45 72 72 6f 72 44 65  |>.<42583 ErrorDe|
00006ed0  74 61 69 6c 73 3d 3e 77  69 6d 70 5f 75 6d 34 32  |tails=>wimp_um42|
00006ee0  35 38 33 3e 0a 3c 34 32  35 38 34 20 54 68 72 6f  |583>.<42584 Thro|
00006ef0  77 62 61 63 6b 45 6e 64  3d 3e 77 69 6d 70 5f 75  |wbackEnd=>wimp_u|
00006f00  6d 34 32 35 38 34 3e 0a  3c 34 32 35 38 35 20 49  |m42584>.<42585 I|
00006f10  6e 66 6f 46 6f 72 46 69  6c 65 3d 3e 77 69 6d 70  |nfoForFile=>wimp|
00006f20  5f 75 6d 34 32 35 38 35  3e 0a 3c 34 32 35 38 36  |_um42585>.<42586|
00006f30  20 49 6e 66 6f 44 65 74  61 69 6c 73 3d 3e 77 69  | InfoDetails=>wi|
00006f40  6d 70 5f 75 6d 34 32 35  38 36 3e 0a 23 45 6e 64  |mp_um42586>.#End|
00006f50  54 61 62 6c 65 0a 00 00  44 41 54 41 ee 01 00 00  |Table...DATA....|
00006f60  44 44 45 55 74 69 6c 73  5f 54 68 72 6f 77 62 61  |DDEUtils_Throwba|
00006f70  63 6b 53 65 6e 64 20 20  28 26 34 32 35 38 38 29  |ckSend  (&42588)|
00006f80  0a 23 50 61 72 65 6e 74  20 44 44 45 55 74 69 6c  |.#Parent DDEUtil|
00006f90  73 5f 0a 3d 3e 09 52 30  20 3d 20 3c 74 79 70 65  |s_.=>.R0 = <type|
00006fa0  3d 3e 2e 74 79 70 65 3e  0a 09 52 31 20 3d 20 3f  |=>.type>..R1 = ?|
00006fb0  0a 09 52 32 20 3d 20 66  69 6c 65 6e 61 6d 65 20  |..R2 = filename |
00006fc0  6f 66 20 66 69 6c 65 0a  09 52 33 20 3d 20 6c 69  |of file..R3 = li|
00006fd0  6e 65 20 6e 75 6d 62 65  72 20 69 6e 20 66 69 6c  |ne number in fil|
00006fe0  65 0a 09 52 34 20 3d 20  3c 73 65 72 69 6f 75 73  |e..R4 = <serious|
00006ff0  6e 65 73 73 3d 3e 2e 73  65 72 69 6f 75 73 6e 65  |ness=>.seriousne|
00007000  73 73 3e 20 28 69 66 20  65 72 72 6f 72 29 0a 09  |ss> (if error)..|
00007010  52 35 20 3d 20 70 6f 69  6e 74 65 72 20 74 6f 20  |R5 = pointer to |
00007020  6d 65 73 73 61 67 65 0a  0a 54 68 69 73 20 53 57  |message..This SW|
00007030  49 20 69 73 20 75 73 65  64 20 74 6f 20 73 65 6e  |I is used to sen|
00007040  64 20 64 61 74 61 20 66  72 6f 6d 20 61 20 6e 6f  |d data from a no|
00007050  6e 2d 6d 75 6c 74 69 74  61 73 6b 69 6e 67 20 61  |n-multitasking a|
00007060  70 70 6c 69 63 61 74 69  6f 6e 20 74 6f 20 74 68  |pplication to th|
00007070  65 20 74 68 72 6f 77 62  61 63 6b 20 68 61 6e 64  |e throwback hand|
00007080  6c 65 72 2e 0a 23 73 75  62 70 61 67 65 20 74 79  |ler..#subpage ty|
00007090  70 65 0a 44 44 45 55 74  69 6c 73 5f 54 68 72 6f  |pe.DDEUtils_Thro|
000070a0  77 62 61 63 6b 53 65 6e  64 20 74 79 70 65 0a 54  |wbackSend type.T|
000070b0  79 70 65 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |ype.Meaning.#Lin|
000070c0  65 0a 30 09 49 6e 66 6f  72 6d 61 74 69 6f 6e 0a  |e.0.Information.|
000070d0  31 09 45 72 72 6f 72 0a  23 73 75 62 70 61 67 65  |1.Error.#subpage|
000070e0  20 73 65 72 69 6f 75 73  6e 65 73 73 0a 44 44 45  | seriousness.DDE|
000070f0  55 74 69 6c 73 5f 54 68  72 6f 77 62 61 63 6b 53  |Utils_ThrowbackS|
00007100  65 6e 64 20 73 65 72 69  6f 75 73 6e 65 73 73 27  |end seriousness'|
00007110  0a 54 79 70 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |.Type.Meaning.#L|
00007120  69 6e 65 0a 30 09 57 61  72 6e 69 6e 67 0a 31 09  |ine.0.Warning.1.|
00007130  45 72 72 6f 72 0a 32 09  53 65 72 69 6f 75 73 20  |Error.2.Serious |
00007140  45 72 72 6f 72 0a 00 00  44 41 54 41 e8 00 00 00  |Error...DATA....|
00007150  44 44 45 55 74 69 6c 73  5f 54 68 72 6f 77 62 61  |DDEUtils_Throwba|
00007160  63 6b 53 74 61 72 74 20  20 28 26 34 32 35 38 37  |ckStart  (&42587|
00007170  29 0a 23 50 61 72 65 6e  74 20 44 44 45 55 74 69  |).#Parent DDEUti|
00007180  6c 73 5f 0a 54 68 69 73  20 53 57 49 20 69 73 20  |ls_.This SWI is |
00007190  75 73 65 64 20 74 6f 20  73 74 61 72 74 20 61 20  |used to start a |
000071a0  44 44 45 55 74 69 6c 73  20 74 68 72 6f 77 62 61  |DDEUtils throwba|
000071b0  63 6b 20 73 65 73 73 69  6f 6e 2e 20 54 68 69 73  |ck session. This|
000071c0  20 73 68 6f 75 6c 64 20  6f 6e 6c 79 20 62 65 20  | should only be |
000071d0  75 73 65 64 20 69 6e 20  6e 6f 6e 2d 6d 75 6c 74  |used in non-mult|
000071e0  69 74 61 73 6b 69 6e 67  20 61 70 70 6c 69 63 61  |itasking applica|
000071f0  74 69 6f 6e 73 2e 0a 0a  55 73 65 20 3c 44 44 45  |tions...Use <DDE|
00007200  55 74 69 6c 73 5f 54 68  72 6f 77 62 61 63 6b 53  |Utils_ThrowbackS|
00007210  65 6e 64 3e 20 74 6f 20  70 75 74 20 64 61 74 61  |end> to put data|
00007220  20 69 6e 20 74 68 65 20  62 75 66 66 65 72 2e 0a  | in the buffer..|
00007230  44 41 54 41 ab 00 00 00  44 44 45 55 74 69 6c 73  |DATA....DDEUtils|
00007240  5f 54 68 72 6f 77 62 61  63 6b 45 6e 64 20 20 28  |_ThrowbackEnd  (|
00007250  26 34 32 35 38 39 29 0a  23 50 61 72 65 6e 74 20  |&42589).#Parent |
00007260  44 44 45 55 74 69 6c 73  5f 0a 54 68 69 73 20 53  |DDEUtils_.This S|
00007270  57 49 20 69 73 20 75 73  65 64 20 74 6f 20 65 6e  |WI is used to en|
00007280  64 20 61 20 44 44 45 55  74 69 6c 73 20 74 68 72  |d a DDEUtils thr|
00007290  6f 77 62 61 63 6b 20 73  65 73 73 69 6f 6e 2e 20  |owback session. |
000072a0  54 68 69 73 20 73 68 6f  75 6c 64 20 6f 6e 6c 79  |This should only|
000072b0  20 62 65 20 75 73 65 64  20 69 6e 20 6e 6f 6e 2d  | be used in non-|
000072c0  6d 75 6c 74 69 74 61 73  6b 69 6e 67 20 61 70 70  |multitasking app|
000072d0  6c 69 63 61 74 69 6f 6e  73 2e 0a 00 44 49 52 24  |lications...DIR$|
000072e0  50 00 00 00 50 00 00 00  2c 73 00 00 46 fd ff ff  |P...P...,s..F...|
000072f0  68 8b 1d 00 3e 00 00 00  13 00 00 00 00 00 00 00  |h...>...........|
00007300  21 52 6f 6f 74 00 00 00  6c 73 00 00 45 ff ff ff  |!Root...ls..E...|
00007310  98 05 e2 ff 1b 01 00 00  13 00 00 00 00 00 00 00  |................|
00007320  44 69 73 61 73 73 65 6d  62 6c 65 00 44 41 54 41  |Disassemble.DATA|
00007330  3e 00 00 00 44 65 62 75  67 67 65 72 0a 23 50 61  |>...Debugger.#Pa|
00007340  72 65 6e 74 20 21 52 6f  6f 74 0a 23 50 72 65 66  |rent !Root.#Pref|
00007350  69 78 20 44 65 62 75 67  67 65 72 5f 0a 3c 44 69  |ix Debugger_.<Di|
00007360  73 61 73 73 65 6d 62 6c  65 3e 00 00 44 41 54 41  |sassemble>..DATA|
00007370  1b 01 00 00 44 65 62 75  67 67 65 72 5f 44 69 73  |....Debugger_Dis|
00007380  61 73 73 65 6d 62 6c 65  20 20 28 26 34 30 33 38  |assemble  (&4038|
00007390  30 29 0a 23 50 61 72 65  6e 74 20 44 65 62 75 67  |0).#Parent Debug|
000073a0  67 65 72 5f 0a 3d 3e 09  52 30 20 3d 20 69 6e 73  |ger_.=>.R0 = ins|
000073b0  74 72 75 63 74 69 6f 6e  0a 09 52 31 20 3d 20 61  |truction..R1 = a|
000073c0  64 64 72 65 73 73 20 69  74 20 63 61 6d 65 20 66  |ddress it came f|
000073d0  72 6f 6d 0a 0a 5c 3c 3d  09 52 31 20 3d 20 73 74  |rom..\<=.R1 = st|
000073e0  72 69 6e 67 2c 20 5c 30  20 74 65 72 6d 69 6e 61  |ring, \0 termina|
000073f0  74 65 64 0a 09 52 32 20  3d 20 6c 65 6e 67 74 68  |ted..R2 = length|
00007400  2c 20 69 6e 63 6c 20 5c  30 0a 0a 54 68 69 73 20  |, incl \0..This |
00007410  53 57 49 20 64 69 73 61  73 73 65 6d 62 6c 65 73  |SWI disassembles|
00007420  20 61 6e 20 69 6e 73 74  72 75 63 74 69 6f 6e 2e  | an instruction.|
00007430  20 54 68 65 20 61 64 64  72 65 73 73 20 69 6e 20  | The address in |
00007440  52 31 20 69 73 20 6e 65  65 64 65 64 20 66 6f 72  |R1 is needed for|
00007450  20 50 43 20 72 65 6c 61  74 69 76 65 20 69 6e 73  | PC relative ins|
00007460  74 72 75 63 74 69 6f 6e  73 20 28 6c 69 6b 65 20  |tructions (like |
00007470  42 2c 20 42 4c 2c 20 4c  44 52 20 78 2c 5b 50 43  |B, BL, LDR x,[PC|
00007480  2c 23 2e 2e 5d 20 29 00  44 49 52 24 2c 00 00 00  |,#..] ).DIR$,...|
00007490  2c 00 00 00 b4 74 00 00  46 fd ff ff 71 8b 1d 00  |,....t..F...q...|
000074a0  8d 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
000074b0  74 00 00 00 44 41 54 41  8d 00 00 00 44 65 76 69  |t...DATA....Devi|
000074c0  63 65 46 53 0a 23 50 61  72 65 6e 74 20 21 52 6f  |ceFS.#Parent !Ro|
000074d0  6f 74 0a 43 61 6c 6c 44  65 76 69 63 65 0a 44 65  |ot.CallDevice.De|
000074e0  72 65 67 69 73 74 65 72  0a 44 65 72 65 67 69 73  |register.Deregis|
000074f0  74 65 72 4f 62 6a 65 63  74 73 0a 52 65 63 69 65  |terObjects.Recie|
00007500  76 65 64 43 68 61 72 61  63 74 65 72 0a 52 65 67  |vedCharacter.Reg|
00007510  69 73 74 65 72 0a 52 65  67 69 73 74 65 72 4f 62  |ister.RegisterOb|
00007520  6a 65 63 74 73 0a 54 68  72 65 73 68 6f 6c 64 0a  |jects.Threshold.|
00007530  54 72 61 6e 73 6d 69 74  43 68 61 72 61 63 74 65  |TransmitCharacte|
00007540  72 00 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |r...DIR$,...,...|
00007550  70 75 00 00 46 fd ff ff  8e 46 c7 13 75 02 00 00  |pu..F....F..u...|
00007560  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00007570  44 41 54 41 75 02 00 00  44 69 74 68 65 72 45 78  |DATAu...DitherEx|
00007580  74 65 6e 64 0a 23 50 61  72 65 6e 74 20 21 52 6f  |tend.#Parent !Ro|
00007590  6f 74 0a 23 50 72 65 66  69 78 20 44 69 74 68 65  |ot.#Prefix Dithe|
000075a0  72 45 78 74 65 6e 64 5f  0a 23 54 61 62 6c 65 20  |rExtend_.#Table |
000075b0  43 6f 6c 75 6d 6e 73 20  32 0a 53 65 6c 65 63 74  |Columns 2.Select|
000075c0  54 61 62 6c 65 0a 53 65  6c 65 63 74 47 43 4f 4c  |Table.SelectGCOL|
000075d0  54 61 62 6c 65 0a 52 65  74 75 72 6e 47 43 4f 4c  |Table.ReturnGCOL|
000075e0  0a 53 65 74 47 43 4f 4c  0a 52 65 74 75 72 6e 43  |.SetGCOL.ReturnC|
000075f0  6f 6c 6f 75 72 4e 75 6d  62 65 72 0a 52 65 74 75  |olourNumber.Retu|
00007600  72 6e 47 43 4f 4c 46 6f  72 4d 6f 64 65 0a 52 65  |rnGCOLForMode.Re|
00007610  74 75 72 6e 43 6f 6c 6f  75 72 4e 75 6d 62 65 72  |turnColourNumber|
00007620  46 6f 72 4d 6f 64 65 0a  52 65 74 75 72 6e 4f 70  |ForMode.ReturnOp|
00007630  70 47 43 4f 4c 0a 53 65  74 4f 70 70 47 43 4f 4c  |pGCOL.SetOppGCOL|
00007640  0a 52 65 74 75 72 6e 4f  70 70 43 6f 6c 6f 75 72  |.ReturnOppColour|
00007650  4e 75 6d 62 65 72 0a 52  65 74 75 72 6e 4f 70 70  |Number.ReturnOpp|
00007660  47 43 4f 4c 46 6f 72 4d  6f 64 65 0a 52 65 74 75  |GCOLForMode.Retu|
00007670  72 6e 4f 70 70 43 6f 6c  6f 75 72 4e 75 6d 62 65  |rnOppColourNumbe|
00007680  72 46 6f 72 4d 6f 64 65  0a 47 43 4f 4c 54 6f 43  |rForMode.GCOLToC|
00007690  6f 6c 6f 75 72 4e 75 6d  62 65 72 0a 43 6f 6c 6f  |olourNumber.Colo|
000076a0  75 72 4e 75 6d 62 65 72  54 6f 47 43 4f 4c 0a 49  |urNumberToGCOL.I|
000076b0  6e 66 6f 0a 43 6f 6e 74  72 6f 6c 0a 52 65 74 75  |nfo.Control.Retu|
000076c0  72 6e 43 6f 6c 6f 75 72  50 61 74 74 65 72 6e 0a  |rnColourPattern.|
000076d0  52 65 74 75 72 6e 43 6f  6c 6f 75 72 50 61 74 74  |ReturnColourPatt|
000076e0  65 72 6e 54 61 62 6c 65  0a 49 6e 76 61 6c 69 64  |ernTable.Invalid|
000076f0  61 74 65 50 61 6c 65 74  74 65 0a 41 6e 74 69 61  |atePalette.Antia|
00007700  6c 69 61 73 0a 52 65 61  64 50 61 6c 65 74 74 65  |lias.ReadPalette|
00007710  0a 52 65 74 75 72 6e 43  6f 6c 6f 75 72 50 61 74  |.ReturnColourPat|
00007720  74 65 72 6e 41 72 72 61  79 0a 53 65 74 48 61 6c  |ternArray.SetHal|
00007730  66 74 6f 6e 65 0a 52 65  74 75 72 6e 48 61 6c 66  |ftone.ReturnHalf|
00007740  74 6f 6e 65 0a 53 65 74  48 61 6c 66 74 6f 6e 65  |tone.SetHalftone|
00007750  4f 72 69 67 69 6e 0a 52  65 74 75 72 6e 48 61 6c  |Origin.ReturnHal|
00007760  66 74 6f 6e 65 4f 72 69  67 69 6e 0a 53 65 6c 65  |ftoneOrigin.Sele|
00007770  63 74 48 61 6c 66 74 6f  6e 65 54 61 62 6c 65 0a  |ctHalftoneTable.|
00007780  52 65 74 75 72 6e 48 61  6c 66 74 6f 6e 65 49 6e  |ReturnHalftoneIn|
00007790  74 65 6e 73 69 74 79 0a  52 65 74 75 72 6e 48 61  |tensity.ReturnHa|
000077a0  6c 66 74 6f 6e 65 54 61  62 6c 65 0a 53 65 74 53  |lftoneTable.SetS|
000077b0  63 72 65 65 6e 0a 43 61  63 68 65 53 63 72 65 65  |creen.CacheScree|
000077c0  6e 0a 53 65 6c 65 63 74  43 6f 6c 6f 75 72 50 61  |n.SelectColourPa|
000077d0  74 74 65 72 6e 54 61 62  6c 65 0a 23 45 6e 64 54  |tternTable.#EndT|
000077e0  61 62 6c 65 0a 00 00 00  44 49 52 24 2c 00 00 00  |able....DIR$,...|
000077f0  2c 00 00 00 14 78 00 00  46 fd ff ff b4 22 8e a5  |,....x..F...."..|
00007800  8d 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00007810  74 00 00 00 44 41 54 41  8d 00 00 00 44 6f 63 75  |t...DATA....Docu|
00007820  6d 65 6e 74 4d 61 6e 61  67 65 72 0a 23 50 61 72  |mentManager.#Par|
00007830  65 6e 74 20 21 52 6f 6f  74 0a 23 50 72 65 66 69  |ent !Root.#Prefi|
00007840  78 20 44 6f 63 75 6d 65  6e 74 4d 61 6e 61 67 65  |x DocumentManage|
00007850  72 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |r_.#Table Column|
00007860  73 20 33 0a 4f 70 65 6e  0a 43 6c 6f 73 65 0a 46  |s 3.Open.Close.F|
00007870  69 6c 65 0a 46 69 6e 64  0a 41 72 67 73 0a 47 42  |ile.Find.Args.GB|
00007880  50 42 0a 43 6f 6d 70 61  63 74 0a 52 65 73 65 74  |PB.Compact.Reset|
00007890  0a 53 74 61 6d 70 0a 23  45 6e 64 54 61 62 6c 65  |.Stamp.#EndTable|
000078a0  0a 00 00 00 44 49 52 24  9c 00 00 00 9c 00 00 00  |....DIR$........|
000078b0  40 79 00 00 46 fd ff ff  61 58 66 db 49 00 00 00  |@y..F...aXf.I...|
000078c0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000078d0  8c 79 00 00 46 ff ff ff  d9 fb 65 db 30 04 00 00  |.y..F.....e.0...|
000078e0  13 00 00 00 00 00 00 00  44 69 73 63 46 6f 72 6d  |........DiscForm|
000078f0  61 74 00 00 bc 7d 00 00  46 fd ff ff 6d 2b 66 db  |at...}..F...m+f.|
00007900  83 01 00 00 13 00 00 00  00 00 00 00 46 6f 72 6d  |............Form|
00007910  61 74 53 70 65 63 00 00  40 7f 00 00 46 ff ff ff  |atSpec..@...F...|
00007920  20 4e 66 db 09 05 00 00  13 00 00 00 00 00 00 00  | Nf.............|
00007930  4c 61 79 6f 75 74 53 74  72 75 63 74 75 72 65 00  |LayoutStructure.|
00007940  44 41 54 41 49 00 00 00  44 4f 53 46 53 0a 23 50  |DATAI...DOSFS.#P|
00007950  61 72 65 6e 74 20 21 52  6f 6f 74 0a 23 50 72 65  |arent !Root.#Pre|
00007960  66 69 78 20 44 4f 53 46  53 5f 0a 3c 44 69 73 63  |fix DOSFS_.<Disc|
00007970  46 6f 72 6d 61 74 3e 0a  3c 4c 61 79 6f 75 74 53  |Format>.<LayoutS|
00007980  74 72 75 63 74 75 72 65  3e 00 00 00 44 41 54 41  |tructure>...DATA|
00007990  30 04 00 00 44 4f 53 46  53 5f 44 69 73 63 46 6f  |0...DOSFS_DiscFo|
000079a0  72 6d 61 74 20 28 26 34  31 41 43 30 29 0a 23 50  |rmat (&41AC0).#P|
000079b0  61 72 65 6e 74 20 44 4f  53 46 53 5f 0a 3d 3e 09  |arent DOSFS_.=>.|
000079c0  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
000079d0  3c 64 69 73 63 20 66 6f  72 6d 61 74 20 73 74 72  |<disc format str|
000079e0  75 63 74 75 72 65 3d 3e  46 69 6c 65 43 6f 72 65  |ucture=>FileCore|
000079f0  5f 46 6f 72 6d 61 74 3e  20 74 6f 20 62 65 20 66  |_Format> to be f|
00007a00  69 6c 6c 65 64 20 69 6e  0a 09 52 31 20 3d 09 53  |illed in..R1 =.S|
00007a10  57 49 20 6e 75 6d 62 65  72 20 74 6f 20 63 61 6c  |WI number to cal|
00007a20  6c 20 74 6f 20 76 65 74  20 64 69 73 63 20 66 6f  |l to vet disc fo|
00007a30  72 6d 61 74 20 28 65 67  20 3c 41 44 46 53 5f 56  |rmat (eg <ADFS_V|
00007a40  65 74 46 6f 72 6d 61 74  3e 29 0a 09 52 32 20 3d  |etFormat>)..R2 =|
00007a50  09 70 61 72 61 6d 65 74  65 72 20 69 6e 20 52 31  |.parameter in R1|
00007a60  20 74 6f 20 75 73 65 20  77 68 65 6e 20 63 61 6c  | to use when cal|
00007a70  6c 69 6e 67 20 76 65 74  74 69 6e 67 20 53 57 49  |ling vetting SWI|
00007a80  0a 09 52 33 20 3d 09 3c  66 6f 72 6d 61 74 20 73  |..R3 =.<format s|
00007a90  70 65 63 69 66 69 65 72  3d 3e 44 4f 53 46 53 5f  |pecifier=>DOSFS_|
00007aa0  46 6f 72 6d 61 74 53 70  65 63 3e 0a 0a 3c 3d 09  |FormatSpec>..<=.|
00007ab0  52 30 2d 52 33 20 70 72  65 73 65 72 76 65 64 0a  |R0-R3 preserved.|
00007ac0  0a 54 68 69 73 20 63 61  6c 6c 20 66 69 6c 6c 73  |.This call fills|
00007ad0  20 69 6e 20 74 68 65 20  64 69 73 63 20 66 6f 72  | in the disc for|
00007ae0  6d 61 74 20 73 74 72 75  63 74 75 72 65 20 70 6f  |mat structure po|
00007af0  69 6e 74 65 64 20 74 6f  20 62 79 20 52 30 20 77  |inted to by R0 w|
00007b00  69 74 68 20 74 68 65 20  27 70 72 65 66 65 63 74  |ith the 'prefect|
00007b10  27 20 70 61 72 61 6d 65  74 65 72 73 20 66 6f 72  |' parameters for|
00007b20  20 74 68 65 20 73 70 65  63 69 66 69 65 64 20 66  | the specified f|
00007b30  6f 72 6d 61 74 2c 20 74  61 6b 69 6e 67 20 6e 6f  |ormat, taking no|
00007b40  20 61 63 63 6f 75 6e 74  20 6f 66 20 74 68 65 20  | account of the |
00007b50  61 62 69 6c 69 74 69 65  73 20 6f 66 20 74 68 65  |abilities of the|
00007b60  20 61 76 61 69 6c 61 62  6c 65 20 68 61 72 64 77  | available hardw|
00007b70  61 72 65 20 74 68 61 74  20 77 69 6c 6c 20 68 61  |are that will ha|
00007b80  76 65 20 74 6f 20 70 65  72 66 6f 72 6d 20 74 68  |ve to perform th|
00007b90  65 20 66 6f 72 6d 61 74  2e 20 4f 6e 63 65 20 66  |e format. Once f|
00007ba0  69 6c 6c 65 64 20 69 6e  2c 20 74 68 69 73 20 53  |illed in, this S|
00007bb0  57 49 20 63 61 6c 6c 73  20 74 68 65 20 76 65 74  |WI calls the vet|
00007bc0  74 69 6e 67 20 53 57 49  20 74 6f 20 63 68 65 63  |ting SWI to chec|
00007bd0  6b 20 74 68 65 20 66 6f  72 6d 61 79 20 73 74 72  |k the formay str|
00007be0  75 63 74 75 72 65 20 66  6f 72 20 61 63 68 69 65  |ucture for achie|
00007bf0  76 61 62 69 6c 69 74 79  20 6f 6e 20 74 68 65 20  |vability on the |
00007c00  61 76 61 69 6c 61 62 6c  65 20 68 61 72 64 77 61  |available hardwa|
00007c10  72 65 2e 20 54 68 65 20  76 65 74 74 69 6e 67 20  |re. The vetting |
00007c20  53 57 49 20 6d 61 79 20  67 65 6e 65 72 61 74 65  |SWI may generate|
00007c30  20 61 6e 20 65 72 72 6f  72 20 69 66 20 74 68 65  | an error if the|
00007c40  20 66 6f 72 6d 61 74 20  64 69 66 66 65 72 73 20  | format differs |
00007c50  77 69 64 65 6c 79 20 66  72 6f 6d 20 77 68 61 74  |widely from what|
00007c60  20 63 61 6e 20 62 65 20  61 63 68 69 65 76 65 64  | can be achieved|
00007c70  3b 20 61 6c 74 65 72 6e  61 74 69 76 65 6c 79 20  |; alternatively |
00007c80  69 74 20 6d 61 79 20 61  6c 74 65 72 20 74 68 65  |it may alter the|
00007c90  20 66 6f 72 6d 61 74 20  73 74 72 75 63 74 75 72  | format structur|
00007ca0  65 20 74 6f 20 74 68 65  20 63 6c 6f 73 65 73 74  |e to the closest|
00007cb0  20 6d 61 74 63 68 20 74  68 61 74 20 63 61 6e 20  | match that can |
00007cc0  62 65 20 61 63 68 69 65  76 65 64 2e 20 54 68 65  |be achieved. The|
00007cd0  20 76 65 74 74 69 6e 67  20 53 57 49 20 74 68 65  | vetting SWI the|
00007ce0  6e 20 72 65 74 75 72 6e  73 20 74 6f 20 74 68 69  |n returns to thi|
00007cf0  73 20 53 57 49 2c 20 77  68 69 63 68 20 63 68 65  |s SWI, which che|
00007d00  63 6b 73 20 77 68 65 74  68 65 72 20 74 68 65 20  |cks whether the |
00007d10  66 6f 72 6d 61 74 20 62  6c 6f 63 6b 20 2d 20 61  |format block - a|
00007d20  73 20 75 70 64 61 74 65  64 20 62 79 20 74 68 65  |s updated by the|
00007d30  20 76 65 74 74 69 6e 67  20 53 57 49 20 2d 20 69  | vetting SWI - i|
00007d40  73 20 73 74 69 6c 6c 20  61 6e 20 61 64 65 71 75  |s still an adequ|
00007d50  61 74 65 20 6d 61 74 63  68 20 66 6f 72 20 74 68  |ate match for th|
00007d60  65 20 64 65 73 69 72 65  64 20 66 6f 72 6d 61 74  |e desired format|
00007d70  2e 20 49 66 20 69 74 20  69 73 2c 20 74 68 69 73  |. If it is, this|
00007d80  20 53 57 49 20 72 65 74  75 72 6e 73 20 74 6f 20  | SWI returns to |
00007d90  69 74 73 20 63 61 6c 6c  65 72 3b 20 6f 74 68 65  |its caller; othe|
00007da0  72 77 69 73 65 20 69 74  20 67 65 6e 65 72 61 74  |rwise it generat|
00007db0  65 73 20 61 6e 20 65 72  72 6f 72 2e 44 41 54 41  |es an error.DATA|
00007dc0  83 01 00 00 46 6f 72 6d  61 74 20 73 70 65 63 69  |....Format speci|
00007dd0  66 69 65 72 0a 5c 23 09  4e 61 6d 65 09 53 69 7a  |fier.\#.Name.Siz|
00007de0  65 09 4f 53 09 09 54 79  70 65 0a 23 4c 69 6e 65  |e.OS..Type.#Line|
00007df0  0a 30 09 44 4f 53 2f 51  09 31 2e 34 34 4d 09 4d  |.0.DOS/Q.1.44M.M|
00007e00  53 2d 44 4f 53 20 33 2e  32 30 09 64 6f 75 62 6c  |S-DOS 3.20.doubl|
00007e10  65 20 73 69 64 65 64 0a  31 09 44 4f 53 2f 4d 09  |e sided.1.DOS/M.|
00007e20  37 32 30 6b 09 4d 53 2d  44 4f 53 20 33 2e 32 30  |720k.MS-DOS 3.20|
00007e30  09 64 6f 75 62 6c 65 20  73 69 64 65 64 0a 32 09  |.double sided.2.|
00007e40  44 4f 53 2f 48 09 31 2e  32 30 4d 09 4d 53 2d 44  |DOS/H.1.20M.MS-D|
00007e50  4f 53 20 33 09 64 6f 75  62 6c 65 20 73 69 64 65  |OS 3.double side|
00007e60  64 0a 33 09 44 4f 53 2f  4e 09 33 36 30 6b 09 4d  |d.3.DOS/N.360k.M|
00007e70  53 2d 44 4f 53 20 32 2c  33 09 64 6f 75 62 6c 65  |S-DOS 2,3.double|
00007e80  20 73 69 64 65 64 0a 34  09 44 4f 53 2f 50 09 31  | sided.4.DOS/P.1|
00007e90  38 30 6b 09 4d 53 2d 44  4f 53 20 32 2c 33 09 73  |80k.MS-DOS 2,3.s|
00007ea0  69 6e 67 6c 65 20 73 69  64 65 64 0a 35 09 44 4f  |ingle sided.5.DO|
00007eb0  53 2f 54 09 33 32 30 6b  09 4d 53 2d 44 4f 53 20  |S/T.320k.MS-DOS |
00007ec0  31 2c 32 2c 33 09 64 6f  75 62 6c 65 20 73 69 64  |1,2,3.double sid|
00007ed0  65 64 0a 36 09 44 4f 53  2f 55 09 31 36 30 6b 09  |ed.6.DOS/U.160k.|
00007ee0  4d 53 2d 44 4f 53 20 31  2c 32 2c 33 09 73 69 6e  |MS-DOS 1,2,3.sin|
00007ef0  67 6c 65 20 73 69 64 65  64 0a 37 09 41 74 61 72  |gle sided.7.Atar|
00007f00  69 2f 4d 09 37 32 30 6b  09 41 74 61 72 69 09 09  |i/M.720k.Atari..|
00007f10  64 6f 75 62 6c 65 20 73  69 64 65 64 0a 38 09 41  |double sided.8.A|
00007f20  74 61 72 69 2f 4e 09 33  36 30 6b 09 41 74 61 72  |tari/N.360k.Atar|
00007f30  69 09 09 73 69 6e 67 6c  65 20 73 69 64 65 64 00  |i..single sided.|
00007f40  44 41 54 41 09 05 00 00  44 4f 53 46 53 5f 4c 61  |DATA....DOSFS_La|
00007f50  79 6f 75 74 53 74 72 75  63 74 75 72 65 20 28 26  |youtStructure (&|
00007f60  34 31 41 43 31 29 0a 23  50 61 72 65 6e 74 20 44  |41AC1).#Parent D|
00007f70  4f 53 46 53 5f 0a 3d 3e  09 52 30 20 3d 09 3c 73  |OSFS_.=>.R0 =.<s|
00007f80  74 72 75 63 74 75 72 65  20 73 70 65 63 69 66 69  |tructure specifi|
00007f90  65 72 3d 3e 44 4f 53 46  53 5f 46 6f 72 6d 61 74  |er=>DOSFS_Format|
00007fa0  53 70 65 63 3e 0a 09 52  31 20 3d 09 70 6f 69 6e  |Spec>..R1 =.poin|
00007fb0  74 65 72 20 74 6f 20 62  61 64 20 62 6c 6f 63 6b  |ter to bad block|
00007fc0  20 6c 69 73 74 20 28 74  65 72 6d 69 6e 61 74 65  | list (terminate|
00007fd0  64 20 62 79 20 2d 31 29  0a 09 52 32 20 3d 09 70  |d by -1)..R2 =.p|
00007fe0  6f 69 6e 74 65 72 20 74  6f 20 6e 75 6c 6c 20 74  |ointer to null t|
00007ff0  65 72 6d 69 6e 61 74 65  64 20 64 69 73 63 20 6e  |erminated disc n|
00008000  61 6d 65 0a 09 52 33 20  3d 09 69 6d 61 67 65 20  |ame..R3 =.image |
00008010  66 69 6c 65 20 68 61 6e  64 6c 65 0a 0a 3c 3d 20  |file handle..<= |
00008020  52 30 2d 52 33 20 70 72  65 73 65 72 76 65 64 0a  |R0-R3 preserved.|
00008030  0a 54 68 69 73 20 63 61  6c 6c 20 6c 61 79 73 20  |.This call lays |
00008040  6f 75 74 20 69 6e 20 74  68 65 20 73 70 65 63 69  |out in the speci|
00008050  66 69 65 64 20 69 6d 61  67 65 20 61 6c 6c 20 6e  |fied image all n|
00008060  65 63 65 73 73 61 72 79  20 73 74 72 75 63 74 75  |ecessary structu|
00008070  72 65 73 20 74 6f 20 68  61 76 65 20 61 20 76 61  |res to have a va|
00008080  6c 69 64 2c 20 65 6d 70  74 79 20 64 69 73 63 2e  |lid, empty disc.|
00008090  20 49 74 20 63 61 6e 20  62 65 20 75 73 65 64 3a  | It can be used:|
000080a0  0a 0a 23 49 6e 64 65 6e  74 20 32 0a 8f 20 74 6f  |..#Indent 2.. to|
000080b0  20 6c 61 79 6f 75 74 20  61 20 73 74 72 75 63 74  | layout a struct|
000080c0  75 72 65 20 6f 6e 20 61  20 62 6c 61 63 6b 2c 20  |ure on a black, |
000080d0  66 6f 72 6d 61 74 74 65  64 20 64 69 73 63 20 28  |formatted disc (|
000080e0  69 6e 20 77 68 69 63 68  20 63 61 73 65 20 74 68  |in which case th|
000080f0  65 20 73 70 65 63 69 66  69 65 64 20 69 6d 61 67  |e specified imag|
00008100  65 20 73 68 6f 75 6c 64  20 62 65 20 74 68 65 20  |e should be the |
00008110  77 68 6f 6c 65 20 64 69  73 63 20 69 6d 61 67 65  |whole disc image|
00008120  29 0a 8f 20 74 6f 20 6c  61 79 6f 75 74 20 61 20  |).. to layout a |
00008130  70 61 72 74 69 74 69 6f  6e 20 69 6e 20 61 20 66  |partition in a f|
00008140  69 6c 65 20 6f 6e 20 61  20 64 69 73 63 20 74 68  |ile on a disc th|
00008150  61 74 20 68 61 73 20 61  6c 72 65 61 64 79 20 62  |at has already b|
00008160  65 65 6e 20 66 6f 72 6d  61 74 74 65 64 20 28 66  |een formatted (f|
00008170  6f 72 20 65 78 61 6d 70  6c 65 20 66 6f 72 20 74  |or example for t|
00008180  68 65 20 50 43 20 65 6d  75 6c 61 74 6f 72 29 2e  |he PC emulator).|
00008190  0a 23 49 6e 64 65 6e 74  0a 0a 49 66 20 74 68 65  |.#Indent..If the|
000081a0  20 67 69 76 65 6e 20 69  6d 61 67 65 20 66 6f 72  | given image for|
000081b0  6d 61 74 20 68 61 73 20  6e 6f 20 6f 70 74 69 6f  |mat has no optio|
000081c0  6e 20 74 6f 20 73 74 6f  72 65 20 61 20 64 69 73  |n to store a dis|
000081d0  63 20 6e 61 6d 65 20 74  68 65 6e 20 74 68 69 73  |c name then this|
000081e0  20 70 61 72 61 6d 65 74  65 72 20 73 68 6f 75 6c  | parameter shoul|
000081f0  64 20 62 65 20 69 67 6e  6f 72 65 64 2e 0a 0a 54  |d be ignored...T|
00008200  68 65 20 62 61 64 20 62  6c 6f 63 6b 20 6c 69 73  |he bad block lis|
00008210  74 20 73 68 6f 75 6c 64  20 62 65 20 70 72 65 73  |t should be pres|
00008220  65 6e 74 65 64 20 61 73  20 61 6e 20 61 72 72 61  |ented as an arra|
00008230  79 20 6f 66 20 62 61 64  20 62 6c 6f 63 6b 20 61  |y of bad block a|
00008240  64 64 72 65 73 73 65 73  2e 20 45 61 63 68 20 61  |ddresses. Each a|
00008250  64 64 72 65 73 73 20 69  73 20 34 20 62 79 74 65  |ddress is 4 byte|
00008260  73 20 6c 6f 6e 67 2e 20  54 68 65 20 61 72 72 61  |s long. The arra|
00008270  79 20 69 73 20 74 65 72  6d 69 6e 61 74 65 64 20  |y is terminated |
00008280  62 79 20 61 20 2d 31 20  65 6e 74 72 79 2e 0a 0a  |by a -1 entry...|
00008290  49 74 27 73 20 61 73 73  75 6d 65 64 20 74 68 61  |It's assumed tha|
000082a0  74 20 52 30 20 67 69 76  65 73 20 65 6e 6f 75 67  |t R0 gives enoug|
000082b0  68 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 66 6f  |h information fo|
000082c0  72 20 74 68 65 20 66 6f  72 6d 61 74 20 2d 20 69  |r the format - i|
000082d0  74 20 6d 61 74 20 62 65  20 74 68 61 74 20 52 30  |t mat be that R0|
000082e0  20 63 6f 6e 74 61 69 6e  73 20 6d 61 6e 79 20 62  | contains many b|
000082f0  69 74 20 66 69 65 6c 64  73 20 6f 72 20 70 6f 69  |it fields or poi|
00008300  6e 74 73 20 74 6f 20 61  20 62 6c 6f 63 6b 20 6f  |nts to a block o|
00008310  66 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 73 20 2d  |f informations -|
00008320  20 74 68 65 20 63 68 6f  69 63 65 20 69 73 20 75  | the choice is u|
00008330  70 20 74 6f 20 74 68 65  20 69 6d 61 67 65 20 66  |p to the image f|
00008340  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 6d 6f 64  |iling system mod|
00008350  75 6c 65 2e 20 54 68 65  20 76 61 6c 75 65 20 69  |ule. The value i|
00008360  6e 20 52 30 20 69 73 20  75 73 65 64 20 74 6f 20  |n R0 is used to |
00008370  70 61 73 73 20 65 6e 6f  75 67 68 20 69 6e 66 6f  |pass enough info|
00008380  72 6d 61 74 69 6f 6e 20  74 6f 20 73 70 65 63 69  |rmation to speci|
00008390  66 79 20 74 68 65 20 64  69 73 63 20 73 74 72 75  |fy the disc stru|
000083a0  63 74 75 72 65 20 44 4f  53 46 53 20 75 73 65 73  |cture DOSFS uses|
000083b0  20 61 20 73 69 6d 70 6c  65 20 74 61 62 6c 65 20  | a simple table |
000083c0  69 6e 64 65 78 20 66 6f  72 20 74 68 69 73 3b 20  |index for this; |
000083d0  6f 74 68 65 72 20 69 6d  61 67 65 20 66 69 6c 69  |other image fili|
000083e0  6e 67 20 73 79 73 74 65  6d 73 20 6d 61 79 20 70  |ng systems may p|
000083f0  61 73 73 20 64 69 66 66  65 72 65 6e 74 20 69 6e  |ass different in|
00008400  66 6f 72 6d 61 74 69 6f  6e 73 20 28 75 73 69 6e  |formations (usin|
00008410  67 20 61 20 70 6f 69 6e  74 65 72 20 69 66 20 6e  |g a pointer if n|
00008420  65 63 65 73 73 61 72 79  29 20 66 6f 72 20 74 68  |ecessary) for th|
00008430  65 69 72 20 4c 61 79 6f  75 74 53 74 72 75 63 74  |eir LayoutStruct|
00008440  75 72 65 20 53 57 49 2e  0a 00 00 00 44 49 52 24  |ure SWI.....DIR$|
00008450  2c 00 00 00 2c 00 00 00  78 84 00 00 46 fd ff ff  |,...,...x...F...|
00008460  3f b7 dc 14 44 00 00 00  13 00 00 00 00 00 00 00  |?...D...........|
00008470  21 52 6f 6f 74 00 00 00  44 41 54 41 44 00 00 00  |!Root...DATAD...|
00008480  44 72 61 67 41 6e 4f 62  6a 65 63 74 0a 23 50 61  |DragAnObject.#Pa|
00008490  72 65 6e 74 20 21 52 6f  6f 74 0a 23 50 72 65 66  |rent !Root.#Pref|
000084a0  69 78 20 44 72 61 67 41  6e 4f 62 6a 65 63 74 5f  |ix DragAnObject_|
000084b0  0a 53 74 61 72 74 0a 53  74 6f 70 0a 44 49 52 24  |.Start.Stop.DIR$|
000084c0  ac 00 00 00 ac 00 00 00  68 85 00 00 46 fd ff ff  |........h...F...|
000084d0  86 52 31 0e 45 00 00 00  13 00 00 00 00 00 00 00  |.R1.E...........|
000084e0  21 52 6f 6f 74 00 00 00  b0 85 00 00 46 ff ff ff  |!Root.......F...|
000084f0  21 df d1 24 f8 01 00 00  13 00 00 00 00 00 00 00  |!..$............|
00008500  53 74 61 72 74 00 00 00  a8 87 00 00 46 fd ff ff  |Start.......F...|
00008510  39 10 d2 24 31 02 00 00  13 00 00 00 00 00 00 00  |9..$1...........|
00008520  6c 6f 63 66 6c 61 67 73  00 00 00 00 dc 89 00 00  |locflags........|
00008530  46 fd ff ff cf 4d d2 24  60 00 00 00 13 00 00 00  |F....M.$`.......|
00008540  00 00 00 00 62 6f 78 00  3c 8a 00 00 46 ff ff ff  |....box.<...F...|
00008550  16 55 ec 24 1b 01 00 00  13 00 00 00 00 00 00 00  |.U.$............|
00008560  53 74 6f 70 00 00 00 00  44 41 54 41 45 00 00 00  |Stop....DATAE...|
00008570  44 72 61 67 41 53 70 72  69 74 65 0a 23 50 61 72  |DragASprite.#Par|
00008580  65 6e 74 20 21 52 6f 6f  74 0a 23 50 72 65 66 69  |ent !Root.#Prefi|
00008590  78 20 44 72 61 67 41 53  70 72 69 74 65 5f 0a 3c  |x DragASprite_.<|
000085a0  53 74 61 72 74 3e 0a 3c  53 74 6f 70 3e 00 00 00  |Start>.<Stop>...|
000085b0  44 41 54 41 f8 01 00 00  44 72 61 67 41 53 70 72  |DATA....DragASpr|
000085c0  69 74 65 5f 53 74 61 72  74 20 20 28 26 34 32 34  |ite_Start  (&424|
000085d0  30 30 29 0a 23 50 61 72  65 6e 74 20 44 72 61 67  |00).#Parent Drag|
000085e0  41 53 70 72 69 74 65 5f  0a 3d 3e 09 52 30 20 3d  |ASprite_.=>.R0 =|
000085f0  09 4c 6f 63 61 74 69 6f  6e 20 3c 66 6c 61 67 73  |.Location <flags|
00008600  3d 3e 44 72 61 67 41 53  70 72 69 74 65 5f 6c 6f  |=>DragASprite_lo|
00008610  63 66 6c 61 67 73 3e 0a  09 52 31 20 3d 09 3c 53  |cflags>..R1 =.<S|
00008620  70 72 69 74 65 20 61 72  65 61 3d 3e 4f 53 5f 53  |prite area=>OS_S|
00008630  70 72 69 74 65 4f 70 5f  41 72 65 61 3e 20 28 30  |priteOp_Area> (0|
00008640  20 66 6f 72 20 73 79 73  74 65 6d 2c 20 31 20 66  | for system, 1 f|
00008650  6f 72 20 57 69 6d 70 2c  20 6f 74 68 65 72 77 69  |or Wimp, otherwi|
00008660  73 65 20 61 6e 20 61 64  64 72 65 73 73 29 0a 09  |se an address)..|
00008670  52 32 20 3d 09 50 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.Pointer to |
00008680  73 70 72 69 74 65 20 6e  61 6d 65 0a 09 52 33 20  |sprite name..R3 |
00008690  3d 09 50 6f 69 6e 74 65  72 20 74 6f 20 31 36 2d  |=.Pointer to 16-|
000086a0  62 79 74 65 20 62 6c 6f  63 6b 20 63 6f 6e 74 61  |byte block conta|
000086b0  69 6e 69 6e 67 20 3c 64  72 61 67 20 62 6f 78 3d  |ining <drag box=|
000086c0  3e 44 72 61 67 41 53 70  72 69 74 65 5f 62 6f 78  |>DragASprite_box|
000086d0  3e 0a 09 52 34 20 3d 09  50 6f 69 6e 74 65 72 20  |>..R4 =.Pointer |
000086e0  74 6f 20 6f 70 74 69 6f  6e 61 6c 20 62 6c 6f 63  |to optional bloc|
000086f0  6b 20 63 6f 6e 74 61 69  6e 69 6e 67 20 3c 62 6f  |k containing <bo|
00008700  75 6e 64 69 6e 67 20 62  6f 78 3d 3e 44 72 61 67  |unding box=>Drag|
00008710  41 53 70 72 69 74 65 5f  62 6f 78 3e 0a 0a 54 68  |ASprite_box>..Th|
00008720  69 73 20 53 57 49 20 73  74 61 72 74 73 20 64 72  |is SWI starts dr|
00008730  61 67 67 69 6e 67 20 61  20 73 70 72 69 74 65 2e  |agging a sprite.|
00008740  20 54 68 65 20 73 70 72  69 74 65 20 79 6f 75 20  | The sprite you |
00008750  73 75 70 70 6c 79 20 69  73 20 63 6f 70 69 65 64  |supply is copied|
00008760  2c 20 73 6f 20 74 68 65  72 65 20 69 73 20 6e 6f  |, so there is no|
00008770  20 70 72 6f 62 6c 65 6d  20 77 69 74 68 20 79 6f  | problem with yo|
00008780  75 20 64 69 73 70 6f 73  69 6e 67 20 6f 66 20 79  |u disposing of y|
00008790  6f 75 72 20 63 6f 70 79  20 6f 66 20 74 68 65 20  |our copy of the |
000087a0  73 70 72 69 74 65 2e 0a  44 41 54 41 31 02 00 00  |sprite..DATA1...|
000087b0  44 72 61 67 20 6c 6f 63  61 74 69 6f 6e 20 66 6c  |Drag location fl|
000087c0  61 67 73 0a 42 69 74 73  09 4d 65 61 6e 69 6e 67  |ags.Bits.Meaning|
000087d0  0a 23 4c 69 6e 65 0a 30  2d 31 09 48 6f 72 69 7a  |.#Line.0-1.Horiz|
000087e0  6f 6e 74 61 6c 20 6c 6f  63 61 74 69 6f 6e 20 6f  |ontal location o|
000087f0  66 20 73 70 72 69 74 65  20 69 6e 20 62 6f 78 3a  |f sprite in box:|
00008800  0a 09 20 30 30 09 4c 65  66 74 0a 09 20 30 31 09  |.. 00.Left.. 01.|
00008810  43 65 6e 74 72 65 0a 09  20 31 30 09 52 69 67 68  |Centre.. 10.Righ|
00008820  74 0a 09 20 31 31 09 75  6e 64 65 66 69 6e 65 64  |t.. 11.undefined|
00008830  0a 32 2d 33 09 56 65 72  74 69 63 61 6c 20 6c 6f  |.2-3.Vertical lo|
00008840  63 61 74 69 6f 6e 20 6f  66 20 73 70 72 69 74 65  |cation of sprite|
00008850  20 69 6e 20 62 6f 78 3a  0a 09 20 30 30 09 42 6f  | in box:.. 00.Bo|
00008860  74 74 6f 6d 0a 09 20 30  31 09 43 65 6e 74 72 65  |ttom.. 01.Centre|
00008870  0a 09 20 31 30 09 54 6f  70 0a 09 20 31 31 09 75  |.. 10.Top.. 11.u|
00008880  6e 64 65 66 69 6e 65 64  0a 34 2d 35 09 44 72 61  |ndefined.4-5.Dra|
00008890  67 20 62 6f 75 6e 64 69  6e 67 20 62 6f 78 20 69  |g bounding box i|
000088a0  73 3a 0a 09 20 30 30 09  57 68 6f 6c 65 20 73 63  |s:.. 00.Whole sc|
000088b0  72 65 65 6e 0a 09 20 30  31 09 44 69 73 70 6c 61  |reen.. 01.Displa|
000088c0  79 20 61 72 65 61 20 6f  66 20 77 69 6e 64 6f 77  |y area of window|
000088d0  20 74 68 61 74 20 74 68  65 20 70 6f 69 6e 74 65  | that the pointe|
000088e0  72 27 73 20 6f 76 65 72  0a 09 20 31 30 09 55 73  |r's over.. 10.Us|
000088f0  65 72 20 73 70 65 63 69  66 69 65 64 0a 09 20 31  |er specified.. 1|
00008900  31 09 75 6e 64 65 66 69  6e 65 64 0a 36 09 42 6f  |1.undefined.6.Bo|
00008910  75 6e 64 69 6e 67 20 62  6f 78 20 61 70 70 6c 69  |unding box appli|
00008920  65 73 20 74 6f 3a 0a 09  20 30 09 54 68 65 20 62  |es to:.. 0.The b|
00008930  6f 78 0a 09 20 31 09 54  68 65 20 70 6f 69 6e 74  |ox.. 1.The point|
00008940  65 72 0a 37 09 43 6f 6e  74 72 6f 6c 20 6f 66 20  |er.7.Control of |
00008950  64 72 6f 70 2d 73 68 61  64 6f 77 3a 0a 09 20 30  |drop-shadow:.. 0|
00008960  09 44 6f 6e 27 74 20 64  6f 20 61 20 64 72 6f 70  |.Don't do a drop|
00008970  2d 73 68 61 64 6f 77 0a  09 20 31 09 4d 61 6b 65  |-shadow.. 1.Make|
00008980  20 61 20 64 72 6f 70 20  73 68 61 64 6f 77 20 77  | a drop shadow w|
00008990  68 65 6e 20 63 6f 70 79  69 6e 67 20 74 68 65 20  |hen copying the |
000089a0  73 70 72 69 74 65 0a 38  2d 33 31 09 52 65 73 65  |sprite.8-31.Rese|
000089b0  72 76 65 64 20 66 6f 72  20 66 75 74 75 72 65 20  |rved for future |
000089c0  75 73 65 2c 20 73 68 6f  75 6c 64 20 62 65 20 73  |use, should be s|
000089d0  65 74 20 74 6f 20 30 2e  0a 00 00 00 44 41 54 41  |et to 0.....DATA|
000089e0  60 00 00 00 42 6f 78 20  62 6c 6f 63 6b 0a 4f 66  |`...Box block.Of|
000089f0  66 73 65 74 09 55 73 65  0a 23 4c 69 6e 65 0a 23  |fset.Use.#Line.#|
00008a00  57 72 61 70 20 4f 66 66  0a 30 09 78 30 20 28 6c  |Wrap Off.0.x0 (l|
00008a10  65 66 74 29 0a 34 09 79  30 20 28 62 6f 74 74 6f  |eft).4.y0 (botto|
00008a20  6d 29 0a 38 09 78 31 20  28 72 69 67 68 74 29 0a  |m).8.x1 (right).|
00008a30  31 32 09 79 31 20 28 74  6f 70 29 0a 44 41 54 41  |12.y1 (top).DATA|
00008a40  1b 01 00 00 44 72 61 67  41 53 70 72 69 74 65 5f  |....DragASprite_|
00008a50  53 74 6f 70 20 20 28 26  34 32 34 30 31 29 0a 23  |Stop  (&42401).#|
00008a60  50 61 72 65 6e 74 20 44  72 61 67 41 53 70 72 69  |Parent DragASpri|
00008a70  74 65 5f 0a 4e 6f 20 70  61 72 61 6d 73 0a 0a 54  |te_.No params..T|
00008a80  68 69 73 20 53 57 49 20  74 65 72 6d 69 6e 61 74  |his SWI terminat|
00008a90  65 73 20 61 6e 79 20 63  75 72 72 65 6e 74 20 64  |es any current d|
00008aa0  72 61 67 20 6f 70 65 72  61 74 69 6f 6e 20 61 6e  |rag operation an|
00008ab0  64 20 72 65 6c 65 61 73  65 73 20 61 6e 79 20 64  |d releases any d|
00008ac0  72 61 67 2d 61 2d 73 70  72 69 74 65 20 77 6f 72  |rag-a-sprite wor|
00008ad0  6b 73 70 61 63 65 20 63  6c 61 69 6d 65 64 20 74  |kspace claimed t|
00008ae0  6f 20 64 6f 20 61 20 64  72 61 67 2e 20 49 74 20  |o do a drag. It |
00008af0  69 73 20 65 78 70 65 63  74 65 64 20 74 68 61 74  |is expected that|
00008b00  20 74 68 69 73 20 53 57  49 20 77 69 6c 6c 20 62  | this SWI will b|
00008b10  65 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 74 68  |e called when th|
00008b20  65 20 75 73 65 72 5f 64  72 61 67 5f 62 6f 78 20  |e user_drag_box |
00008b30  72 65 61 73 6f 6e 20 69  73 20 72 65 63 65 69 76  |reason is receiv|
00008b40  65 64 20 62 79 20 74 68  65 20 61 70 70 6c 69 63  |ed by the applic|
00008b50  61 74 69 6f 6e 2e 0a 00  44 49 52 24 2c 00 00 00  |ation...DIR$,...|
00008b60  2c 00 00 00 84 8b 00 00  46 fd ff ff f4 47 c7 13  |,.......F....G..|
00008b70  65 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |e...........!Roo|
00008b80  74 00 00 00 44 41 54 41  65 00 00 00 44 72 61 77  |t...DATAe...Draw|
00008b90  46 69 6c 65 0a 23 50 61  72 65 6e 74 20 21 52 6f  |File.#Parent !Ro|
00008ba0  6f 74 0a 23 50 72 65 66  69 78 20 44 72 61 77 46  |ot.#Prefix DrawF|
00008bb0  69 6c 65 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |ile_.#Table Colu|
00008bc0  6d 6e 73 20 32 0a 52 65  6e 64 65 72 0a 42 42 6f  |mns 2.Render.BBo|
00008bd0  78 0a 44 65 63 6c 61 72  65 46 6f 6e 74 73 0a 23  |x.DeclareFonts.#|
00008be0  45 6e 64 54 61 62 6c 65  0a 00 00 00 44 49 52 24  |EndTable....DIR$|
00008bf0  08 02 00 00 08 02 00 00  f4 8d 00 00 46 fd ff ff  |............F...|
00008c00  77 3e 18 1a 77 00 00 00  13 00 00 00 00 00 00 00  |w>..w...........|
00008c10  21 52 6f 6f 74 00 00 00  6c 8e 00 00 46 fd ff ff  |!Root...l...F...|
00008c20  f7 5b a6 fa 4a 03 00 00  13 00 00 00 00 00 00 00  |.[..J...........|
00008c30  66 69 6c 65 66 6f 72 6d  61 74 00 00 b8 91 00 00  |fileformat......|
00008c40  46 fd ff ff 64 90 66 db  de 00 00 00 13 00 00 00  |F...d.f.........|
00008c50  00 00 00 00 6f 62 6a 65  63 74 30 00 98 92 00 00  |....object0.....|
00008c60  46 fd ff ff cd 9d 66 db  f7 00 00 00 13 00 00 00  |F.....f.........|
00008c70  00 00 00 00 6f 62 6a 65  63 74 31 00 90 93 00 00  |....object1.....|
00008c80  46 fd ff ff cf 41 67 db  93 01 00 00 13 00 00 00  |F....Ag.........|
00008c90  00 00 00 00 6f 62 6a 65  63 74 31 32 00 00 00 00  |....object12....|
00008ca0  24 95 00 00 46 fd ff ff  fb a1 b9 22 a6 00 00 00  |$...F......"....|
00008cb0  13 00 00 00 00 00 00 00  6f 62 6a 65 63 74 31 33  |........object13|
00008cc0  00 00 00 00 cc 95 00 00  46 fd ff ff 68 ed 66 db  |........F...h.f.|
00008cd0  7f 01 00 00 13 00 00 00  00 00 00 00 6f 62 6a 65  |............obje|
00008ce0  63 74 32 00 4c 97 00 00  46 fd ff ff e7 a8 b9 22  |ct2.L...F......"|
00008cf0  70 00 00 00 13 00 00 00  00 00 00 00 6f 62 6a 65  |p...........obje|
00008d00  63 74 35 00 bc 97 00 00  45 fd ff ff f0 96 e2 ff  |ct5.....E.......|
00008d10  9e 00 00 00 13 00 00 00  00 00 00 00 6f 62 6a 65  |............obje|
00008d20  63 74 36 00 5c 98 00 00  46 fd ff ff 1a fe 66 db  |ct6.\...F.....f.|
00008d30  85 00 00 00 13 00 00 00  00 00 00 00 6f 62 6a 65  |............obje|
00008d40  63 74 37 00 e4 98 00 00  46 fd ff ff cd 1d 67 db  |ct7.....F.....g.|
00008d50  08 01 00 00 13 00 00 00  00 00 00 00 6f 62 6a 65  |............obje|
00008d60  63 74 39 00 ec 99 00 00  45 fd ff ff c5 7c e2 ff  |ct9.....E....|..|
00008d70  34 01 00 00 13 00 00 00  00 00 00 00 70 61 74 68  |4...........path|
00008d80  73 74 79 6c 65 00 00 00  20 9b 00 00 46 fd ff ff  |style... ...F...|
00008d90  16 2c 67 db 41 02 00 00  13 00 00 00 00 00 00 00  |.,g.A...........|
00008da0  74 65 78 74 62 6f 64 79  00 00 00 00 64 9d 00 00  |textbody....d...|
00008db0  45 fd ff ff 7c 1d e2 ff  89 00 00 00 13 00 00 00  |E...|...........|
00008dc0  00 00 00 00 74 65 78 74  73 74 79 6c 65 00 00 00  |....textstyle...|
00008dd0  f0 9d 00 00 46 fd ff ff  74 e8 66 db 84 00 00 00  |....F...t.f.....|
00008de0  13 00 00 00 00 00 00 00  64 61 73 68 73 74 79 6c  |........dashstyl|
00008df0  65 00 00 00 44 41 54 41  77 00 00 00 44 72 61 77  |e...DATAw...Draw|
00008e00  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 46  |.#Parent !Root.F|
00008e10  69 6c 6c 0a 46 6c 61 74  74 65 6e 50 61 74 68 0a  |ill.FlattenPath.|
00008e20  50 72 6f 63 65 73 73 50  61 74 68 0a 53 74 72 6f  |ProcessPath.Stro|
00008e30  6b 65 0a 53 74 72 6f 6b  65 50 61 74 68 0a 54 72  |ke.StrokePath.Tr|
00008e40  61 6e 73 66 6f 72 6d 50  61 74 68 0a 0a 3c 46 69  |ansformPath..<Fi|
00008e50  6c 65 20 66 6f 72 6d 61  74 3d 3e 44 72 61 77 5f  |le format=>Draw_|
00008e60  46 69 6c 65 46 6f 72 6d  61 74 3e 00 44 41 54 41  |FileFormat>.DATA|
00008e70  4a 03 00 00 46 6f 72 6d  61 74 20 6f 66 20 44 72  |J...Format of Dr|
00008e80  61 77 20 66 69 6c 65 20  28 66 69 6c 65 74 79 70  |aw file (filetyp|
00008e90  65 20 61 66 66 29 0a 46  69 6c 65 20 68 65 61 64  |e aff).File head|
00008ea0  65 72 0a 0a 20 20 30 09  34 09 22 44 52 41 57 22  |er..  0.4."DRAW"|
00008eb0  0a 20 20 34 09 34 09 4d  61 6a 6f 72 20 76 65 72  |.  4.4.Major ver|
00008ec0  73 69 6f 6e 0a 20 20 38  09 34 09 4d 69 6e 6f 72  |sion.  8.4.Minor|
00008ed0  20 76 65 72 73 69 6f 6e  0a 20 31 32 09 31 32 09  | version. 12.12.|
00008ee0  4e 61 6d 65 20 6f 66 20  70 72 6f 64 75 63 69 6e  |Name of producin|
00008ef0  67 20 70 72 6f 67 2e 20  28 50 61 64 64 65 64 20  |g prog. (Padded |
00008f00  77 69 74 68 20 73 70 61  63 65 29 0a 20 32 34 09  |with space). 24.|
00008f10  34 09 78 20 6c 6f 77 0a  20 32 38 09 34 09 79 20  |4.x low. 28.4.y |
00008f20  6c 6f 77 20 20 20 42 6f  75 6e 64 69 6e 67 20 62  |low   Bounding b|
00008f30  6f 78 0a 20 33 32 09 34  09 78 20 68 69 67 68 0a  |ox. 32.4.x high.|
00008f40  20 33 36 09 34 09 79 20  68 69 67 68 0a 0a 54 68  | 36.4.y high..Th|
00008f50  69 73 20 69 73 20 66 6f  6c 6c 6f 77 65 64 20 62  |is is followed b|
00008f60  79 20 30 20 6f 72 20 6d  6f 72 65 20 6f 62 6a 65  |y 0 or more obje|
00008f70  63 74 73 20 3a 0a 0a 23  74 61 62 0a 20 20 30 09  |cts :..#tab.  0.|
00008f80  34 09 4f 62 6a 65 63 74  20 74 79 70 65 0a 09 20  |4.Object type.. |
00008f90  09 20 20 30 09 3c 46 6f  6e 74 20 54 61 62 6c 65  |.  0.<Font Table|
00008fa0  3d 3e 64 72 61 77 5f 6f  62 6a 65 63 74 30 3e 0a  |=>draw_object0>.|
00008fb0  09 20 09 20 20 31 09 3c  54 65 78 74 20 6f 62 6a  |. .  1.<Text obj|
00008fc0  65 63 74 3d 3e 64 72 61  77 5f 6f 62 6a 65 63 74  |ect=>draw_object|
00008fd0  31 3e 0a 09 20 09 20 20  32 09 3c 50 61 74 68 20  |1>.. .  2.<Path |
00008fe0  6f 62 6a 65 63 74 3d 3e  64 72 61 77 5f 6f 62 6a  |object=>draw_obj|
00008ff0  65 63 74 32 3e 0a 09 20  09 20 20 35 09 3c 53 70  |ect2>.. .  5.<Sp|
00009000  72 69 74 65 20 6f 62 6a  65 63 74 3d 3e 64 72 61  |rite object=>dra|
00009010  77 5f 6f 62 6a 65 63 74  35 3e 0a 09 20 09 20 20  |w_object5>.. .  |
00009020  36 09 3c 47 72 6f 75 70  20 6f 62 6a 65 63 74 3d  |6.<Group object=|
00009030  3e 64 72 61 77 5f 6f 62  6a 65 63 74 36 3e 0a 09  |>draw_object6>..|
00009040  20 09 20 20 37 09 3c 54  61 67 67 65 64 20 6f 62  | .  7.<Tagged ob|
00009050  6a 65 63 74 3d 3e 64 72  61 77 5f 6f 62 6a 65 63  |ject=>draw_objec|
00009060  74 37 3e 0a 09 20 09 20  20 39 09 3c 54 65 78 74  |t7>.. .  9.<Text|
00009070  20 61 72 65 61 20 6f 62  6a 65 63 74 3d 3e 64 72  | area object=>dr|
00009080  61 77 5f 6f 62 6a 65 63  74 39 3e 0a 09 20 09 20  |aw_object9>.. . |
00009090  20 31 30 09 54 65 78 74  20 63 6f 6c 75 6d 6e 20  | 10.Text column |
000090a0  6f 62 6a 65 63 74 3d 3e  64 72 61 77 5f 6f 62 6a  |object=>draw_obj|
000090b0  65 63 74 31 30 0a 09 20  09 20 20 31 31 09 4f 70  |ect10.. .  11.Op|
000090c0  74 69 6f 6e 73 20 6f 62  6a 65 63 74 3d 3e 64 72  |tions object=>dr|
000090d0  61 77 5f 6f 62 6a 65 63  74 31 31 0a 09 20 09 20  |aw_object11.. . |
000090e0  20 31 32 09 3c 54 72 61  6e 73 66 6f 72 6d 65 64  | 12.<Transformed|
000090f0  20 74 65 78 74 20 6f 62  6a 65 63 74 3d 3e 64 72  | text object=>dr|
00009100  61 77 5f 6f 62 6a 65 63  74 31 32 3e 0a 09 20 09  |aw_object12>.. .|
00009110  20 20 31 33 09 3c 54 72  61 6e 73 66 6f 72 6d 65  |  13.<Transforme|
00009120  64 20 73 70 72 69 74 65  20 6f 62 6a 65 63 74 3d  |d sprite object=|
00009130  3e 64 72 61 77 5f 6f 62  6a 65 63 74 31 33 3e 0a  |>draw_object13>.|
00009140  20 20 34 09 34 09 53 69  7a 65 20 28 77 6f 72 64  |  4.4.Size (word|
00009150  2d 61 6c 69 67 6e 65 64  29 20 69 6e 63 6c 20 68  |-aligned) incl h|
00009160  65 61 64 65 72 0a 20 20  38 09 31 36 09 42 6f 75  |eader.  8.16.Bou|
00009170  6e 64 69 6e 67 20 62 6f  78 20 28 4e 6f 74 20 61  |nding box (Not a|
00009180  6c 6c 20 74 79 70 65 73  20 68 61 76 65 20 74 68  |ll types have th|
00009190  69 73 29 0a 20 20 6e 09  6e 09 4f 62 6a 65 63 74  |is).  n.n.Object|
000091a0  20 73 70 65 63 69 66 69  63 20 64 61 74 61 2c 20  | specific data, |
000091b0  69 66 20 61 6e 79 00 00  44 41 54 41 de 00 00 00  |if any..DATA....|
000091c0  46 6f 6e 74 20 74 61 62  6c 65 20 6f 62 6a 65 63  |Font table objec|
000091d0  74 20 28 30 29 0a 54 68  69 73 20 6f 62 6a 65 63  |t (0).This objec|
000091e0  74 20 68 61 73 20 6e 6f  20 62 6f 75 6e 64 69 6e  |t has no boundin|
000091f0  67 20 62 6f 78 2e 20 49  74 20 73 68 6f 75 6c 64  |g box. It should|
00009200  20 6f 6e 6c 79 20 61 70  70 65 61 72 20 6f 6e 63  | only appear onc|
00009210  65 2c 20 61 6e 64 20 62  65 66 6f 72 65 20 61 6e  |e, and before an|
00009220  79 20 74 65 78 74 20 6f  62 6a 65 63 74 73 2e 0a  |y text objects..|
00009230  0a 49 74 20 63 6f 6e 73  69 73 74 73 20 6f 66 20  |.It consists of |
00009240  61 20 73 65 72 69 65 73  20 6f 66 20 3a 0a 0a 31  |a series of :..1|
00009250  20 62 79 74 65 20 66 6f  6e 74 20 6e 75 6d 62 65  | byte font numbe|
00009260  72 0a 7a 65 72 6f 20 74  65 72 6d 69 6e 61 74 65  |r.zero terminate|
00009270  64 20 66 6f 6e 74 6e 61  6d 65 0a 30 20 74 6f 20  |d fontname.0 to |
00009280  33 20 7a 65 72 6f 73 20  74 6f 20 70 61 64 20 74  |3 zeros to pad t|
00009290  6f 20 77 6f 72 64 00 00  44 41 54 41 f7 00 00 00  |o word..DATA....|
000092a0  54 65 78 74 20 6f 62 6a  65 63 74 20 28 31 29 0a  |Text object (1).|
000092b0  4f 66 66 73 65 74 09 4c  65 6e 09 43 6f 6e 74 65  |Offset.Len.Conte|
000092c0  6e 74 73 0a 23 4c 69 6e  65 0a 32 34 09 34 09 54  |nts.#Line.24.4.T|
000092d0  65 78 74 20 63 6f 6c 6f  75 72 0a 32 38 09 34 09  |ext colour.28.4.|
000092e0  42 61 63 6b 67 72 6f 75  6e 64 20 68 69 6e 74 0a  |Background hint.|
000092f0  33 32 09 34 09 3c 54 65  78 74 20 73 74 79 6c 65  |32.4.<Text style|
00009300  3d 3e 64 72 61 77 5f 74  65 78 74 73 74 79 6c 65  |=>draw_textstyle|
00009310  3e 0a 33 36 09 34 09 78  2d 73 69 7a 65 20 28 69  |>.36.4.x-size (i|
00009320  6e 20 31 2f 36 34 30 27  73 29 0a 34 30 09 34 09  |n 1/640's).40.4.|
00009330  79 2d 73 69 7a 65 0a 34  34 09 34 09 78 20 63 6f  |y-size.44.4.x co|
00009340  6f 72 64 20 6f 66 20 73  74 61 72 74 20 6f 66 20  |ord of start of |
00009350  62 61 73 65 6c 69 6e 65  0a 34 38 09 34 09 79 20  |baseline.48.4.y |
00009360  63 6f 6f 72 64 20 6f 66  20 69 74 0a 35 32 09 6e  |coord of it.52.n|
00009370  09 7a 65 72 6f 20 74 65  72 6d 69 6e 61 74 65 64  |.zero terminated|
00009380  20 73 74 72 69 6e 67 0a  70 61 64 64 69 6e 67 00  | string.padding.|
00009390  44 41 54 41 93 01 00 00  54 72 61 6e 73 66 6f 72  |DATA....Transfor|
000093a0  6d 65 64 20 74 65 78 74  20 6f 62 6a 65 63 74 20  |med text object |
000093b0  28 31 32 29 0a 4f 66 66  73 65 74 09 4c 65 6e 09  |(12).Offset.Len.|
000093c0  43 6f 6e 74 65 6e 74 73  0a 23 4c 69 6e 65 0a 32  |Contents.#Line.2|
000093d0  34 09 32 34 09 54 72 61  6e 73 66 6f 72 6d 61 74  |4.24.Transformat|
000093e0  69 6f 6e 20 6d 61 74 72  69 78 0a 34 38 09 34 09  |ion matrix.48.4.|
000093f0  46 6f 6e 74 20 66 6c 61  67 73 20 3a 0a 09 20 09  |Font flags :.. .|
00009400  20 20 62 69 74 20 30 20  73 65 74 20 3a 20 6b 65  |  bit 0 set : ke|
00009410  72 6e 20 74 65 78 74 0a  09 20 09 20 20 62 69 74  |rn text.. .  bit|
00009420  20 31 20 73 65 74 20 3a  20 72 69 67 68 74 20 74  | 1 set : right t|
00009430  6f 20 6c 65 66 74 0a 0a  52 65 73 74 20 61 72 65  |o left..Rest are|
00009440  20 61 73 20 66 6f 72 20  6e 6f 72 6d 61 6c 20 74  | as for normal t|
00009450  65 78 74 20 6f 62 6a 65  63 74 20 3a 0a 0a 35 32  |ext object :..52|
00009460  09 34 09 54 65 78 74 20  63 6f 6c 6f 75 72 0a 35  |.4.Text colour.5|
00009470  36 09 34 09 42 61 63 6b  67 72 6f 75 6e 64 20 68  |6.4.Background h|
00009480  69 6e 74 0a 36 30 09 34  09 3c 54 65 78 74 20 73  |int.60.4.<Text s|
00009490  74 79 6c 65 3d 3e 64 72  61 77 5f 74 65 78 74 73  |tyle=>draw_texts|
000094a0  74 79 6c 65 3e 0a 36 34  09 34 09 78 2d 73 69 7a  |tyle>.64.4.x-siz|
000094b0  65 20 28 69 6e 20 31 2f  36 34 30 27 73 29 0a 36  |e (in 1/640's).6|
000094c0  38 09 34 09 79 2d 73 69  7a 65 0a 37 32 09 34 09  |8.4.y-size.72.4.|
000094d0  78 20 63 6f 6f 72 64 20  6f 66 20 73 74 61 72 74  |x coord of start|
000094e0  20 6f 66 20 62 61 73 65  6c 69 6e 65 0a 37 36 09  | of baseline.76.|
000094f0  34 09 79 20 63 6f 6f 72  64 20 6f 66 20 69 74 0a  |4.y coord of it.|
00009500  38 30 09 6e 09 7a 65 72  6f 20 74 65 72 6d 69 6e  |80.n.zero termin|
00009510  61 74 65 64 20 73 74 72  69 6e 67 0a 70 61 64 64  |ated string.padd|
00009520  69 6e 67 00 44 41 54 41  a6 00 00 00 54 72 61 6e  |ing.DATA....Tran|
00009530  73 66 6f 72 6d 65 64 20  73 70 72 69 74 65 20 6f  |sformed sprite o|
00009540  62 6a 65 63 74 20 28 31  33 29 0a 54 68 69 73 20  |bject (13).This |
00009550  69 73 20 66 6f 6c 6c 6f  77 65 64 20 62 79 20 61  |is followed by a|
00009560  20 32 34 20 62 79 74 65  20 74 72 61 6e 73 66 6f  | 24 byte transfo|
00009570  72 6d 61 74 69 6f 6e 20  6d 61 74 72 69 78 2c 20  |rmation matrix, |
00009580  61 6e 64 20 74 68 65 6e  20 61 20 3c 73 70 72 69  |and then a <spri|
00009590  74 65 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |te=>os_spriteop_|
000095a0  70 74 72 3e 2e 20 54 68  69 73 20 69 73 20 73 63  |ptr>. This is sc|
000095b0  61 6c 65 64 20 74 6f 20  66 69 6c 6c 20 62 6f 75  |aled to fill bou|
000095c0  6e 64 69 6e 67 20 62 6f  78 2e 00 00 44 41 54 41  |nding box...DATA|
000095d0  7f 01 00 00 50 61 74 68  20 6f 62 6a 65 63 74 20  |....Path object |
000095e0  28 32 29 0a 4f 66 66 73  65 74 0a 32 34 09 34 09  |(2).Offset.24.4.|
000095f0  46 69 6c 6c 20 63 6f 6c  6f 75 72 20 28 2d 31 20  |Fill colour (-1 |
00009600  66 6f 72 20 6e 6f 6e 65  29 0a 32 38 09 34 09 4f  |for none).28.4.O|
00009610  75 74 6c 69 6e 65 20 63  6f 6c 20 28 2d 31 20 66  |utline col (-1 f|
00009620  6f 72 20 6e 6f 6e 65 29  0a 33 32 09 34 09 4f 75  |or none).32.4.Ou|
00009630  74 6c 69 6e 65 20 77 69  64 74 68 0a 33 36 09 34  |tline width.36.4|
00009640  09 3c 70 61 74 68 20 73  74 79 6c 65 3d 3e 64 72  |.<path style=>dr|
00009650  61 77 5f 70 61 74 68 73  74 79 6c 65 3e 0a 34 30  |aw_pathstyle>.40|
00009660  09 6e 09 3c 4f 70 74 69  6f 6e 61 6c 20 64 61 73  |.n.<Optional das|
00009670  68 20 70 61 74 74 65 72  6e 3d 3e 64 72 61 77 5f  |h pattern=>draw_|
00009680  64 61 73 68 73 74 79 6c  65 3e 0a 09 6e 09 50 61  |dashstyle>..n.Pa|
00009690  74 68 20 63 6f 6d 70 6f  6e 65 6e 74 73 20 3a 0a  |th components :.|
000096a0  0a 2b 30 09 34 09 54 61  67 20 69 64 09 4d 65 61  |.+0.4.Tag id.Mea|
000096b0  6e 69 6e 67 0a 09 20 09  30 09 45 6e 64 20 6f 66  |ning.. .0.End of|
000096c0  20 70 61 74 68 0a 09 20  09 32 09 4d 6f 76 65 2c  | path.. .2.Move,|
000096d0  20 6f 6e 65 20 70 6f 69  6e 74 0a 09 20 09 35 09  | one point.. .5.|
000096e0  43 6c 6f 73 65 20 73 75  62 70 61 74 68 0a 09 20  |Close subpath.. |
000096f0  09 38 09 4c 69 6e 65 2c  20 6f 6e 65 20 70 6f 69  |.8.Line, one poi|
00009700  6e 74 0a 09 20 09 36 09  42 65 7a 69 65 72 2c 20  |nt.. .6.Bezier, |
00009710  74 68 72 65 65 20 70 6f  69 6e 74 65 72 0a 0a 2b  |three pointer..+|
00009720  34 09 6e 09 30 2d 33 09  73 65 74 73 20 6f 66 20  |4.n.0-3.sets of |
00009730  28 78 2c 79 29 20 64 65  70 65 6e 64 61 6e 74 20  |(x,y) dependant |
00009740  6f 6e 20 74 61 67 0a 2e  2e 2e 0a 00 44 41 54 41  |on tag......DATA|
00009750  70 00 00 00 53 70 72 69  74 65 20 6f 62 6a 65 63  |p...Sprite objec|
00009760  74 20 28 35 29 0a 54 68  69 73 20 69 73 20 66 6f  |t (5).This is fo|
00009770  6c 6c 6f 77 65 64 20 62  79 20 61 20 3c 73 70 72  |llowed by a <spr|
00009780  69 74 65 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |ite=>os_spriteop|
00009790  5f 70 74 72 3e 2c 20 77  68 69 63 68 20 69 73 20  |_ptr>, which is |
000097a0  73 63 61 6c 65 64 20 74  6f 20 66 69 6c 6c 20 62  |scaled to fill b|
000097b0  6f 75 6e 64 69 6e 67 20  62 6f 78 2e 44 41 54 41  |ounding box.DATA|
000097c0  9e 00 00 00 47 72 6f 75  70 20 6f 62 6a 65 63 74  |....Group object|
000097d0  0a 54 68 69 73 20 63 6f  6e 73 69 73 74 73 20 6f  |.This consists o|
000097e0  66 20 61 20 31 32 20 62  79 74 65 20 6e 61 6d 65  |f a 12 byte name|
000097f0  20 28 70 61 64 64 65 64  20 77 69 74 68 20 73 70  | (padded with sp|
00009800  61 63 65 73 29 2c 20 61  6e 64 20 74 68 65 6e 20  |aces), and then |
00009810  61 20 73 65 71 75 65 6e  63 65 20 6f 66 20 6f 62  |a sequence of ob|
00009820  6a 65 63 74 73 2e 20 54  68 65 73 65 20 77 69 6c  |jects. These wil|
00009830  6c 20 61 6c 6c 20 6c 69  65 20 77 69 74 68 69 6e  |l all lie within|
00009840  20 74 68 65 20 62 6f 75  6e 64 69 6e 67 20 62 6f  | the bounding bo|
00009850  78 20 6f 66 20 74 68 69  73 2e 00 00 44 41 54 41  |x of this...DATA|
00009860  85 00 00 00 54 61 67 67  65 64 20 6f 62 6a 65 63  |....Tagged objec|
00009870  74 20 28 37 29 0a 54 68  69 73 20 63 6f 6e 73 69  |t (7).This consi|
00009880  73 74 73 20 6f 66 0a 8f  09 31 20 77 6f 72 64 20  |sts of...1 word |
00009890  6f 66 20 74 61 67 20 69  64 20 28 61 6c 6c 6f 63  |of tag id (alloc|
000098a0  61 74 65 64 20 66 72 6f  6d 20 61 63 6f 72 6e 29  |ated from acorn)|
000098b0  0a 8f 09 61 6e 20 6f 62  6a 65 63 74 0a 8f 09 6f  |...an object...o|
000098c0  70 74 69 6f 6e 61 6c 20  65 78 74 72 61 20 64 61  |ptional extra da|
000098d0  74 61 20 28 77 6f 72 64  20 61 6c 69 67 6e 65 64  |ta (word aligned|
000098e0  29 00 00 00 44 41 54 41  08 01 00 00 54 65 78 74  |)...DATA....Text|
000098f0  20 61 72 65 61 20 6f 62  6a 65 63 74 20 28 39 29  | area object (9)|
00009900  0a 46 69 72 73 74 2c 20  31 20 6f 72 20 6d 6f 72  |.First, 1 or mor|
00009910  65 20 74 65 78 74 20 63  6f 6c 75 6d 6e 73 20 61  |e text columns a|
00009920  6e 64 20 74 68 65 6e 20  3a 0a 0a 4f 66 66 73 65  |nd then :..Offse|
00009930  74 09 4c 65 6e 09 43 6f  6e 74 65 6e 74 73 0a 30  |t.Len.Contents.0|
00009940  09 34 09 7a 65 72 6f 20  74 6f 20 6d 61 72 6b 20  |.4.zero to mark |
00009950  65 6e 64 20 6f 66 20 63  6f 6c 75 6d 6e 73 0a 34  |end of columns.4|
00009960  09 34 09 72 65 73 65 72  76 65 64 0a 38 09 34 09  |.4.reserved.8.4.|
00009970  72 65 73 65 72 76 65 64  0a 31 32 09 34 09 69 6e  |reserved.12.4.in|
00009980  69 74 69 61 6c 20 66 6f  72 65 67 72 6f 75 6e 64  |itial foreground|
00009990  20 63 6f 6c 0a 31 36 09  34 09 69 6e 69 74 69 61  | col.16.4.initia|
000099a0  6c 20 62 61 63 6b 67 72  6f 75 6e 64 20 68 69 6e  |l background hin|
000099b0  74 0a 32 30 09 6e 09 7a  65 72 6f 20 74 65 72 6d  |t.20.n.zero term|
000099c0  69 6e 61 74 65 64 20 3c  62 6f 64 79 20 6f 66 20  |inated <body of |
000099d0  74 65 78 74 3d 3e 64 72  61 77 5f 74 65 78 74 62  |text=>draw_textb|
000099e0  6f 64 79 3e 0a 70 61 64  64 69 6e 67 44 41 54 41  |ody>.paddingDATA|
000099f0  34 01 00 00 50 61 74 68  20 73 74 79 6c 65 0a 42  |4...Path style.B|
00009a00  69 74 73 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |its.Meaning.#Lin|
00009a10  65 0a 30 2d 31 09 4a 6f  69 6e 20 73 74 79 6c 65  |e.0-1.Join style|
00009a20  20 3a 0a 09 20 20 30 20  20 6d 69 74 72 65 64 0a  | :..  0  mitred.|
00009a30  09 20 20 31 20 20 72 6f  75 6e 64 0a 09 20 20 32  |.  1  round..  2|
00009a40  20 20 62 65 76 65 6c 6c  65 64 0a 32 2d 33 09 45  |  bevelled.2-3.E|
00009a50  6e 64 20 63 61 70 20 3a  0a 09 20 20 30 20 20 62  |nd cap :..  0  b|
00009a60  75 74 74 0a 09 20 20 31  20 20 72 6f 75 6e 64 0a  |utt..  1  round.|
00009a70  09 20 20 32 20 20 73 71  61 72 65 0a 09 20 20 33  |.  2  sqare..  3|
00009a80  20 20 74 72 69 61 6e 67  6c 65 0a 34 2d 35 09 53  |  triangle.4-5.S|
00009a90  74 61 72 74 20 63 61 70  0a 36 09 57 69 6e 64 69  |tart cap.6.Windi|
00009aa0  6e 67 20 72 75 6c 65 20  3a 0a 09 20 20 30 20 20  |ng rule :..  0  |
00009ab0  6e 6f 6e 2d 7a 65 72 6f  0a 09 20 20 31 20 20 65  |non-zero..  1  e|
00009ac0  76 65 6e 2d 6f 64 64 0a  37 09 64 61 73 68 20 70  |ven-odd.7.dash p|
00009ad0  61 74 74 65 72 6e 20 3a  0a 09 20 20 30 20 20 6e  |attern :..  0  n|
00009ae0  6f 6e 65 0a 09 20 20 31  20 20 79 65 73 0a 31 36  |one..  1  yes.16|
00009af0  2d 32 33 09 74 72 69 61  6e 67 6c 65 20 63 61 70  |-23.triangle cap|
00009b00  20 77 69 64 74 68 0a 32  34 2d 33 31 09 74 72 69  | width.24-31.tri|
00009b10  61 6e 67 6c 65 20 63 61  70 20 6c 65 6e 67 74 68  |angle cap length|
00009b20  44 41 54 41 41 02 00 00  45 73 63 61 70 65 20 73  |DATAA...Escape s|
00009b30  65 71 75 65 6e 63 65 73  20 69 6e 20 44 72 61 77  |equences in Draw|
00009b40  20 74 65 78 74 20 61 72  65 61 0a 53 65 71 75 65  | text area.Seque|
00009b50  6e 63 65 09 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |nce..Meaning.#Li|
00009b60  6e 65 0a 5c 5c 21 5c 3c  76 65 72 73 69 6f 6e 3e  |ne.\\!\<version>|
00009b70  2f 09 09 56 65 72 73 69  6f 6e 20 6d 75 73 74 20  |/..Version must |
00009b80  62 65 20 31 0a 5c 5c 41  5c 3c 63 6f 64 65 3e 09  |be 1.\\A\<code>.|
00009b90  09 41 6c 69 67 6e 6d 65  6e 74 3a 20 4c 2c 20 52  |.Alignment: L, R|
00009ba0  2c 20 43 2c 20 44 0a 5c  5c 42 5c 3c 52 3e 20 5c  |, C, D.\\B\<R> \|
00009bb0  3c 47 3e 20 5c 3c 42 3e  2f 09 53 65 74 20 62 61  |<G> \<B>/.Set ba|
00009bc0  63 6b 67 72 6f 75 6e 64  20 68 69 6e 74 0a 5c 5c  |ckground hint.\\|
00009bd0  43 5c 3c 52 3e 20 5c 3c  47 3e 20 5c 3c 42 3e 2f  |C\<R> \<G> \<B>/|
00009be0  09 53 65 74 20 66 6f 72  65 67 72 6f 75 6e 64 20  |.Set foreground |
00009bf0  63 6f 6c 6f 75 72 0a 5c  5c 44 5c 3c 6e 75 6d 62  |colour.\\D\<numb|
00009c00  65 72 3e 2f 09 09 4e 75  6d 62 65 72 20 6f 66 20  |er>/..Number of |
00009c10  63 6f 6c 75 6d 6e 73 0a  5c 5c 46 5c 3c 64 69 67  |columns.\\F\<dig|
00009c20  69 74 3e 5c 3c 6e 61 6d  65 3e 20 5c 3c 73 69 7a  |it>\<name> \<siz|
00009c30  65 3e 20 5b 5c 3c 77 69  64 74 68 3e 5d 2f 09 44  |e> [\<width>]/.D|
00009c40  65 63 6c 61 72 65 20 61  20 66 6f 6e 74 0a 5c 5c  |eclare a font.\\|
00009c50  5c 3c 64 69 67 69 74 3e  09 09 53 65 6c 65 63 74  |\<digit>..Select|
00009c60  20 61 20 66 6f 6e 74 0a  5c 5c 4c 5c 3c 76 61 6c  | a font.\\L\<val|
00009c70  75 65 3e 2f 09 09 4c 65  61 64 69 6e 67 0a 5c 5c  |ue>/..Leading.\\|
00009c80  4d 5c 3c 6c 65 66 74 3e  20 5c 3c 72 69 67 68 74  |M\<left> \<right|
00009c90  3e 2f 09 53 65 74 73 20  6d 61 72 67 69 6e 73 0a  |>/.Sets margins.|
00009ca0  5c 5c 50 5c 3c 76 61 6c  75 65 3e 2f 09 09 50 61  |\\P\<value>/..Pa|
00009cb0  72 61 67 72 61 70 68 20  6c 65 61 64 69 6e 67 0a  |ragraph leading.|
00009cc0  5c 5c 55 5c 3c 70 6f 73  3e 20 5c 3c 74 68 69 63  |\\U\<pos> \<thic|
00009cd0  6b 6e 65 73 73 3e 2f 09  54 75 72 6e 20 6f 6e 20  |kness>/.Turn on |
00009ce0  75 6e 64 65 72 6c 69 6e  65 0a 5c 5c 56 5b 2d 5d  |underline.\\V[-]|
00009cf0  5c 3c 64 69 67 69 74 3e  09 09 56 65 72 74 69 63  |\<digit>..Vertic|
00009d00  61 6c 20 6d 6f 76 65 0a  5c 5c 2d 09 09 09 53 6f  |al move.\\-...So|
00009d10  66 74 20 68 79 70 65 6e  0a 5c 5c 5c 3c 6e 65 77  |ft hypen.\\\<new|
00009d20  6c 69 6e 65 3e 09 09 46  6f 72 63 65 20 6c 69 6e  |line>..Force lin|
00009d30  65 20 62 72 65 61 6b 0a  5c 5c 5c 5c 09 09 09 22  |e break.\\\\..."|
00009d40  5c 5c 22 0a 5c 5c 3b 5c  3c 74 65 78 74 3e 20 5c  |\\".\\;\<text> \|
00009d50  3c 6e 65 77 6c 69 6e 65  3e 09 63 6f 6d 6d 65 6e  |<newline>.commen|
00009d60  74 00 00 00 44 41 54 41  89 00 00 00 54 65 78 74  |t...DATA....Text|
00009d70  20 73 74 79 6c 65 0a 46  69 72 73 74 20 28 6c 6f  | style.First (lo|
00009d80  77 65 73 74 29 20 62 79  74 65 20 69 73 20 66 6f  |west) byte is fo|
00009d90  6e 74 6e 75 6d 62 65 72  2c 20 61 6e 64 20 72 65  |ntnumber, and re|
00009da0  66 65 72 73 20 74 6f 20  66 6f 6e 74 20 69 6e 20  |fers to font in |
00009db0  66 6f 6e 74 20 74 61 62  6c 65 2e 0a 0a 54 68 65  |font table...The|
00009dc0  20 72 65 73 74 20 6f 66  20 77 6f 72 64 20 69 73  | rest of word is|
00009dd0  20 72 65 73 65 72 76 65  64 2c 20 61 6e 64 20 73  | reserved, and s|
00009de0  68 6f 75 6c 64 20 62 65  20 7a 65 72 6f 00 00 00  |hould be zero...|
00009df0  44 41 54 41 84 00 00 00  44 72 61 77 20 64 61 73  |DATA....Draw das|
00009e00  68 20 73 74 79 6c 65 20  62 6c 6f 63 6b 0a 4f 66  |h style block.Of|
00009e10  66 73 65 74 09 4c 65 6e  09 43 6f 6e 74 65 6e 74  |fset.Len.Content|
00009e20  73 0a 23 4c 69 6e 65 0a  30 09 34 09 4f 66 66 73  |s.#Line.0.4.Offs|
00009e30  65 74 20 74 6f 20 77 68  65 72 65 20 74 6f 20 73  |et to where to s|
00009e40  74 61 72 74 0a 34 09 34  09 4e 6f 20 6f 66 20 65  |tart.4.4.No of e|
00009e50  6c 65 6d 65 6e 74 73 0a  38 09 6e 2a 34 09 4c 65  |lements.8.n*4.Le|
00009e60  6e 67 74 68 20 6f 66 20  65 6c 65 6d 65 6e 74 0a  |ngth of element.|
00009e70  2e 2e 2e 0a 44 49 52 24  f4 03 00 00 f4 03 00 00  |....DIR$........|
00009e80  68 a2 00 00 46 fd ff ff  79 0c 0f fb d9 01 00 00  |h...F...y.......|
00009e90  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00009ea0  44 a4 00 00 46 ff ff ff  0d fc 85 c1 7d 01 00 00  |D...F.......}...|
00009eb0  13 00 00 00 00 00 00 00  43 72 65 61 74 65 52 65  |........CreateRe|
00009ec0  63 65 69 76 65 00 00 00  c4 a5 00 00 46 ff ff ff  |ceive.......F...|
00009ed0  b3 0c 88 c1 1d 01 00 00  13 00 00 00 00 00 00 00  |................|
00009ee0  45 78 61 6d 69 6e 65 52  65 63 65 69 76 65 00 00  |ExamineReceive..|
00009ef0  e4 a6 00 00 46 fd ff ff  e5 7b 89 c1 76 01 00 00  |....F....{..v...|
00009f00  13 00 00 00 00 00 00 00  73 74 61 74 75 73 65 73  |........statuses|
00009f10  00 00 00 00 5c a8 00 00  46 ff ff ff f5 d5 86 c1  |....\...F.......|
00009f20  84 01 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
00009f30  52 65 63 65 69 76 65 00  e0 a9 00 00 46 ff ff ff  |Receive.....F...|
00009f40  77 14 87 c1 fa 00 00 00  13 00 00 00 00 00 00 00  |w...............|
00009f50  41 62 61 6e 64 6f 6e 52  65 63 65 69 76 65 00 00  |AbandonReceive..|
00009f60  dc aa 00 00 46 ff ff ff  ef 5f 87 c1 8c 01 00 00  |....F...._......|
00009f70  13 00 00 00 00 00 00 00  57 61 69 74 46 6f 72 52  |........WaitForR|
00009f80  65 63 65 70 74 69 6f 6e  00 00 00 00 68 ac 00 00  |eception....h...|
00009f90  46 ff ff ff 48 b8 87 c1  bc 00 00 00 13 00 00 00  |F...H...........|
00009fa0  00 00 00 00 45 6e 75 6d  65 72 61 74 65 52 65 63  |....EnumerateRec|
00009fb0  65 69 76 65 00 00 00 00  24 ad 00 00 46 ff ff ff  |eive....$...F...|
00009fc0  f7 f2 87 c1 e0 01 00 00  13 00 00 00 00 00 00 00  |................|
00009fd0  53 74 61 72 74 54 72 61  6e 73 6d 69 74 00 00 00  |StartTransmit...|
00009fe0  04 af 00 00 46 ff ff ff  e4 2e 88 c1 d5 00 00 00  |....F...........|
00009ff0  13 00 00 00 00 00 00 00  50 6f 6c 6c 54 72 61 6e  |........PollTran|
0000a000  73 6d 69 74 00 00 00 00  dc af 00 00 46 ff ff ff  |smit........F...|
0000a010  f7 72 88 c1 8f 00 00 00  13 00 00 00 00 00 00 00  |.r..............|
0000a020  41 62 61 6e 64 6f 6e 54  72 61 6e 73 6d 69 74 00  |AbandonTransmit.|
0000a030  6c b0 00 00 46 ff ff ff  a1 b5 88 c1 aa 01 00 00  |l...F...........|
0000a040  13 00 00 00 00 00 00 00  44 6f 54 72 61 6e 73 6d  |........DoTransm|
0000a050  69 74 00 00 18 b2 00 00  46 ff ff ff ac dc 88 c1  |it......F.......|
0000a060  e1 00 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
0000a070  4c 6f 63 61 6c 53 74 61  74 69 6f 6e 41 6e 64 4e  |LocalStationAndN|
0000a080  65 74 00 00 fc b2 00 00  46 ff ff ff 13 30 89 c1  |et......F....0..|
0000a090  8e 01 00 00 13 00 00 00  00 00 00 00 43 6f 6e 76  |............Conv|
0000a0a0  65 72 74 53 74 61 74 75  73 54 6f 53 74 72 69 6e  |ertStatusToStrin|
0000a0b0  67 00 00 00 8c b4 00 00  46 ff ff ff e6 6a 89 c1  |g.......F....j..|
0000a0c0  c6 01 00 00 13 00 00 00  00 00 00 00 43 6f 6e 76  |............Conv|
0000a0d0  65 72 74 53 74 61 74 75  73 54 6f 45 72 72 6f 72  |ertStatusToError|
0000a0e0  00 00 00 00 54 b6 00 00  46 fd ff ff 12 db 89 c1  |....T...F.......|
0000a0f0  17 01 00 00 13 00 00 00  00 00 00 00 70 72 6f 74  |............prot|
0000a100  65 63 74 73 00 00 00 00  6c b7 00 00 46 ff ff ff  |ects....l...F...|
0000a110  e4 f4 89 c1 f2 00 00 00  13 00 00 00 00 00 00 00  |................|
0000a120  52 65 61 64 50 72 6f 74  65 63 74 69 6f 6e 00 00  |ReadProtection..|
0000a130  60 b8 00 00 46 ff ff ff  eb 1f 8a c1 ff 00 00 00  |`...F...........|
0000a140  13 00 00 00 00 00 00 00  53 65 74 50 72 6f 74 65  |........SetProte|
0000a150  63 74 69 6f 6e 00 00 00  60 b9 00 00 46 ff ff ff  |ction...`...F...|
0000a160  24 22 e0 c1 b9 00 00 00  13 00 00 00 00 00 00 00  |$"..............|
0000a170  50 72 69 6e 74 42 61 6e  6e 65 72 00 1c ba 00 00  |PrintBanner.....|
0000a180  46 ff ff ff d3 8a e1 c1  6e 01 00 00 13 00 00 00  |F.......n.......|
0000a190  00 00 00 00 52 65 61 64  54 72 61 6e 73 70 6f 72  |....ReadTranspor|
0000a1a0  74 54 79 70 65 00 00 00  8c bb 00 00 46 ff ff ff  |tType.......F...|
0000a1b0  0e a3 e1 c1 8d 00 00 00  13 00 00 00 00 00 00 00  |................|
0000a1c0  52 65 6c 65 61 73 65 50  6f 72 74 00 1c bc 00 00  |ReleasePort.....|
0000a1d0  46 ff ff ff 8e d4 e1 c1  f9 00 00 00 13 00 00 00  |F...............|
0000a1e0  00 00 00 00 41 6c 6c 6f  63 61 74 65 50 6f 72 74  |....AllocatePort|
0000a1f0  00 00 00 00 18 bd 00 00  46 ff ff ff 43 c8 e2 c1  |........F...C...|
0000a200  96 00 00 00 13 00 00 00  00 00 00 00 44 65 41 6c  |............DeAl|
0000a210  6c 6f 63 61 74 65 50 6f  72 74 00 00 b0 bd 00 00  |locatePort......|
0000a220  46 ff ff ff c7 ea e2 c1  be 00 00 00 13 00 00 00  |F...............|
0000a230  00 00 00 00 43 6c 61 69  6d 50 6f 72 74 00 00 00  |....ClaimPort...|
0000a240  70 be 00 00 46 ff ff ff  8e 48 e3 c1 07 02 00 00  |p...F....H......|
0000a250  13 00 00 00 00 00 00 00  53 74 61 72 74 49 6d 6d  |........StartImm|
0000a260  65 64 69 61 74 65 00 00  44 41 54 41 d9 01 00 00  |ediate..DATA....|
0000a270  45 63 6f 6e 65 74 0a 23  50 61 72 65 6e 74 20 21  |Econet.#Parent !|
0000a280  52 6f 6f 74 0a 23 50 72  65 66 69 78 20 45 63 6f  |Root.#Prefix Eco|
0000a290  6e 65 74 5f 0a 23 54 61  62 6c 65 20 31 32 20 32  |net_.#Table 12 2|
0000a2a0  32 0a 3c 41 62 61 6e 64  6f 6e 52 65 63 65 69 76  |2.<AbandonReceiv|
0000a2b0  65 3e 0a 3c 41 62 61 6e  64 6f 6e 54 72 61 6e 73  |e>.<AbandonTrans|
0000a2c0  6d 69 74 3e 0a 3c 41 6c  6c 6f 63 61 74 65 50 6f  |mit>.<AllocatePo|
0000a2d0  72 74 3e 0a 43 6c 61 69  6d 50 6f 72 74 0a 3c 43  |rt>.ClaimPort.<C|
0000a2e0  6f 6e 76 65 72 74 53 74  61 74 75 73 54 6f 45 72  |onvertStatusToEr|
0000a2f0  72 6f 72 3e 0a 3c 43 6f  6e 76 65 72 74 53 74 61  |ror>.<ConvertSta|
0000a300  74 75 73 54 6f 53 74 72  69 6e 67 3e 0a 3c 43 72  |tusToString>.<Cr|
0000a310  65 61 74 65 52 65 63 65  69 76 65 3e 0a 3c 44 65  |eateReceive>.<De|
0000a320  41 6c 6c 6f 63 61 74 65  50 6f 72 74 3e 0a 44 6f  |AllocatePort>.Do|
0000a330  49 6d 6d 65 64 69 61 74  65 0a 3c 44 6f 54 72 61  |Immediate.<DoTra|
0000a340  6e 73 6d 69 74 3e 0a 3c  45 6e 75 6d 65 72 61 74  |nsmit>.<Enumerat|
0000a350  65 52 65 63 65 69 76 65  3e 0a 3c 45 78 61 6d 69  |eReceive>.<Exami|
0000a360  6e 65 52 65 63 65 69 76  65 3e 0a 3c 50 6f 6c 6c  |neReceive>.<Poll|
0000a370  54 72 61 6e 73 6d 69 74  3e 0a 3c 50 72 69 6e 74  |Transmit>.<Print|
0000a380  42 61 6e 6e 65 72 3e 0a  3c 52 65 61 64 4c 6f 63  |Banner>.<ReadLoc|
0000a390  61 6c 53 74 61 74 69 6f  6e 41 6e 64 4e 65 74 3e  |alStationAndNet>|
0000a3a0  0a 3c 52 65 61 64 50 72  6f 74 65 63 74 69 6f 6e  |.<ReadProtection|
0000a3b0  3e 0a 3c 52 65 61 64 52  65 63 65 69 76 65 3e 0a  |>.<ReadReceive>.|
0000a3c0  52 65 61 64 53 74 61 74  69 6f 6e 4e 75 6d 62 65  |ReadStationNumbe|
0000a3d0  72 0a 3c 52 65 61 64 54  72 61 6e 73 70 6f 72 74  |r.<ReadTransport|
0000a3e0  54 79 70 65 3e 0a 3c 52  65 6c 65 61 73 65 50 6f  |Type>.<ReleasePo|
0000a3f0  72 74 3e 0a 3c 53 65 74  50 72 6f 74 65 63 74 69  |rt>.<SetProtecti|
0000a400  6f 6e 3e 0a 3c 53 74 61  72 74 49 6d 6d 65 64 69  |on>.<StartImmedi|
0000a410  61 74 65 3e 0a 3c 53 74  61 72 74 54 72 61 6e 73  |ate>.<StartTrans|
0000a420  6d 69 74 3e 0a 3c 57 61  69 74 46 6f 72 52 65 63  |mit>.<WaitForRec|
0000a430  65 70 74 69 6f 6e 3e 0a  23 45 6e 64 54 61 62 6c  |eption>.#EndTabl|
0000a440  65 00 00 00 44 41 54 41  7d 01 00 00 45 63 6f 6e  |e...DATA}...Econ|
0000a450  65 74 5f 43 72 65 61 74  65 52 65 63 65 69 76 65  |et_CreateReceive|
0000a460  20 20 28 26 34 30 30 30  30 29 0a 23 50 61 72 65  |  (&40000).#Pare|
0000a470  6e 74 20 45 63 6f 6e 65  74 5f 0a 3d 3e 09 52 30  |nt Econet_.=>.R0|
0000a480  20 3d 20 70 6f 72 74 20  6e 75 6d 62 65 72 0a 09  | = port number..|
0000a490  52 31 20 3d 20 73 74 61  74 69 6f 6e 20 6e 75 6d  |R1 = station num|
0000a4a0  62 65 72 0a 09 52 32 20  3d 20 6e 65 74 20 6e 75  |ber..R2 = net nu|
0000a4b0  6d 62 65 72 0a 09 52 33  20 3d 20 64 61 74 61 20  |mber..R3 = data |
0000a4c0  62 75 66 66 65 72 0a 09  52 34 20 3d 20 62 75 66  |buffer..R4 = buf|
0000a4d0  66 65 72 20 73 69 7a 65  0a 0a 3c 3d 09 52 30 20  |fer size..<=.R0 |
0000a4e0  3d 20 68 61 6e 64 6c 65  0a 09 52 32 20 3d 20 30  |= handle..R2 = 0|
0000a4f0  20 69 66 20 6c 6f 63 61  6c 20 6e 65 74 0a 0a 54  | if local net..T|
0000a500  68 69 73 20 53 57 49 20  63 72 65 61 74 65 73 20  |his SWI creates |
0000a510  61 20 63 6f 6e 74 72 6f  6c 20 62 6c 6f 63 6b 20  |a control block |
0000a520  74 6f 20 72 65 63 65 69  76 65 20 64 61 74 61 20  |to receive data |
0000a530  6f 6e 20 61 6e 20 65 63  6f 6e 65 74 20 70 6f 72  |on an econet por|
0000a540  74 2e 20 54 68 65 20 64  61 74 61 20 62 75 66 66  |t. The data buff|
0000a550  65 72 20 73 68 6f 75 6c  64 20 62 65 20 69 6e 20  |er should be in |
0000a560  52 4d 41 20 6f 72 20 73  6f 6d 65 20 6f 74 68 65  |RMA or some othe|
0000a570  72 20 70 65 72 6d 61 6e  65 6e 74 6c 79 20 61 76  |r permanently av|
0000a580  61 69 6c 61 62 6c 65 20  61 72 65 61 20 6f 66 20  |ailable area of |
0000a590  6d 65 6d 6f 72 79 2c 20  64 75 65 20 74 6f 20 74  |memory, due to t|
0000a5a0  68 65 20 77 61 79 20 69  6e 20 77 68 69 63 68 20  |he way in which |
0000a5b0  74 68 65 20 64 61 74 61  20 69 73 20 72 65 61 64  |the data is read|
0000a5c0  2e 00 00 00 44 41 54 41  1d 01 00 00 45 63 6f 6e  |....DATA....Econ|
0000a5d0  65 74 5f 45 78 61 6d 69  6e 65 52 65 63 65 69 76  |et_ExamineReceiv|
0000a5e0  65 20 20 28 26 34 30 30  30 31 29 0a 23 50 61 72  |e  (&40001).#Par|
0000a5f0  65 6e 74 20 45 63 6f 6e  65 74 5f 0a 3d 3e 09 52  |ent Econet_.=>.R|
0000a600  30 20 3d 20 68 61 6e 64  6c 65 0a 0a 3c 3d 09 52  |0 = handle..<=.R|
0000a610  30 20 3d 20 3c 73 74 61  74 75 73 3d 3e 65 63 6f  |0 = <status=>eco|
0000a620  6e 65 74 5f 73 74 61 74  75 73 65 73 3e 0a 0a 54  |net_statuses>..T|
0000a630  68 69 73 20 53 57 49 20  72 65 61 64 73 20 74 68  |his SWI reads th|
0000a640  65 20 73 74 61 74 75 73  20 6f 66 20 61 20 72 65  |e status of a re|
0000a650  63 65 69 76 65 20 62 6c  6f 63 6b 2e 20 46 6f 72  |ceive block. For|
0000a660  20 6d 6f 72 65 20 69 6e  66 6f 72 6d 61 74 69 6f  | more informatio|
0000a670  6e 20 61 62 6f 75 74 20  74 68 65 20 62 6c 6f 63  |n about the bloc|
0000a680  6b 20 79 6f 75 20 73 68  6f 75 6c 64 20 75 73 65  |k you should use|
0000a690  20 3c 45 63 6f 6e 65 74  5f 52 65 61 64 52 65 63  | <Econet_ReadRec|
0000a6a0  65 69 76 65 3e 2e 0a 0a  54 68 69 73 20 69 73 20  |eive>...This is |
0000a6b0  74 68 65 20 72 65 63 65  69 76 65 20 63 6f 75 6e  |the receive coun|
0000a6c0  74 65 72 70 61 72 74 20  6f 66 20 3c 45 63 6f 6e  |terpart of <Econ|
0000a6d0  65 74 5f 50 6f 6c 6c 54  72 61 6e 73 6d 69 74 3e  |et_PollTransmit>|
0000a6e0  2e 00 00 00 44 41 54 41  76 01 00 00 45 63 6f 6e  |....DATAv...Econ|
0000a6f0  65 74 20 73 74 61 74 75  73 20 76 61 6c 75 65 73  |et status values|
0000a700  0a 53 74 61 74 75 73 09  56 61 6c 69 64 09 4d 65  |.Status.Valid.Me|
0000a710  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 30 09 54 09  |aning.#Line.0.T.|
0000a720  54 72 61 6e 73 6d 69 74  74 65 64 0a 31 09 54 09  |Transmitted.1.T.|
0000a730  4c 69 6e 65 20 6a 61 6d  6d 65 64 0a 32 09 54 09  |Line jammed.2.T.|
0000a740  4e 65 74 20 65 72 72 6f  72 0a 33 09 54 09 4e 6f  |Net error.3.T.No|
0000a750  74 20 6c 69 73 74 65 6e  69 6e 67 0a 34 09 54 09  |t listening.4.T.|
0000a760  4e 6f 20 63 6c 6f 63 6b  0a 35 09 54 09 54 72 61  |No clock.5.T.Tra|
0000a770  6e 73 6d 69 74 20 72 65  61 64 79 20 28 61 77 61  |nsmit ready (awa|
0000a780  69 74 69 6e 67 20 63 6f  6e 6e 65 63 74 29 0a 36  |iting connect).6|
0000a790  09 54 09 54 72 61 6e 73  6d 69 74 74 69 6e 67 0a  |.T.Transmitting.|
0000a7a0  37 09 52 09 52 65 63 65  69 76 65 20 72 65 61 64  |7.R.Receive read|
0000a7b0  79 20 28 61 77 61 69 74  69 6e 67 20 64 61 74 61  |y (awaiting data|
0000a7c0  29 0a 38 09 52 57 09 52  65 63 65 69 76 69 6e 67  |).8.RW.Receiving|
0000a7d0  0a 39 09 52 57 09 52 65  63 65 69 76 65 64 20 28  |.9.RW.Received (|
0000a7e0  63 6f 6d 70 6c 65 74 65  29 0a 31 30 09 57 09 4e  |complete).10.W.N|
0000a7f0  6f 20 72 65 70 6c 79 0a  31 31 09 57 09 45 73 63  |o reply.11.W.Esc|
0000a800  61 70 65 20 70 72 65 73  73 65 64 0a 0a 4d 65 61  |ape pressed..Mea|
0000a810  6e 69 6e 67 73 3a 0a 23  54 61 62 0a 52 09 52 65  |nings:.#Tab.R.Re|
0000a820  63 65 69 76 65 20 62 6c  6f 63 6b 73 0a 57 09 3c  |ceive blocks.W.<|
0000a830  45 63 6f 6e 65 74 5f 57  61 69 74 46 6f 72 52 65  |Econet_WaitForRe|
0000a840  63 65 70 74 69 6f 6e 3e  0a 54 09 54 72 61 73 6d  |ception>.T.Trasm|
0000a850  69 74 20 62 6c 6f 63 6b  73 0a 00 00 44 41 54 41  |it blocks...DATA|
0000a860  84 01 00 00 45 63 6f 6e  65 74 5f 52 65 61 64 52  |....Econet_ReadR|
0000a870  65 63 65 69 76 65 20 20  28 26 34 30 30 30 32 29  |eceive  (&40002)|
0000a880  0a 23 50 61 72 65 6e 74  20 45 63 6f 6e 65 74 5f  |.#Parent Econet_|
0000a890  0a 3d 3e 09 52 30 20 3d  20 68 61 6e 64 6c 65 0a  |.=>.R0 = handle.|
0000a8a0  0a 3c 3d 09 52 30 20 3d  20 3c 73 74 61 74 75 73  |.<=.R0 = <status|
0000a8b0  3d 3e 65 63 6f 6e 65 74  5f 73 74 61 74 75 73 65  |=>econet_statuse|
0000a8c0  73 3e 0a 09 52 31 20 3d  20 30 2c 20 6f 72 20 66  |s>..R1 = 0, or f|
0000a8d0  6c 61 67 20 62 79 74 65  20 69 66 20 72 30 3d 39  |lag byte if r0=9|
0000a8e0  20 6f 6e 20 65 78 69 74  0a 09 52 32 20 3d 20 70  | on exit..R2 = p|
0000a8f0  6f 72 74 20 6e 75 6d 62  65 72 0a 09 52 33 20 3d  |ort number..R3 =|
0000a900  20 73 74 61 74 69 6f 6e  20 6e 75 6d 62 65 72 0a  | station number.|
0000a910  09 52 34 20 3d 20 6e 65  74 20 6e 75 6d 62 65 72  |.R4 = net number|
0000a920  0a 09 52 35 20 3d 20 64  61 74 61 20 62 75 66 66  |..R5 = data buff|
0000a930  65 72 0a 09 52 36 20 3d  20 73 69 7a 65 20 6f 66  |er..R6 = size of|
0000a940  20 64 61 74 61 20 72 65  63 65 69 76 65 64 0a 0a  | data received..|
0000a950  54 68 69 73 20 53 57 49  20 72 65 74 75 72 6e 73  |This SWI returns|
0000a960  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 61 62 6f  | information abo|
0000a970  75 74 20 61 20 63 6f 6e  74 72 6f 6c 20 62 6c 6f  |ut a control blo|
0000a980  63 6b 2c 20 67 69 76 65  6e 20 69 74 27 73 20 68  |ck, given it's h|
0000a990  61 6e 64 6c 65 20 6e 75  6d 62 65 72 2e 20 3c 45  |andle number. <E|
0000a9a0  63 6f 6e 65 74 5f 45 78  61 6d 69 6e 65 52 65 63  |conet_ExamineRec|
0000a9b0  65 69 76 65 3e 20 70 65  72 66 6f 72 6d 73 20 61  |eive> performs a|
0000a9c0  20 73 69 6d 69 6c 61 72  20 74 61 73 6b 2c 20 62  | similar task, b|
0000a9d0  75 74 20 6d 6f 72 65 20  71 75 69 63 6b 6c 79 2e  |ut more quickly.|
0000a9e0  44 41 54 41 fa 00 00 00  45 63 6f 6e 65 74 5f 41  |DATA....Econet_A|
0000a9f0  62 61 6e 64 6f 6e 52 65  63 65 69 76 65 20 20 28  |bandonReceive  (|
0000aa00  26 34 30 30 30 33 29 0a  23 50 61 72 65 6e 74 20  |&40003).#Parent |
0000aa10  45 63 6f 6e 65 74 5f 0a  3d 3e 09 52 30 20 3d 20  |Econet_.=>.R0 = |
0000aa20  68 61 6e 64 6c 65 0a 3c  3d 09 52 30 20 3d 20 3c  |handle.<=.R0 = <|
0000aa30  73 74 61 74 75 73 3d 3e  65 63 6f 6e 65 74 5f 73  |status=>econet_s|
0000aa40  74 61 74 75 73 65 73 3e  0a 0a 54 68 69 73 20 53  |tatuses>..This S|
0000aa50  57 49 20 61 62 61 6e 64  6f 6e 73 20 61 20 72 65  |WI abandons a re|
0000aa60  63 65 69 76 65 20 62 6c  6f 63 6b 2e 20 41 6e 79  |ceive block. Any|
0000aa70  20 64 61 74 61 20 77 68  69 63 68 20 77 61 73 20  | data which was |
0000aa80  69 6e 20 74 72 61 6e 73  66 65 72 20 28 72 30 3d  |in transfer (r0=|
0000aa90  38 20 6f 6e 20 65 78 69  74 29 20 77 69 6c 6c 20  |8 on exit) will |
0000aaa0  62 65 20 64 69 73 63 61  72 64 65 64 20 61 6e 64  |be discarded and|
0000aab0  20 74 68 65 20 62 6c 6f  63 6b 20 63 6f 6e 74 65  | the block conte|
0000aac0  6e 74 73 20 77 69 6c 6c  20 72 65 6d 61 69 6e 20  |nts will remain |
0000aad0  74 68 65 20 73 61 6d 65  2e 0a 00 00 44 41 54 41  |the same....DATA|
0000aae0  8c 01 00 00 45 63 6f 6e  65 74 5f 57 61 69 74 46  |....Econet_WaitF|
0000aaf0  6f 72 52 65 63 65 70 74  69 6f 6e 20 20 28 26 34  |orReception  (&4|
0000ab00  30 30 30 34 29 0a 23 50  61 72 65 6e 74 20 45 63  |0004).#Parent Ec|
0000ab10  6f 6e 65 74 5f 0a 3d 3e  09 52 30 20 3d 20 68 61  |onet_.=>.R0 = ha|
0000ab20  6e 64 6c 65 0a 09 52 31  20 3d 20 64 65 6c 61 79  |ndle..R1 = delay|
0000ab30  20 6f 66 20 63 68 65 63  6b 73 20 69 6e 20 63 73  | of checks in cs|
0000ab40  0a 09 52 32 20 3d 20 30  20 69 66 20 65 73 63 61  |..R2 = 0 if esca|
0000ab50  70 65 20 73 68 6f 75 6c  64 20 2a 6e 6f 74 2a 20  |pe should *not* |
0000ab60  61 62 6f 72 74 0a 0a 3c  3d 09 52 30 20 3d 20 3c  |abort..<=.R0 = <|
0000ab70  73 74 61 74 75 73 3d 3e  65 63 6f 6e 65 74 5f 73  |status=>econet_s|
0000ab80  74 61 74 75 73 65 73 3e  0a 09 52 31 20 3d 20 30  |tatuses>..R1 = 0|
0000ab90  2c 20 6f 72 20 66 6c 61  67 20 62 79 74 65 20 69  |, or flag byte i|
0000aba0  66 20 72 30 3d 39 20 6f  6e 20 65 78 69 74 0a 09  |f r0=9 on exit..|
0000abb0  52 32 20 3d 20 70 6f 72  74 20 6e 75 6d 62 65 72  |R2 = port number|
0000abc0  0a 09 52 33 20 3d 20 73  74 61 74 69 6f 6e 20 6e  |..R3 = station n|
0000abd0  75 6d 62 65 72 0a 09 52  34 20 3d 20 6e 65 74 20  |umber..R4 = net |
0000abe0  6e 75 6d 62 65 72 0a 09  52 35 20 3d 20 64 61 74  |number..R5 = dat|
0000abf0  61 20 62 75 66 66 65 72  0a 09 52 36 20 3d 20 73  |a buffer..R6 = s|
0000ac00  69 7a 65 20 6f 66 20 64  61 74 61 20 72 65 63 65  |ize of data rece|
0000ac10  69 76 65 64 0a 0a 54 68  69 73 20 53 57 49 20 63  |ived..This SWI c|
0000ac20  68 65 63 6b 73 20 74 68  65 20 70 6f 72 74 20 72  |hecks the port r|
0000ac30  65 70 65 61 74 65 64 6c  79 20 75 6e 74 69 6c 20  |epeatedly until |
0000ac40  65 69 74 68 65 72 20 61  62 6f 72 74 65 64 2c 20  |either aborted, |
0000ac50  6f 72 20 74 68 65 20 64  61 74 61 20 69 73 20 72  |or the data is r|
0000ac60  65 63 65 69 76 65 64 2e  44 41 54 41 bc 00 00 00  |eceived.DATA....|
0000ac70  45 63 6f 6e 65 74 5f 45  6e 75 6d 65 72 61 74 65  |Econet_Enumerate|
0000ac80  52 65 63 65 69 76 65 20  20 28 26 34 30 30 30 35  |Receive  (&40005|
0000ac90  29 0a 23 50 61 72 65 6e  74 20 45 63 6f 6e 65 74  |).#Parent Econet|
0000aca0  5f 0a 3d 3e 09 52 30 20  3d 20 69 6e 64 65 78 20  |_.=>.R0 = index |
0000acb0  28 31 20 66 6f 72 20 66  69 72 73 74 20 62 6c 6f  |(1 for first blo|
0000acc0  63 6b 29 0a 3c 3d 09 52  30 20 3d 20 68 61 6e 64  |ck).<=.R0 = hand|
0000acd0  6c 65 20 28 6f 72 20 30  20 69 66 20 6e 6f 20 6d  |le (or 0 if no m|
0000ace0  6f 72 65 20 62 6c 6f 63  6b 73 29 0a 0a 54 68 69  |ore blocks)..Thi|
0000acf0  73 20 53 57 49 20 65 6e  75 6d 65 72 61 74 65 73  |s SWI enumerates|
0000ad00  20 74 68 65 20 63 75 72  72 65 6e 74 6c 79 20 6f  | the currently o|
0000ad10  70 65 6e 20 72 65 63 65  69 76 65 20 62 6c 6f 63  |pen receive bloc|
0000ad20  6b 73 2e 0a 44 41 54 41  e0 01 00 00 45 63 6f 6e  |ks..DATA....Econ|
0000ad30  65 74 5f 53 74 61 72 74  54 72 61 6e 73 6d 69 74  |et_StartTransmit|
0000ad40  20 20 28 26 34 30 30 30  36 29 0a 23 50 61 72 65  |  (&40006).#Pare|
0000ad50  6e 74 20 45 63 6f 6e 65  74 5f 0a 3d 3e 09 52 30  |nt Econet_.=>.R0|
0000ad60  20 3d 20 66 6c 61 67 20  62 79 74 65 0a 09 52 31  | = flag byte..R1|
0000ad70  20 3d 20 70 6f 72 74 20  6e 75 6d 62 65 72 0a 09  | = port number..|
0000ad80  52 32 20 3d 20 73 74 61  74 69 6f 6e 20 6e 75 6d  |R2 = station num|
0000ad90  62 65 72 0a 09 52 33 20  3d 20 6e 65 74 20 6e 75  |ber..R3 = net nu|
0000ada0  6d 62 65 72 0a 09 52 34  20 3d 20 64 61 74 61 20  |mber..R4 = data |
0000adb0  62 75 66 66 65 72 0a 09  52 35 20 3d 20 62 75 66  |buffer..R5 = buf|
0000adc0  66 65 72 20 73 69 7a 65  0a 09 52 36 20 3d 20 63  |fer size..R6 = c|
0000add0  6f 75 6e 74 0a 09 52 37  20 3d 20 64 65 6c 61 79  |ount..R7 = delay|
0000ade0  20 69 6e 20 63 73 0a 0a  3c 3d 09 52 30 20 3d 20  | in cs..<=.R0 = |
0000adf0  68 61 6e 64 6c 65 0a 09  52 31 20 63 6f 72 72 75  |handle..R1 corru|
0000ae00  70 74 65 64 0a 09 52 32  20 3d 20 62 75 66 66 65  |pted..R2 = buffe|
0000ae10  72 20 61 64 64 72 65 73  73 0a 09 52 33 20 3d 20  |r address..R3 = |
0000ae20  73 74 61 74 69 6f 6e 20  6e 75 6d 62 65 72 0a 09  |station number..|
0000ae30  52 34 20 3d 20 6e 65 74  20 6e 75 6d 62 65 72 0a  |R4 = net number.|
0000ae40  0a 54 68 69 73 20 53 57  49 20 63 72 65 61 74 65  |.This SWI create|
0000ae50  73 20 61 20 63 6f 6e 74  72 6f 6c 20 62 6c 6f 63  |s a control bloc|
0000ae60  6b 20 74 6f 20 74 72 61  6e 73 6d 69 74 20 64 61  |k to transmit da|
0000ae70  74 61 20 6f 6e 20 61 6e  20 65 63 6f 6e 65 74 20  |ta on an econet |
0000ae80  70 6f 72 74 2e 20 54 68  65 20 64 61 74 61 20 62  |port. The data b|
0000ae90  75 66 66 65 72 20 73 68  6f 75 6c 64 20 62 65 20  |uffer should be |
0000aea0  69 6e 20 52 4d 41 20 6f  72 20 73 6f 6d 65 20 6f  |in RMA or some o|
0000aeb0  74 68 65 72 20 70 65 72  6d 61 6e 65 6e 74 6c 79  |ther permanently|
0000aec0  20 61 76 61 69 6c 61 62  6c 65 20 61 72 65 61 20  | available area |
0000aed0  6f 66 20 6d 65 6d 6f 72  79 2c 20 64 75 65 20 74  |of memory, due t|
0000aee0  6f 20 74 68 65 20 77 61  79 20 69 6e 20 77 68 69  |o the way in whi|
0000aef0  63 68 20 74 68 65 20 64  61 74 61 20 69 73 20 72  |ch the data is r|
0000af00  65 61 64 2e 44 41 54 41  d5 00 00 00 45 63 6f 6e  |ead.DATA....Econ|
0000af10  65 74 5f 50 6f 6c 6c 54  72 61 6e 73 6d 69 74 20  |et_PollTransmit |
0000af20  20 28 26 34 30 30 30 37  29 0a 23 50 61 72 65 6e  | (&40007).#Paren|
0000af30  74 20 45 63 6f 6e 65 74  5f 0a 3d 3e 09 52 30 20  |t Econet_.=>.R0 |
0000af40  3d 20 68 61 6e 64 6c 65  0a 0a 3c 3d 09 52 30 20  |= handle..<=.R0 |
0000af50  3d 20 3c 73 74 61 74 75  73 3d 3e 65 63 6f 6e 65  |= <status=>econe|
0000af60  74 5f 73 74 61 74 75 73  65 73 3e 0a 0a 54 68 69  |t_statuses>..Thi|
0000af70  73 20 53 57 49 20 72 65  61 64 73 20 74 68 65 20  |s SWI reads the |
0000af80  73 74 61 74 75 73 20 6f  66 20 61 20 74 72 61 6e  |status of a tran|
0000af90  73 6d 69 74 20 62 6c 6f  63 6b 2e 0a 0a 54 68 69  |smit block...Thi|
0000afa0  73 20 69 73 20 74 68 65  20 74 72 61 6e 73 6d 69  |s is the transmi|
0000afb0  74 20 63 6f 75 6e 74 65  72 70 61 72 74 20 6f 66  |t counterpart of|
0000afc0  20 3c 45 63 6f 6e 65 74  5f 45 78 61 6d 69 6e 65  | <Econet_Examine|
0000afd0  52 65 63 65 69 76 65 3e  2e 00 00 00 44 41 54 41  |Receive>....DATA|
0000afe0  8f 00 00 00 45 63 6f 6e  65 74 5f 41 62 61 6e 64  |....Econet_Aband|
0000aff0  6f 6e 54 72 61 6e 73 6d  69 74 20 20 28 26 34 30  |onTransmit  (&40|
0000b000  30 30 38 29 0a 23 50 61  72 65 6e 74 20 45 63 6f  |008).#Parent Eco|
0000b010  6e 65 74 5f 0a 3d 3e 09  52 30 20 3d 20 68 61 6e  |net_.=>.R0 = han|
0000b020  64 6c 65 0a 3c 3d 09 52  30 20 3d 20 3c 73 74 61  |dle.<=.R0 = <sta|
0000b030  74 75 73 3d 3e 65 63 6f  6e 65 74 5f 73 74 61 74  |tus=>econet_stat|
0000b040  75 73 65 73 3e 0a 0a 54  68 69 73 20 53 57 49 20  |uses>..This SWI |
0000b050  61 62 61 6e 64 6f 6e 73  20 61 20 74 72 61 6e 73  |abandons a trans|
0000b060  6d 69 74 20 62 6c 6f 63  6b 2e 0a 00 44 41 54 41  |mit block...DATA|
0000b070  aa 01 00 00 45 63 6f 6e  65 74 5f 44 6f 54 72 61  |....Econet_DoTra|
0000b080  6e 73 6d 69 74 20 20 28  26 34 30 30 30 39 29 0a  |nsmit  (&40009).|
0000b090  23 50 61 72 65 6e 74 20  45 63 6f 6e 65 74 5f 0a  |#Parent Econet_.|
0000b0a0  3d 3e 09 52 30 20 3d 20  66 6c 61 67 20 62 79 74  |=>.R0 = flag byt|
0000b0b0  65 0a 09 52 31 20 3d 20  70 6f 72 74 20 6e 75 6d  |e..R1 = port num|
0000b0c0  62 65 72 0a 09 52 32 20  3d 20 73 74 61 74 69 6f  |ber..R2 = statio|
0000b0d0  6e 20 6e 75 6d 62 65 72  0a 09 52 33 20 3d 20 6e  |n number..R3 = n|
0000b0e0  65 74 20 6e 75 6d 62 65  72 0a 09 52 34 20 3d 20  |et number..R4 = |
0000b0f0  64 61 74 61 20 62 75 66  66 65 72 0a 09 52 35 20  |data buffer..R5 |
0000b100  3d 20 62 75 66 66 65 72  20 73 69 7a 65 0a 09 52  |= buffer size..R|
0000b110  36 20 3d 20 63 6f 75 6e  74 0a 09 52 37 20 3d 20  |6 = count..R7 = |
0000b120  64 65 6c 61 79 20 69 6e  20 63 73 0a 0a 3c 3d 09  |delay in cs..<=.|
0000b130  52 30 20 3d 20 3c 73 74  61 74 75 73 3d 3e 65 63  |R0 = <status=>ec|
0000b140  6f 6e 65 74 5f 73 74 61  74 75 73 65 73 3e 0a 09  |onet_statuses>..|
0000b150  52 31 20 63 6f 72 72 75  70 74 65 64 0a 09 52 32  |R1 corrupted..R2|
0000b160  20 3d 20 62 75 66 66 65  72 20 61 64 64 72 65 73  | = buffer addres|
0000b170  73 0a 09 52 33 20 3d 20  73 74 61 74 69 6f 6e 20  |s..R3 = station |
0000b180  6e 75 6d 62 65 72 0a 09  52 34 20 3d 20 6e 65 74  |number..R4 = net|
0000b190  20 6e 75 6d 62 65 72 0a  0a 54 68 69 73 20 53 57  | number..This SW|
0000b1a0  49 20 63 72 65 61 74 65  73 20 61 20 62 6c 6f 63  |I creates a bloc|
0000b1b0  6b 20 61 6e 64 20 72 65  70 65 61 74 65 64 6c 79  |k and repeatedly|
0000b1c0  20 70 6f 6c 6c 73 20 75  6e 74 69 6c 20 74 68 65  | polls until the|
0000b1d0  20 64 61 74 61 20 69 73  20 72 65 63 65 69 76 65  | data is receive|
0000b1e0  64 2c 20 6f 72 20 61 6e  20 65 72 72 6f 72 20 61  |d, or an error a|
0000b1f0  74 20 77 68 69 63 68 20  70 6f 69 6e 74 20 74 68  |t which point th|
0000b200  65 20 62 6c 6f 63 6b 20  69 73 20 61 62 61 6e 64  |e block is aband|
0000b210  6f 6e 65 64 2e 0a 00 00  44 41 54 41 e1 00 00 00  |oned....DATA....|
0000b220  45 63 6f 6e 65 74 5f 52  65 61 64 4c 6f 63 61 6c  |Econet_ReadLocal|
0000b230  53 74 61 74 69 6f 6e 41  6e 64 4e 65 74 20 20 28  |StationAndNet  (|
0000b240  26 34 30 30 30 41 29 0a  23 50 61 72 65 6e 74 20  |&4000A).#Parent |
0000b250  45 63 6f 6e 65 74 5f 0a  3c 3d 09 52 30 20 3d 20  |Econet_.<=.R0 = |
0000b260  73 74 61 74 69 6f 6e 20  6e 75 6d 62 65 72 0a 09  |station number..|
0000b270  52 31 20 3d 20 6e 65 74  20 6e 75 6d 62 65 72 0a  |R1 = net number.|
0000b280  0a 54 68 69 73 20 63 61  6c 6c 20 72 65 74 75 72  |.This call retur|
0000b290  6e 73 20 74 68 65 20 63  6f 6d 70 75 74 65 72 73  |ns the computers|
0000b2a0  20 73 74 61 74 69 6f 6e  20 6e 75 6d 62 65 72 20  | station number |
0000b2b0  61 6e 64 20 6e 65 74 77  6f 72 6b 2e 20 54 68 65  |and network. The|
0000b2c0  20 6e 65 74 20 6e 75 6d  62 65 72 20 77 69 6c 6c  | net number will|
0000b2d0  20 62 65 20 7a 65 72 6f  20 69 66 20 74 68 65 72  | be zero if ther|
0000b2e0  65 20 61 72 65 20 6e 6f  20 62 72 69 64 67 65 73  |e are no bridges|
0000b2f0  20 70 72 65 73 65 6e 74  2e 00 00 00 44 41 54 41  | present....DATA|
0000b300  8e 01 00 00 45 63 6f 6e  65 74 5f 43 6f 6e 76 65  |....Econet_Conve|
0000b310  72 74 53 74 61 74 75 73  54 6f 53 74 72 69 6e 67  |rtStatusToString|
0000b320  20 20 28 26 34 30 30 30  42 29 0a 23 50 61 72 65  |  (&4000B).#Pare|
0000b330  6e 74 20 45 63 6f 6e 65  74 5f 0a 3d 3e 09 52 30  |nt Econet_.=>.R0|
0000b340  20 3d 20 3c 73 74 61 74  75 73 3d 3e 45 63 6f 6e  | = <status=>Econ|
0000b350  65 74 5f 73 74 61 74 75  73 65 73 3e 0a 09 52 31  |et_statuses>..R1|
0000b360  20 3d 20 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | = pointer to bu|
0000b370  66 66 65 72 20 66 6f 72  20 73 74 72 69 6e 67 0a  |ffer for string.|
0000b380  09 52 32 20 3d 20 62 75  66 66 65 72 20 73 69 7a  |.R2 = buffer siz|
0000b390  65 0a 09 52 33 20 3d 20  73 74 61 74 69 6f 6e 20  |e..R3 = station |
0000b3a0  6e 75 6d 62 65 72 0a 09  52 34 20 3d 20 6e 65 74  |number..R4 = net|
0000b3b0  20 6e 75 6d 62 65 72 0a  0a 3c 3d 09 52 30 20 3d  | number..<=.R0 =|
0000b3c0  20 62 75 66 66 65 72 0a  09 52 31 20 3d 20 65 6e  | buffer..R1 = en|
0000b3d0  64 20 61 64 64 72 65 73  73 20 69 6e 20 62 75 66  |d address in buf|
0000b3e0  66 65 72 0a 09 52 32 20  3d 20 73 70 61 63 65 20  |fer..R2 = space |
0000b3f0  69 6e 20 62 75 66 66 65  72 0a 0a 54 68 69 73 20  |in buffer..This |
0000b400  53 57 49 20 63 6f 6e 76  65 72 74 73 20 61 20 73  |SWI converts a s|
0000b410  74 61 74 75 73 20 72 65  73 75 6c 74 20 66 72 6f  |tatus result fro|
0000b420  6d 20 61 20 70 72 69 6f  72 20 45 63 6f 6e 65 74  |m a prior Econet|
0000b430  20 63 61 6c 6c 20 74 6f  20 61 20 73 74 72 69 6e  | call to a strin|
0000b440  67 2e 20 49 66 20 74 68  65 20 73 74 61 74 69 6f  |g. If the statio|
0000b450  6e 20 6f 72 20 6e 65 74  20 69 73 20 69 6e 76 61  |n or net is inva|
0000b460  6c 69 64 20 74 68 65 6e  20 73 74 61 74 69 6f 6e  |lid then station|
0000b470  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 69 73 20  | information is |
0000b480  6e 6f 74 20 67 69 76 65  6e 2e 00 00 44 41 54 41  |not given...DATA|
0000b490  c6 01 00 00 45 63 6f 6e  65 74 5f 43 6f 6e 76 65  |....Econet_Conve|
0000b4a0  72 74 53 74 61 74 75 73  54 6f 45 72 72 6f 72 20  |rtStatusToError |
0000b4b0  28 26 34 30 30 30 43 29  0a 23 50 61 72 65 6e 74  |(&4000C).#Parent|
0000b4c0  20 45 63 6f 6e 65 74 5f  0a 3d 3e 09 52 30 20 3d  | Econet_.=>.R0 =|
0000b4d0  20 3c 73 74 61 74 75 73  3d 3e 45 63 6f 6e 65 74  | <status=>Econet|
0000b4e0  5f 73 74 61 74 75 73 65  73 3e 0a 09 52 31 20 3d  |_statuses>..R1 =|
0000b4f0  20 70 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  | pointer to erro|
0000b500  72 20 62 75 66 66 65 72  0a 09 52 32 20 3d 20 62  |r buffer..R2 = b|
0000b510  75 66 66 65 72 20 73 69  7a 65 0a 09 52 33 20 3d  |uffer size..R3 =|
0000b520  20 73 74 61 74 69 6f 6e  20 6e 75 6d 62 65 72 0a  | station number.|
0000b530  09 52 34 20 3d 20 6e 65  74 20 6e 75 6d 62 65 72  |.R4 = net number|
0000b540  0a 0a 3c 3d 09 52 30 20  3d 20 62 75 66 66 65 72  |..<=.R0 = buffer|
0000b550  0a 09 56 20 73 65 74 0a  09 0a 54 68 69 73 20 53  |..V set...This S|
0000b560  57 49 20 63 6f 6e 76 65  72 74 73 20 61 20 73 74  |WI converts a st|
0000b570  61 74 75 73 20 72 65 73  75 6c 74 20 66 72 6f 6d  |atus result from|
0000b580  20 61 20 70 72 69 6f 72  20 45 63 6f 6e 65 74 20  | a prior Econet |
0000b590  63 61 6c 6c 20 74 6f 20  61 6e 20 65 72 72 6f 72  |call to an error|
0000b5a0  20 62 6c 6f 63 6b 20 61  6e 64 20 74 68 65 6e 20  | block and then |
0000b5b0  67 65 6e 65 72 61 74 65  73 20 61 6e 20 65 72 72  |generates an err|
0000b5c0  6f 72 2e 20 54 6f 20 70  72 65 76 65 6e 74 20 74  |or. To prevent t|
0000b5d0  68 65 20 65 72 72 6f 72  2c 20 63 61 6c 6c 20 74  |he error, call t|
0000b5e0  68 65 20 58 20 76 65 72  73 69 6f 6e 20 6f 66 20  |he X version of |
0000b5f0  74 68 69 73 20 53 57 49  20 61 6e 64 20 72 65 61  |this SWI and rea|
0000b600  64 20 72 30 2c 20 6f 72  20 73 65 74 20 74 68 65  |d r0, or set the|
0000b610  20 62 75 66 66 65 72 20  61 64 64 72 65 73 73 20  | buffer address |
0000b620  74 6f 20 30 20 77 68 69  63 68 20 77 69 6c 6c 20  |to 0 which will |
0000b630  6c 65 61 76 65 20 74 68  65 20 73 74 72 69 6e 67  |leave the string|
0000b640  20 69 6e 20 74 68 65 20  77 6f 72 6b 73 70 61 63  | in the workspac|
0000b650  65 2e 00 00 44 41 54 41  17 01 00 00 45 63 6f 6e  |e...DATA....Econ|
0000b660  65 74 20 70 72 6f 74 65  63 74 69 6f 6e 20 62 69  |et protection bi|
0000b670  74 73 0a 42 69 74 09 44  69 73 61 62 6c 65 64 20  |ts.Bit.Disabled |
0000b680  69 66 20 73 65 74 0a 23  4c 69 6e 65 0a 30 09 50  |if set.#Line.0.P|
0000b690  65 65 6b 0a 31 09 50 6f  6b 65 0a 32 09 52 65 6d  |eek.1.Poke.2.Rem|
0000b6a0  6f 74 65 20 4a 53 52 20  28 42 4c 29 0a 33 09 55  |ote JSR (BL).3.U|
0000b6b0  73 65 72 20 70 72 6f 63  65 64 75 72 65 20 63 61  |ser procedure ca|
0000b6c0  6c 6c 0a 34 09 4f 53 20  70 72 6f 63 65 64 75 72  |ll.4.OS procedur|
0000b6d0  65 20 63 61 6c 6c 0a 35  09 48 61 6c 74 0a 36 09  |e call.5.Halt.6.|
0000b6e0  43 6f 6e 74 69 6e 75 65  20 28 30 20 6f 6e 20 52  |Continue (0 on R|
0000b6f0  69 73 63 20 4f 53 29 0a  37 09 4d 61 63 68 69 6e  |isc OS).7.Machin|
0000b700  65 20 70 65 65 6b 20 28  30 20 6f 6e 20 52 69 73  |e peek (0 on Ris|
0000b710  63 20 4f 53 29 0a 38 09  47 65 74 20 72 65 67 69  |c OS).8.Get regi|
0000b720  73 74 65 72 73 0a 39 2d  33 30 09 72 65 73 65 72  |sters.9-30.reser|
0000b730  76 65 64 20 28 30 29 0a  33 31 09 57 72 69 74 65  |ved (0).31.Write|
0000b740  20 76 61 6c 75 65 20 74  6f 20 43 4d 4f 53 20 28  | value to CMOS (|
0000b750  69 6e 20 3c 45 63 6f 6e  65 74 5f 53 65 74 50 72  |in <Econet_SetPr|
0000b760  6f 74 65 63 74 69 6f 6e  3e 29 0a 00 44 41 54 41  |otection>)..DATA|
0000b770  f2 00 00 00 45 63 6f 6e  65 74 5f 52 65 61 64 50  |....Econet_ReadP|
0000b780  72 6f 74 65 63 74 69 6f  6e 20 20 28 26 34 30 30  |rotection  (&400|
0000b790  30 44 29 0a 23 50 61 72  65 6e 74 20 45 63 6f 6e  |0D).#Parent Econ|
0000b7a0  65 74 5f 0a 3c 3d 09 52  30 20 3d 20 63 75 72 72  |et_.<=.R0 = curr|
0000b7b0  65 6e 74 20 3c 70 72 6f  74 65 63 74 69 6f 6e 3d  |ent <protection=|
0000b7c0  3e 45 63 6f 6e 65 74 5f  70 72 6f 74 65 63 74 73  |>Econet_protects|
0000b7d0  3e 0a 0a 54 68 69 73 20  53 57 49 20 69 73 20 75  |>..This SWI is u|
0000b7e0  73 65 64 20 74 6f 20 72  65 61 64 20 74 68 65 20  |sed to read the |
0000b7f0  63 75 72 72 65 6e 74 20  70 72 6f 74 65 63 74 69  |current protecti|
0000b800  6f 6e 20 77 6f 72 64 20  66 6f 72 20 69 6d 6d 65  |on word for imme|
0000b810  64 69 61 74 65 20 6f 70  65 72 61 74 69 6f 6e 73  |diate operations|
0000b820  2e 0a 0a 59 6f 75 20 73  68 6f 75 6c 64 20 75 73  |...You should us|
0000b830  65 20 3c 45 63 6f 6e 65  74 5f 53 65 74 50 72 6f  |e <Econet_SetPro|
0000b840  74 65 63 74 69 6f 6e 3e  20 69 6e 73 74 65 61 64  |tection> instead|
0000b850  20 6f 66 20 74 68 69 73  20 63 61 6c 6c 2e 00 00  | of this call...|
0000b860  44 41 54 41 ff 00 00 00  45 63 6f 6e 65 74 5f 53  |DATA....Econet_S|
0000b870  65 74 50 72 6f 74 65 63  74 69 6f 6e 20 20 28 26  |etProtection  (&|
0000b880  34 30 30 30 45 29 0a 23  50 61 72 65 6e 74 20 45  |4000E).#Parent E|
0000b890  63 6f 6e 65 74 5f 0a 3c  3d 09 52 30 20 3d 20 45  |conet_.<=.R0 = E|
0000b8a0  4f 52 20 6d 61 73 6b 20  77 6f 72 64 0a 09 52 31  |OR mask word..R1|
0000b8b0  20 3d 20 41 4e 44 20 6d  61 73 6b 20 77 6f 72 64  | = AND mask word|
0000b8c0  0a 0a 54 68 69 73 20 53  57 49 20 69 73 20 75 73  |..This SWI is us|
0000b8d0  65 64 20 74 6f 20 6d 6f  64 69 66 79 20 6f 72 20  |ed to modify or |
0000b8e0  72 65 61 64 20 74 68 65  20 63 75 72 72 65 6e 74  |read the current|
0000b8f0  20 3c 70 72 6f 74 65 63  74 69 6f 6e 20 77 6f 72  | <protection wor|
0000b900  64 3d 3e 45 63 6f 6e 65  74 5f 70 72 6f 74 65 63  |d=>Econet_protec|
0000b910  74 73 3e 20 66 6f 72 20  69 6d 6d 65 64 69 61 74  |ts> for immediat|
0000b920  65 20 6f 70 65 72 61 74  69 6f 6e 73 2e 0a 0a 59  |e operations...Y|
0000b930  6f 75 20 73 68 6f 75 6c  64 20 75 73 65 20 52 30  |ou should use R0|
0000b940  3d 30 2c 20 61 6e 64 20  52 31 3d 2d 31 20 74 6f  |=0, and R1=-1 to|
0000b950  20 72 65 61 64 20 74 68  65 20 77 6f 72 64 2e 00  | read the word..|
0000b960  44 41 54 41 b9 00 00 00  45 63 6f 6e 65 74 5f 50  |DATA....Econet_P|
0000b970  72 69 6e 74 42 61 6e 6e  65 72 20 20 28 26 34 30  |rintBanner  (&40|
0000b980  30 31 30 29 0a 23 50 61  72 65 6e 74 20 45 63 6f  |010).#Parent Eco|
0000b990  6e 65 74 5f 0a 0a 54 68  69 73 20 53 57 49 20 64  |net_..This SWI d|
0000b9a0  69 73 70 6c 61 79 73 20  74 68 65 20 65 63 6f 6e  |isplays the econ|
0000b9b0  65 74 20 62 61 6e 6e 65  72 2e 20 54 68 69 73 20  |et banner. This |
0000b9c0  69 73 20 75 73 75 61 6c  6c 79 20 22 41 63 6f 72  |is usually "Acor|
0000b9d0  6e 20 45 63 6f 6e 65 74  22 2c 20 62 75 74 20 63  |n Econet", but c|
0000b9e0  6f 75 6c 64 20 62 65 20  22 41 63 6f 72 6e 20 45  |ould be "Acorn E|
0000b9f0  63 6f 6e 65 74 2c 20 6e  6f 20 63 6c 6f 63 6b 22  |conet, no clock"|
0000ba00  20 69 66 20 6e 6f 20 63  6c 6f 63 6b 20 69 73 20  | if no clock is |
0000ba10  72 75 6e 6e 69 6e 67 2e  0a 00 00 00 44 41 54 41  |running.....DATA|
0000ba20  6e 01 00 00 45 63 6f 6e  65 74 5f 52 65 61 64 54  |n...Econet_ReadT|
0000ba30  72 61 6e 73 70 6f 72 74  54 79 70 65 20 20 28 26  |ransportType  (&|
0000ba40  34 30 30 31 31 29 0a 23  50 61 72 65 6e 74 20 45  |40011).#Parent E|
0000ba50  63 6f 6e 65 74 5f 0a 3d  3e 09 52 30 20 3d 20 73  |conet_.=>.R0 = s|
0000ba60  74 61 74 69 6f 6e 20 6e  75 6d 62 65 72 0a 09 52  |tation number..R|
0000ba70  31 20 3d 20 6e 65 74 20  6e 75 6d 62 65 72 0a 09  |1 = net number..|
0000ba80  52 32 20 3d 20 32 20 28  77 68 79 20 3f 29 0a 09  |R2 = 2 (why ?)..|
0000ba90  0a 3c 3d 09 52 32 20 3d  20 3c 74 72 61 6e 73 70  |.<=.R2 = <transp|
0000baa0  6f 72 74 20 74 79 70 65  3d 3e 2e 74 72 61 6e 73  |ort type=>.trans|
0000bab0  70 6f 72 74 73 3e 0a 0a  54 68 69 73 20 53 57 49  |ports>..This SWI|
0000bac0  20 72 65 74 75 72 6e 73  20 74 68 65 20 61 63 74  | returns the act|
0000bad0  75 61 6c 20 66 6f 72 6d  20 69 6e 20 77 68 69 63  |ual form in whic|
0000bae0  68 20 74 68 65 20 64 61  74 61 20 77 69 6c 6c 20  |h the data will |
0000baf0  62 65 20 73 65 6e 74 20  73 6f 20 74 68 61 74 20  |be sent so that |
0000bb00  74 68 65 20 74 72 61 6e  73 6d 69 73 73 69 6f 6e  |the transmission|
0000bb10  20 74 79 70 65 20 75 73  65 64 20 63 61 6e 20 62  | type used can b|
0000bb20  65 20 63 68 61 6e 67 65  64 20 61 63 63 6f 72 64  |e changed accord|
0000bb30  69 6e 67 6c 79 2e 0a 23  53 75 62 70 61 67 65 20  |ingly..#Subpage |
0000bb40  74 72 61 6e 73 70 6f 72  74 73 0a 45 63 6f 6e 65  |transports.Econe|
0000bb50  74 20 74 72 61 6e 73 70  6f 72 74 20 74 79 70 65  |t transport type|
0000bb60  73 0a 54 79 70 65 09 4d  65 61 6e 69 6e 67 0a 31  |s.Type.Meaning.1|
0000bb70  09 49 6e 74 65 72 6e 65  74 0a 32 09 45 63 6f 6e  |.Internet.2.Econ|
0000bb80  65 74 0a 33 09 4e 65 78  75 73 00 00 44 41 54 41  |et.3.Nexus..DATA|
0000bb90  8d 00 00 00 45 63 6f 6e  65 74 5f 52 65 6c 65 61  |....Econet_Relea|
0000bba0  73 65 50 6f 72 74 20 20  28 26 34 30 30 31 32 29  |sePort  (&40012)|
0000bbb0  0a 23 50 61 72 65 6e 74  20 45 63 6f 6e 65 74 5f  |.#Parent Econet_|
0000bbc0  0a 3d 3e 09 52 30 20 3d  20 70 6f 72 74 20 6e 75  |.=>.R0 = port nu|
0000bbd0  6d 62 65 72 0a 0a 54 68  69 73 20 53 57 49 20 72  |mber..This SWI r|
0000bbe0  65 6c 65 61 73 65 73 20  61 20 70 6f 72 74 20 70  |eleases a port p|
0000bbf0  72 65 76 69 6f 75 73 6c  79 20 63 6c 61 69 6d 65  |reviously claime|
0000bc00  64 20 62 79 20 3c 45 63  6f 6e 65 74 5f 43 6c 61  |d by <Econet_Cla|
0000bc10  69 6d 50 6f 72 74 3e 2e  0a 00 00 00 44 41 54 41  |imPort>.....DATA|
0000bc20  f9 00 00 00 45 63 6f 6e  65 74 5f 41 6c 6c 6f 63  |....Econet_Alloc|
0000bc30  61 74 65 50 6f 72 74 20  20 28 26 34 30 30 31 33  |atePort  (&40013|
0000bc40  29 0a 23 50 61 72 65 6e  74 20 45 63 6f 6e 65 74  |).#Parent Econet|
0000bc50  5f 0a 3c 3d 09 52 30 20  3d 20 70 6f 72 74 20 6e  |_.<=.R0 = port n|
0000bc60  75 6d 62 65 72 0a 0a 54  68 69 73 20 53 57 49 20  |umber..This SWI |
0000bc70  61 73 6b 73 20 74 68 65  20 73 6f 66 74 77 61 72  |asks the softwar|
0000bc80  65 20 66 6f 72 20 61 20  75 6e 69 71 75 65 20 70  |e for a unique p|
0000bc90  6f 72 74 20 6e 75 6d 62  65 72 20 77 68 69 63 68  |ort number which|
0000bca0  20 68 61 73 20 6e 6f 74  20 62 65 65 6e 20 63 6c  | has not been cl|
0000bcb0  61 69 6d 65 64 20 6f 72  20 61 6c 6c 6f 63 61 74  |aimed or allocat|
0000bcc0  65 64 2e 20 57 68 65 6e  20 79 6f 75 20 68 61 76  |ed. When you hav|
0000bcd0  65 20 66 69 6e 69 73 68  65 64 20 77 69 74 68 20  |e finished with |
0000bce0  74 68 65 20 70 6f 72 74  2c 20 75 73 65 20 3c 45  |the port, use <E|
0000bcf0  63 6f 6e 65 74 5f 44 65  41 6c 6c 6f 63 61 74 65  |conet_DeAllocate|
0000bd00  50 6f 72 74 3e 20 74 6f  20 72 65 6c 65 61 73 65  |Port> to release|
0000bd10  20 69 74 2e 0a 00 00 00  44 41 54 41 96 00 00 00  | it.....DATA....|
0000bd20  45 63 6f 6e 65 74 5f 44  65 41 6c 6c 6f 63 61 74  |Econet_DeAllocat|
0000bd30  65 50 6f 72 74 20 20 28  26 34 30 30 31 34 29 0a  |ePort  (&40014).|
0000bd40  23 50 61 72 65 6e 74 20  45 63 6f 6e 65 74 5f 0a  |#Parent Econet_.|
0000bd50  3d 3e 09 52 30 20 3d 20  70 6f 72 74 20 6e 75 6d  |=>.R0 = port num|
0000bd60  62 65 72 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |ber..This SWI re|
0000bd70  6c 65 61 73 65 73 20 61  20 70 6f 72 74 20 70 72  |leases a port pr|
0000bd80  65 76 69 6f 75 73 6c 79  20 63 6c 61 69 6d 65 64  |eviously claimed|
0000bd90  20 75 73 69 6e 67 20 3c  45 63 6f 6e 65 74 5f 41  | using <Econet_A|
0000bda0  6c 6c 6f 63 61 74 65 50  6f 72 74 3e 2e 0a 00 00  |llocatePort>....|
0000bdb0  44 41 54 41 be 00 00 00  45 63 6f 6e 65 74 5f 43  |DATA....Econet_C|
0000bdc0  6c 61 69 6d 50 6f 72 74  20 20 28 26 34 30 30 31  |laimPort  (&4001|
0000bdd0  35 29 0a 23 50 61 72 65  6e 74 20 45 63 6f 6e 65  |5).#Parent Econe|
0000bde0  74 5f 0a 3d 3e 09 52 30  20 3d 20 70 6f 72 74 20  |t_.=>.R0 = port |
0000bdf0  6e 75 6d 62 65 72 0a 0a  54 68 69 73 20 53 57 49  |number..This SWI|
0000be00  20 63 6c 61 69 6d 73 20  61 20 73 70 65 63 69 66  | claims a specif|
0000be10  69 63 20 70 6f 72 74 20  6e 75 6d 62 65 72 2e 20  |ic port number. |
0000be20  57 68 65 6e 20 79 6f 75  20 68 61 76 65 20 66 69  |When you have fi|
0000be30  6e 69 73 68 65 64 20 77  69 74 68 20 74 68 65 20  |nished with the |
0000be40  70 6f 72 74 2c 20 75 73  65 20 3c 45 63 6f 6e 65  |port, use <Econe|
0000be50  74 5f 52 65 6c 65 61 73  65 50 6f 72 74 3e 20 74  |t_ReleasePort> t|
0000be60  6f 20 72 65 6c 65 61 73  65 20 69 74 2e 0a 00 00  |o release it....|
0000be70  44 41 54 41 07 02 00 00  45 63 6f 6e 65 74 5f 53  |DATA....Econet_S|
0000be80  74 61 72 74 49 6d 6d 65  64 69 61 74 65 20 20 28  |tartImmediate  (|
0000be90  26 34 30 30 31 36 29 0a  23 50 61 72 65 6e 74 20  |&40016).#Parent |
0000bea0  45 63 6f 6e 65 74 5f 0a  3d 3e 09 52 30 20 3d 20  |Econet_.=>.R0 = |
0000beb0  6f 70 65 72 61 74 69 6f  6e 20 74 79 70 65 0a 09  |operation type..|
0000bec0  52 31 20 3d 20 72 65 6d  6f 74 65 20 61 64 64 72  |R1 = remote addr|
0000bed0  65 73 73 2c 20 6f 72 20  70 72 6f 63 65 64 75 72  |ess, or procedur|
0000bee0  65 20 6e 75 6d 62 65 72  0a 09 52 32 20 3d 20 73  |e number..R2 = s|
0000bef0  74 61 74 69 6f 6e 20 6e  75 6d 62 65 72 0a 09 52  |tation number..R|
0000bf00  33 20 3d 20 6e 65 74 20  6e 75 6d 62 65 72 0a 09  |3 = net number..|
0000bf10  52 34 20 3d 20 64 61 74  61 20 62 75 66 66 65 72  |R4 = data buffer|
0000bf20  20 61 64 64 72 65 73 73  0a 09 52 35 20 3d 20 64  | address..R5 = d|
0000bf30  61 74 61 20 73 69 7a 65  0a 09 52 36 20 3d 20 63  |ata size..R6 = c|
0000bf40  6f 75 6e 74 0a 09 52 37  20 3d 20 64 65 6c 61 79  |ount..R7 = delay|
0000bf50  20 69 6e 20 63 73 0a 0a  3c 3d 09 52 30 20 3d 20  | in cs..<=.R0 = |
0000bf60  68 61 6e 64 6c 65 0a 09  52 31 20 63 6f 72 72 75  |handle..R1 corru|
0000bf70  70 74 65 64 0a 09 52 32  20 3d 20 62 75 66 66 65  |pted..R2 = buffe|
0000bf80  72 20 61 64 64 72 65 73  73 0a 09 52 33 20 3d 20  |r address..R3 = |
0000bf90  73 74 61 74 69 6f 6e 20  6e 75 6d 62 65 72 0a 09  |station number..|
0000bfa0  52 34 20 3d 20 6e 65 74  20 6e 75 6d 62 65 72 0a  |R4 = net number.|
0000bfb0  0a 54 68 69 73 20 53 57  49 20 6f 70 65 6e 73 20  |.This SWI opens |
0000bfc0  61 20 74 72 61 6e 73 6d  69 73 73 69 6f 6e 20 62  |a transmission b|
0000bfd0  6c 6f 63 6b 2c 20 61 6e  64 20 73 74 61 72 74 73  |lock, and starts|
0000bfe0  20 61 6e 20 69 6d 6d 65  64 69 61 74 65 20 6f 70  | an immediate op|
0000bff0  65 72 61 74 69 6f 6e 2e  20 54 68 65 20 64 61 74  |eration. The dat|
0000c000  61 20 62 75 66 66 65 72  20 73 68 6f 75 6c 64 20  |a buffer should |
0000c010  62 65 20 69 6e 20 52 4d  41 20 6f 72 20 73 6f 6d  |be in RMA or som|
0000c020  65 20 6f 74 68 65 72 20  70 65 72 6d 61 6e 65 6e  |e other permanen|
0000c030  74 6c 79 20 61 76 61 69  6c 61 62 6c 65 20 61 72  |tly available ar|
0000c040  65 61 20 6f 66 20 6d 65  6d 6f 72 79 2c 20 64 75  |ea of memory, du|
0000c050  65 20 74 6f 20 74 68 65  20 77 61 79 20 69 6e 20  |e to the way in |
0000c060  77 68 69 63 68 20 74 68  65 20 64 61 74 61 20 69  |which the data i|
0000c070  73 20 72 65 61 64 2e 00  44 49 52 24 2c 00 00 00  |s read..DIR$,...|
0000c080  2c 00 00 00 a4 c0 00 00  46 fd ff ff cd 4c c7 13  |,.......F....L..|
0000c090  df 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0000c0a0  74 00 00 00 44 41 54 41  df 00 00 00 45 75 63 6c  |t...DATA....Eucl|
0000c0b0  69 64 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |id.#Parent !Root|
0000c0c0  0a 23 50 72 65 66 69 78  20 45 75 63 6c 69 64 5f  |.#Prefix Euclid_|
0000c0d0  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
0000c0e0  32 0a 49 6e 69 74 69 61  6c 69 73 65 0a 44 72 61  |2.Initialise.Dra|
0000c0f0  77 0a 4c 6f 61 64 0a 53  61 76 65 0a 41 70 70 65  |w.Load.Save.Appe|
0000c100  6e 64 0a 46 69 6e 64 0a  43 72 65 61 74 65 0a 44  |nd.Find.Create.D|
0000c110  65 73 74 72 6f 79 0a 53  65 74 0a 53 68 6f 77 0a  |estroy.Set.Show.|
0000c120  49 6e 73 65 72 74 0a 44  65 6c 65 74 65 0a 54 72  |Insert.Delete.Tr|
0000c130  61 6e 73 6c 61 74 65 0a  5a 6f 6f 6d 0a 52 6f 74  |anslate.Zoom.Rot|
0000c140  61 74 65 0a 4c 69 73 74  0a 42 6f 75 6e 64 69 6e  |ate.List.Boundin|
0000c150  67 53 70 68 65 72 65 0a  43 6c 6f 73 65 44 6f 77  |gSphere.CloseDow|
0000c160  6e 0a 4d 69 73 63 4f 70  0a 43 6f 6d 70 72 65 73  |n.MiscOp.Compres|
0000c170  73 0a 45 78 70 61 6e 64  0a 23 45 6e 64 54 61 62  |s.Expand.#EndTab|
0000c180  6c 65 0a 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |le..DIR$,...,...|
0000c190  b0 c1 00 00 46 fd ff ff  0c 52 c7 13 a3 00 00 00  |....F....R......|
0000c1a0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0000c1b0  44 41 54 41 a3 00 00 00  46 69 6c 65 42 75 66 66  |DATA....FileBuff|
0000c1c0  65 72 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |er.#Parent !Root|
0000c1d0  0a 23 50 72 65 66 69 78  20 46 69 6c 65 42 75 66  |.#Prefix FileBuf|
0000c1e0  66 65 72 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |fer_.#Table Colu|
0000c1f0  6d 6e 73 20 32 0a 4f 70  65 6e 0a 43 6c 6f 73 65  |mns 2.Open.Close|
0000c200  0a 43 6c 65 61 72 0a 52  65 61 64 0a 52 65 61 64  |.Clear.Read.Read|
0000c210  42 79 74 65 0a 57 72 69  74 65 0a 57 72 69 74 65  |Byte.Write.Write|
0000c220  42 79 74 65 0a 52 65 61  64 50 54 52 0a 57 72 69  |Byte.ReadPTR.Wri|
0000c230  74 65 50 54 52 0a 54 61  73 6b 53 74 61 72 74 0a  |tePTR.TaskStart.|
0000c240  54 61 73 6b 51 75 69 74  0a 23 45 6e 64 54 61 62  |TaskQuit.#EndTab|
0000c250  6c 65 0a 00 44 49 52 24  d0 04 00 00 d0 04 00 00  |le..DIR$........|
0000c260  24 c7 00 00 46 fd ff ff  8e a3 a5 d7 ba 00 00 00  |$...F...........|
0000c270  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0000c280  e0 c7 00 00 46 fd ff ff  14 b4 a8 d7 23 04 00 00  |....F.......#...|
0000c290  13 00 00 00 00 00 00 00  44 69 73 63 4f 70 5f 66  |........DiscOp_f|
0000c2a0  6c 61 67 73 00 00 00 00  04 cc 00 00 46 fd ff ff  |lags........F...|
0000c2b0  33 01 a6 d7 3f 04 00 00  13 00 00 00 00 00 00 00  |3...?...........|
0000c2c0  44 69 73 63 00 00 00 00  44 d0 00 00 46 fd ff ff  |Disc....D...F...|
0000c2d0  74 e2 a7 d7 f4 02 00 00  13 00 00 00 00 00 00 00  |t...............|
0000c2e0  46 6f 72 6d 61 74 00 00  38 d3 00 00 46 fd ff ff  |Format..8...F...|
0000c2f0  65 f6 24 26 67 00 00 00  13 00 00 00 00 00 00 00  |e.$&g...........|
0000c300  64 69 73 63 61 64 64 72  65 73 73 00 a0 d3 00 00  |discaddress.....|
0000c310  46 ff ff ff 1c 57 a4 d7  52 07 00 00 13 00 00 00  |F....W..R.......|
0000c320  00 00 00 00 43 72 65 61  74 65 00 00 f4 da 00 00  |....Create......|
0000c330  46 fd ff ff 89 82 a4 d7  f8 02 00 00 13 00 00 00  |F...............|
0000c340  00 00 00 00 66 73 64 65  73 63 72 69 70 74 6f 72  |....fsdescriptor|
0000c350  00 00 00 00 ec dd 00 00  46 ff ff ff 82 b7 a4 d7  |........F.......|
0000c360  df 01 00 00 13 00 00 00  00 00 00 00 44 65 73 63  |............Desc|
0000c370  72 69 62 65 44 69 73 63  00 00 00 00 cc df 00 00  |ribeDisc........|
0000c380  46 ff ff ff 3b be a5 d7  b7 00 00 00 13 00 00 00  |F...;...........|
0000c390  00 00 00 00 44 69 73 63  61 72 64 52 65 61 64 53  |....DiscardReadS|
0000c3a0  65 63 74 6f 72 73 43 61  63 68 65 00 84 e0 00 00  |ectorsCache.....|
0000c3b0  46 ff ff ff 44 8f a6 d7  39 04 00 00 13 00 00 00  |F...D...9.......|
0000c3c0  00 00 00 00 44 69 73 63  46 6f 72 6d 61 74 00 00  |....DiscFormat..|
0000c3d0  c0 e4 00 00 46 fd ff ff  fd 04 a6 d7 ec 00 00 00  |....F...........|
0000c3e0  13 00 00 00 00 00 00 00  64 65 6e 73 69 74 69 65  |........densitie|
0000c3f0  73 00 00 00 ac e5 00 00  46 fd ff ff ee a1 a6 d7  |s.......F.......|
0000c400  7a 00 00 00 13 00 00 00  00 00 00 00 66 6f 72 6d  |z...........form|
0000c410  61 74 73 70 65 63 00 00  28 e6 00 00 46 fd ff ff  |atspec..(...F...|
0000c420  78 28 a7 d7 aa 01 00 00  13 00 00 00 00 00 00 00  |x(..............|
0000c430  44 69 73 63 4f 70 5f 72  65 61 73 6f 6e 00 00 00  |DiscOp_reason...|
0000c440  d4 e7 00 00 46 ff ff ff  c9 7a a9 d7 b7 00 00 00  |....F....z......|
0000c450  13 00 00 00 00 00 00 00  44 69 73 63 4f 70 00 00  |........DiscOp..|
0000c460  8c e8 00 00 46 fd ff ff  0f 2d a7 d7 b8 00 00 00  |....F....-......|
0000c470  13 00 00 00 00 00 00 00  44 69 73 63 4f 70 30 00  |........DiscOp0.|
0000c480  44 e9 00 00 46 fd ff ff  e6 34 a7 d7 f7 00 00 00  |D...F....4......|
0000c490  13 00 00 00 00 00 00 00  44 69 73 63 4f 70 31 00  |........DiscOp1.|
0000c4a0  3c ea 00 00 46 fd ff ff  c6 c6 a8 d7 7d 00 00 00  |<...F.......}...|
0000c4b0  13 00 00 00 00 00 00 00  44 69 73 63 4f 70 31 35  |........DiscOp15|
0000c4c0  00 00 00 00 bc ea 00 00  46 fd ff ff ba b0 a8 d7  |........F.......|
0000c4d0  fc 00 00 00 13 00 00 00  00 00 00 00 44 69 73 63  |............Disc|
0000c4e0  4f 70 32 00 b8 eb 00 00  46 fd ff ff b4 88 a7 d7  |Op2.....F.......|
0000c4f0  08 05 00 00 13 00 00 00  00 00 00 00 44 69 73 63  |............Disc|
0000c500  4f 70 33 00 c0 f0 00 00  46 fd ff ff b4 b8 a8 d7  |Op3.....F.......|
0000c510  5c 02 00 00 13 00 00 00  00 00 00 00 44 69 73 63  |\...........Disc|
0000c520  4f 70 34 00 1c f3 00 00  46 fd ff ff 29 bc a8 d7  |Op4.....F...)...|
0000c530  a6 00 00 00 13 00 00 00  00 00 00 00 44 69 73 63  |............Disc|
0000c540  4f 70 35 00 c4 f3 00 00  46 fd ff ff 2a c2 a8 d7  |Op5.....F...*...|
0000c550  7d 00 00 00 13 00 00 00  00 00 00 00 44 69 73 63  |}...........Disc|
0000c560  4f 70 36 00 44 f4 00 00  46 fd ff ff 5e bf a8 d7  |Op6.D...F...^...|
0000c570  e9 00 00 00 13 00 00 00  00 00 00 00 44 69 73 63  |............Disc|
0000c580  4f 70 37 2d 38 00 00 00  30 f5 00 00 46 fd ff ff  |Op7-8...0...F...|
0000c590  b0 62 a8 d7 b7 02 00 00  13 00 00 00 00 00 00 00  |.b..............|
0000c5a0  44 69 73 63 4f 70 39 00  e8 f7 00 00 46 ff ff ff  |DiscOp9.....F...|
0000c5b0  ce 80 a9 d7 f9 00 00 00  13 00 00 00 00 00 00 00  |................|
0000c5c0  44 72 69 76 65 73 00 00  e4 f8 00 00 46 ff ff ff  |Drives......F...|
0000c5d0  95 88 a9 d7 c4 02 00 00  13 00 00 00 00 00 00 00  |................|
0000c5e0  46 6c 6f 70 70 79 53 74  72 75 63 74 75 72 65 00  |FloppyStructure.|
0000c5f0  a8 fb 00 00 46 ff ff ff  a1 8e a9 d7 56 01 00 00  |....F.......V...|
0000c600  13 00 00 00 00 00 00 00  46 72 65 65 53 70 61 63  |........FreeSpac|
0000c610  65 00 00 00 00 fd 00 00  46 ff ff ff 75 67 a9 d7  |e.......F...ug..|
0000c620  2c 02 00 00 13 00 00 00  00 00 00 00 4c 61 79 6f  |,...........Layo|
0000c630  75 74 53 74 72 75 63 74  75 72 65 00 2c ff 00 00  |utStructure.,...|
0000c640  46 ff ff ff fa c4 a9 d7  28 01 00 00 13 00 00 00  |F.......(.......|
0000c650  00 00 00 00 4d 69 73 63  4f 70 00 00 54 00 01 00  |....MiscOp..T...|
0000c660  46 ff ff ff b6 c0 a9 d7  1f 01 00 00 13 00 00 00  |F...............|
0000c670  00 00 00 00 4d 69 73 63  4f 70 5f 72 65 61 73 6f  |....MiscOp_reaso|
0000c680  6e 00 00 00 74 01 01 00  46 ff ff ff f5 1a aa d7  |n...t...F.......|
0000c690  31 07 00 00 13 00 00 00  00 00 00 00 4d 69 73 63  |1...........Misc|
0000c6a0  4f 70 30 00 a8 08 01 00  46 ff ff ff 87 84 aa d7  |Op0.....F.......|
0000c6b0  01 04 00 00 13 00 00 00  00 00 00 00 4d 69 73 63  |............Misc|
0000c6c0  4f 70 31 00 ac 0c 01 00  46 ff ff ff be 48 ab d7  |Op1.....F....H..|
0000c6d0  66 01 00 00 13 00 00 00  00 00 00 00 4d 69 73 63  |f...........Misc|
0000c6e0  4f 70 32 00 14 0e 01 00  46 ff ff ff a1 3e ab d7  |Op2.....F....>..|
0000c6f0  dd 00 00 00 13 00 00 00  00 00 00 00 4d 69 73 63  |............Misc|
0000c700  4f 70 33 00 f4 0e 01 00  46 ff ff ff 0a 25 7f f5  |Op3.....F....%..|
0000c710  6a 02 00 00 13 00 00 00  00 00 00 00 6d 69 73 63  |j...........misc|
0000c720  6f 70 34 00 44 41 54 41  ba 00 00 00 46 69 6c 65  |op4.DATA....File|
0000c730  43 6f 72 65 0a 23 50 61  72 65 6e 74 20 21 52 6f  |Core.#Parent !Ro|
0000c740  6f 74 0a 23 50 72 65 66  69 78 20 46 69 6c 65 63  |ot.#Prefix Filec|
0000c750  6f 72 65 5f 0a 3c 43 72  65 61 74 65 3e 0a 3c 44  |ore_.<Create>.<D|
0000c760  65 73 63 72 69 62 65 44  69 73 63 3e 0a 3c 44 69  |escribeDisc>.<Di|
0000c770  73 63 61 72 64 52 65 61  64 53 65 63 74 6f 72 73  |scardReadSectors|
0000c780  43 61 63 68 65 3e 0a 3c  44 69 73 63 46 6f 72 6d  |Cache>.<DiscForm|
0000c790  61 74 3e 0a 3c 44 69 73  63 4f 70 3e 0a 3c 44 72  |at>.<DiscOp>.<Dr|
0000c7a0  69 76 65 73 3e 0a 3c 46  6c 6f 70 70 79 53 74 72  |ives>.<FloppyStr|
0000c7b0  75 63 74 75 72 65 3e 0a  3c 46 72 65 65 53 70 61  |ucture>.<FreeSpa|
0000c7c0  63 65 3e 0a 3c 4c 61 79  6f 75 74 53 74 72 75 63  |ce>.<LayoutStruc|
0000c7d0  74 75 72 65 3e 0a 3c 4d  69 73 63 4f 70 3e 00 00  |ture>.<MiscOp>..|
0000c7e0  44 41 54 41 23 04 00 00  46 69 6c 65 43 6f 72 65  |DATA#...FileCore|
0000c7f0  5f 44 69 73 63 4f 70 20  66 6c 61 67 73 0a 42 69  |_DiscOp flags.Bi|
0000c800  74 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 0a  |t.Meaning.#Line.|
0000c810  34 09 47 69 76 65 6e 20  61 6c 74 65 72 6e 61 74  |4.Given alternat|
0000c820  69 76 65 20 64 65 66 65  63 74 20 6c 69 73 74 0a  |ive defect list.|
0000c830  35 09 47 69 76 65 6e 20  3c 73 65 63 74 6f 72 20  |5.Given <sector |
0000c840  6c 69 73 74 3d 3e 2e 73  65 63 6c 69 73 74 3e 0a  |list=>.seclist>.|
0000c850  36 09 49 67 6e 6f 72 65  20 65 73 63 61 70 65 0a  |6.Ignore escape.|
0000c860  37 09 49 67 6e 6f 72 65  20 74 69 6d 65 6f 75 74  |7.Ignore timeout|
0000c870  0a 38 2d 33 31 09 50 6f  69 6e 74 65 72 20 74 6f  |.8-31.Pointer to|
0000c880  20 3c 61 6c 74 65 72 6e  61 74 69 76 65 20 72 65  | <alternative re|
0000c890  63 6f 72 64 3d 3e 46 69  6c 65 43 6f 72 65 5f 44  |cord=>FileCore_D|
0000c8a0  69 73 63 3e 20 28 73 68  69 66 74 65 64 20 64 6f  |isc> (shifted do|
0000c8b0  77 6e 20 74 77 69 63 65  29 0a 0a 4e 6f 74 65 20  |wn twice)..Note |
0000c8c0  74 68 61 74 20 74 68 65  20 61 6c 74 65 72 6e 61  |that the alterna|
0000c8d0  74 69 76 65 20 72 65 63  6f 72 64 20 69 73 20 f7  |tive record is .|
0000c8e0  20 34 20 73 6f 20 74 68  61 74 20 69 74 73 20 4c  | 4 so that its L|
0000c8f0  53 42 20 69 73 20 61 63  74 75 61 6c 6c 79 20 62  |SB is actually b|
0000c900  69 74 20 36 2c 20 62 75  74 20 62 65 63 61 75 73  |it 6, but becaus|
0000c910  65 20 69 74 20 6d 75 73  74 20 62 65 20 77 6f 72  |e it must be wor|
0000c920  64 20 61 6c 69 67 6e 65  64 20 74 68 65 20 72 65  |d aligned the re|
0000c930  61 6c 20 4c 53 42 20 69  73 20 62 69 74 20 38 2e  |al LSB is bit 8.|
0000c940  0a 23 53 75 62 70 61 67  65 20 73 65 63 6c 69 73  |.#Subpage seclis|
0000c950  74 0a 55 73 65 20 73 65  63 74 6f 72 20 6c 69 73  |t.Use sector lis|
0000c960  74 0a 57 68 65 6e 20 62  69 74 20 35 20 69 73 20  |t.When bit 5 is |
0000c970  73 65 74 2c 20 74 68 65  20 6d 65 61 6e 69 6e 67  |set, the meaning|
0000c980  20 6f 66 20 52 33 20 28  6d 65 6d 6f 72 79 20 61  | of R3 (memory a|
0000c990  64 64 72 65 73 73 29 20  69 73 20 61 6c 74 65 72  |ddress) is alter|
0000c9a0  65 64 2e 20 49 74 20 64  6f 65 73 6e 27 74 20 70  |ed. It doesn't p|
0000c9b0  6f 69 6e 74 20 74 6f 20  74 68 65 20 61 72 65 61  |oint to the area|
0000c9c0  20 6f 66 20 52 41 4d 20  74 6f 20 6f 72 20 66 72  | of RAM to or fr|
0000c9d0  6f 6d 20 77 68 69 63 68  20 74 68 65 20 64 69 73  |om which the dis|
0000c9e0  63 20 64 61 74 61 20 69  73 20 74 6f 20 62 65 20  |c data is to be |
0000c9f0  74 72 61 6e 73 66 65 72  72 65 64 2e 20 49 6e 73  |transferred. Ins|
0000ca00  74 65 61 64 2c 20 69 74  20 70 6f 69 6e 74 73 20  |tead, it points |
0000ca10  74 6f 20 61 20 77 6f 72  64 2d 61 6c 69 67 6e 65  |to a word-aligne|
0000ca20  64 20 6c 69 73 74 20 6f  66 20 6d 65 6d 6f 72 79  |d list of memory|
0000ca30  20 61 64 64 72 65 73 73  2f 6c 65 6e 67 74 68 20  | address/length |
0000ca40  70 61 69 72 73 2e 20 41  6c 6c 20 62 75 74 20 74  |pairs. All but t|
0000ca50  68 65 20 6c 61 73 74 20  6f 66 20 74 68 65 73 65  |he last of these|
0000ca60  20 6c 65 6e 67 74 68 73  20 6d 75 73 74 20 62 65  | lengths must be|
0000ca70  20 61 20 6d 75 6c 74 69  70 6c 65 20 6f 66 20 74  | a multiple of t|
0000ca80  68 65 20 73 65 63 74 6f  72 20 73 69 7a 65 2e 20  |he sector size. |
0000ca90  54 68 65 73 65 20 77 6f  72 64 2d 70 61 69 72 73  |These word-pairs|
0000caa0  20 61 72 65 20 75 73 65  64 20 66 6f 72 20 74 68  | are used for th|
0000cab0  65 20 74 72 61 6e 73 66  65 72 20 75 6e 74 69 6c  |e transfer until|
0000cac0  20 74 68 65 20 74 6f 74  61 6c 20 6e 75 6d 62 65  | the total numbe|
0000cad0  72 20 6f 66 20 62 79 74  65 73 20 67 69 76 65 6e  |r of bytes given|
0000cae0  20 69 6e 20 52 34 20 68  61 73 20 62 65 65 6e 20  | in R4 has been |
0000caf0  74 72 61 6e 73 66 65 72  72 65 64 2e 0a 0a 4f 6e  |transferred...On|
0000cb00  20 65 78 69 74 2c 20 52  33 20 70 6f 69 6e 74 73  | exit, R3 points|
0000cb10  20 74 6f 20 74 68 65 20  66 69 72 73 74 20 70 61  | to the first pa|
0000cb20  69 72 20 77 68 69 63 68  20 77 61 73 6e 27 74 20  |ir which wasn't |
0000cb30  66 75 6c 6c 79 20 75 73  65 64 2c 20 61 6e 64 20  |fully used, and |
0000cb40  74 68 69 73 20 70 61 69  72 20 69 73 20 75 70 64  |this pair is upd|
0000cb50  61 74 65 64 20 74 6f 20  72 65 66 6c 65 63 74 20  |ated to reflect |
0000cb60  74 68 65 20 6e 65 77 20  73 74 61 72 74 20 61 64  |the new start ad|
0000cb70  64 72 65 73 73 2f 62 79  74 65 73 20 72 65 6d 61  |dress/bytes rema|
0000cb80  69 6e 69 6e 67 2c 20 73  6f 20 74 68 61 74 20 61  |ining, so that a|
0000cb90  20 73 75 62 73 65 71 75  65 6e 74 20 63 61 6c 6c  | subsequent call|
0000cba0  20 77 6f 75 6c 64 20 63  6f 6e 74 69 6e 75 65 20  | would continue |
0000cbb0  66 72 6f 6d 20 77 68 65  72 65 20 74 68 69 73 20  |from where this |
0000cbc0  63 61 6c 6c 20 68 61 73  20 66 69 6e 69 73 68 65  |call has finishe|
0000cbd0  64 2e 0a 0a 54 68 69 73  20 62 69 74 20 6d 61 79  |d...This bit may|
0000cbe0  20 6f 6e 6c 79 20 62 65  20 73 65 74 20 66 6f 72  | only be set for|
0000cbf0  20 72 65 61 73 6f 6d 20  63 6f 64 65 73 20 30 2d  | reasom codes 0-|
0000cc00  32 2e 0a 00 44 41 54 41  3f 04 00 00 46 69 6c 65  |2...DATA?...File|
0000cc10  43 6f 72 65 20 64 69 73  63 20 64 65 73 63 72 69  |Core disc descri|
0000cc20  70 74 6f 72 0a 4f 66 66  73 65 74 09 4e 61 6d 65  |ptor.Offset.Name|
0000cc30  09 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 0a  |..Meaning.#Line.|
0000cc40  30 09 6c 6f 67 32 73 65  63 73 69 7a 65 09 4c 6f  |0.log2secsize.Lo|
0000cc50  67 32 20 6f 66 20 73 65  63 74 6f 72 20 73 69 7a  |g2 of sector siz|
0000cc60  65 20 28 53 65 63 74 6f  72 20 73 69 7a 65 20 3d  |e (Sector size =|
0000cc70  20 32 5e 78 29 0a 31 09  73 65 63 73 70 65 72 74  | 2^x).1.secspert|
0000cc80  72 61 63 6b 09 6e 75 6d  62 65 72 20 6f 66 20 73  |rack.number of s|
0000cc90  65 63 74 6f 72 73 20 70  65 72 20 74 72 61 63 6b  |ectors per track|
0000cca0  0a 32 09 68 65 61 64 73  09 09 6e 75 6d 62 65 72  |.2.heads..number|
0000ccb0  20 6f 66 20 64 69 73 63  20 68 65 61 64 73 2c 20  | of disc heads, |
0000ccc0  69 66 20 69 6e 74 65 72  6c 65 61 76 65 64 20 6f  |if interleaved o|
0000ccd0  74 68 65 72 77 69 73 65  20 2d 31 20 28 31 20 66  |therwise -1 (1 f|
0000cce0  6f 72 20 6f 6c 64 20 64  69 72 65 63 74 6f 72 69  |or old directori|
0000ccf0  65 73 29 0a 33 09 64 65  6e 73 69 74 79 09 09 3c  |es).3.density..<|
0000cd00  64 69 73 63 20 64 65 6e  73 69 74 79 3d 3e 46 69  |disc density=>Fi|
0000cd10  6c 65 43 6f 72 65 5f 64  65 6e 73 69 74 69 65 73  |leCore_densities|
0000cd20  3e 0a 34 09 69 64 6c 65  6e 09 09 6c 65 6e 67 74  |>.4.idlen..lengt|
0000cd30  68 20 6f 66 20 69 64 20  66 69 65 6c 64 20 6f 66  |h of id field of|
0000cd40  20 61 20 6d 61 70 20 66  72 61 67 6d 65 6e 74 20  | a map fragment |
0000cd50  28 69 6e 20 62 69 74 73  29 0a 35 09 6c 6f 67 32  |(in bits).5.log2|
0000cd60  62 70 6d 70 09 6c 6f 67  32 20 6f 66 20 6e 75 6d  |bpmp.log2 of num|
0000cd70  62 65 72 20 6f 66 20 62  79 74 65 73 20 70 65 72  |ber of bytes per|
0000cd80  20 6d 61 70 20 62 69 74  73 0a 36 09 73 6b 65 77  | map bits.6.skew|
0000cd90  09 09 74 72 61 63 6b 20  74 6f 20 74 72 61 63 6b  |..track to track|
0000cda0  20 73 65 63 74 6f 72 20  73 6b 65 77 20 66 6f 72  | sector skew for|
0000cdb0  20 72 61 6e 64 6f 6d 20  61 63 63 65 73 73 20 66  | random access f|
0000cdc0  69 6c 65 20 61 6c 6c 6f  63 61 74 69 6f 6e 0a 37  |ile allocation.7|
0000cdd0  09 62 6f 6f 74 6f 70 74  69 6f 6e 09 62 6f 6f 74  |.bootoption.boot|
0000cde0  20 6f 70 74 69 6f 6e 20  28 61 73 20 69 6e 20 2a  | option (as in *|
0000cdf0  4f 70 74 20 34 2c 6e 29  0a 38 09 6c 6f 77 73 65  |Opt 4,n).8.lowse|
0000ce00  63 74 6f 72 09 6c 6f 77  65 73 74 20 6e 75 6d 62  |ctor.lowest numb|
0000ce10  65 72 65 64 20 73 65 63  74 6f 72 20 2b 20 3c 64  |ered sector + <d|
0000ce20  69 73 63 20 66 6c 61 67  73 3d 3e 2e 66 6c 61 67  |isc flags=>.flag|
0000ce30  73 3e 0a 39 09 6e 7a 6f  6e 65 73 09 09 6e 75 6d  |s>.9.nzones..num|
0000ce40  62 65 72 20 6f 66 20 7a  6f 6e 65 73 20 69 6e 20  |ber of zones in |
0000ce50  74 68 65 20 6d 61 70 0a  41 2d 42 09 7a 6f 6e 65  |the map.A-B.zone|
0000ce60  5f 73 70 61 72 65 09 6e  75 6d 62 65 72 20 6f 66  |_spare.number of|
0000ce70  20 6e 6f 6e 2d 61 6c 6c  6f 63 61 74 69 6f 6e 20  | non-allocation |
0000ce80  62 69 74 73 20 62 65 74  77 65 65 6e 20 7a 6f 6e  |bits between zon|
0000ce90  65 73 0a 43 2d 46 09 72  6f 6f 74 09 09 64 69 73  |es.C-F.root..dis|
0000cea0  63 20 61 64 64 72 65 73  73 20 6f 66 20 72 6f 6f  |c address of roo|
0000ceb0  74 20 64 69 72 65 63 74  6f 72 79 0a 31 30 2d 31  |t directory.10-1|
0000cec0  33 09 64 69 73 63 5f 73  69 7a 65 09 64 69 73 63  |3.disc_size.disc|
0000ced0  20 73 69 7a 65 20 69 6e  20 62 79 74 65 73 0a 31  | size in bytes.1|
0000cee0  34 2d 31 35 09 64 69 73  63 5f 69 64 09 09 64 69  |4-15.disc_id..di|
0000cef0  73 63 20 63 79 63 6c 65  20 69 64 0a 31 36 2d 31  |sc cycle id.16-1|
0000cf00  46 09 64 69 73 63 5f 6e  61 6d 65 09 64 69 73 63  |F.disc_name.disc|
0000cf10  20 6e 61 6d 65 20 28 73  70 61 63 65 64 20 74 6f  | name (spaced to|
0000cf20  20 31 30 20 63 68 61 72  73 2c 20 6e 6f 20 74 65  | 10 chars, no te|
0000cf30  72 6d 69 6e 61 74 6f 72  29 0a 32 30 2d 32 33 09  |rminator).20-23.|
0000cf40  64 69 73 63 74 79 70 65  09 3c 66 69 6c 65 74 79  |disctype.<filety|
0000cf50  70 65 20 67 69 76 65 6e  20 74 6f 20 64 69 73 63  |pe given to disc|
0000cf60  3d 3e 46 69 6c 65 74 79  70 65 73 3a 21 52 6f 6f  |=>Filetypes:!Roo|
0000cf70  74 3e 0a 32 34 2d 33 46  09 20 09 09 72 65 73 65  |t>.24-3F. ..rese|
0000cf80  72 76 65 64 2c 20 6d 75  73 74 20 62 65 20 30 0a  |rved, must be 0.|
0000cf90  23 73 75 62 70 61 67 65  20 66 6c 61 67 73 0a 44  |#subpage flags.D|
0000cfa0  69 73 63 20 64 65 73 63  72 69 70 74 69 6f 6e 20  |isc description |
0000cfb0  66 6c 61 67 73 0a 62 69  74 73 09 4d 65 61 6e 69  |flags.bits.Meani|
0000cfc0  6e 67 0a 23 6c 69 6e 65  0a 30 2d 35 09 6c 6f 77  |ng.#line.0-5.low|
0000cfd0  65 73 74 20 6e 75 6d 62  65 72 65 64 20 73 65 63  |est numbered sec|
0000cfe0  74 6f 72 20 69 64 20 6f  6e 20 61 20 74 72 61 63  |tor id on a trac|
0000cff0  6b 0a 36 09 69 66 20 73  65 74 2c 20 74 72 65 61  |k.6.if set, trea|
0000d000  74 20 73 69 64 65 73 20  61 73 20 61 20 73 65 71  |t sides as a seq|
0000d010  75 65 6e 63 65 20 28 6e  6f 74 20 69 6e 74 65 72  |uence (not inter|
0000d020  6c 65 61 76 65 64 29 0a  37 09 69 66 20 73 65 74  |leaved).7.if set|
0000d030  2c 20 64 69 73 63 20 69  73 20 34 30 20 74 72 61  |, disc is 40 tra|
0000d040  63 6b 0a 00 44 41 54 41  f4 02 00 00 44 69 73 63  |ck..DATA....Disc|
0000d050  20 66 6f 72 6d 61 74 20  62 6c 6f 63 6b 0a 4f 66  | format block.Of|
0000d060  66 73 65 74 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |fset.Meaning.#Li|
0000d070  6e 65 0a 30 09 53 65 63  74 6f 72 20 73 69 7a 65  |ne.0.Sector size|
0000d080  0a 34 09 47 61 70 20 31  20 73 69 64 65 20 30 0a  |.4.Gap 1 side 0.|
0000d090  38 09 47 61 70 20 31 20  73 69 64 65 20 31 0a 43  |8.Gap 1 side 1.C|
0000d0a0  09 47 61 70 20 33 0a 31  30 09 53 65 63 74 6f 72  |.Gap 3.10.Sector|
0000d0b0  73 20 70 65 72 20 74 72  61 63 6b 0a 31 31 09 3c  |s per track.11.<|
0000d0c0  44 65 6e 73 69 74 79 3d  3e 46 69 6c 65 43 6f 72  |Density=>FileCor|
0000d0d0  65 5f 64 65 6e 73 69 74  69 65 73 3e 0a 31 32 09  |e_densities>.12.|
0000d0e0  3c 4f 70 74 69 6f 6e 73  3d 3e 2e 6f 70 74 69 6f  |<Options=>.optio|
0000d0f0  6e 73 3e 0a 31 33 09 53  74 61 72 74 20 73 65 63  |ns>.13.Start sec|
0000d100  74 6f 72 20 6f 6e 20 61  20 74 72 61 63 6b 0a 31  |tor on a track.1|
0000d110  34 09 53 65 63 74 6f 72  20 69 6e 74 65 72 6c 65  |4.Sector interle|
0000d120  61 76 65 0a 31 35 09 53  69 64 65 2f 73 69 64 65  |ave.15.Side/side|
0000d130  20 73 65 63 74 6f 72 20  73 6b 65 77 20 28 73 69  | sector skew (si|
0000d140  67 6e 65 64 29 0a 31 36  09 54 72 61 63 6b 2f 74  |gned).16.Track/t|
0000d150  72 61 63 6b 20 73 65 63  74 6f 72 20 73 6b 65 77  |rack sector skew|
0000d160  20 28 73 69 67 6e 65 64  29 0a 31 37 09 53 65 63  | (signed).17.Sec|
0000d170  74 6f 72 20 66 69 6c 6c  20 76 61 6c 75 65 0a 31  |tor fill value.1|
0000d180  38 09 4e 75 6d 62 65 72  20 6f 66 20 74 72 61 63  |8.Number of trac|
0000d190  6b 73 20 74 6f 20 66 6f  72 6d 61 74 20 28 69 65  |ks to format (ie|
0000d1a0  20 63 79 6c 69 6e 64 65  72 73 2f 64 72 69 76 65  | cylinders/drive|
0000d1b0  3a 20 75 73 75 61 6c 6c  79 20 38 30 29 0a 31 43  |: usually 80).1C|
0000d1c0  2d 32 33 09 52 65 73 65  72 76 65 64 2c 20 6d 75  |-23.Reserved, mu|
0000d1d0  73 74 20 62 65 20 30 0a  32 34 09 73 65 63 74 6f  |st be 0.24.secto|
0000d1e0  72 20 69 64 20 62 75 66  66 65 72 2c 20 31 20 77  |r id buffer, 1 w|
0000d1f0  6f 72 64 2f 73 65 63 74  6f 72 0a 09 62 69 74 73  |ord/sector..bits|
0000d200  09 20 30 2d 37 09 43 79  6c 69 6e 64 65 72 20 6e  |. 0-7.Cylinder n|
0000d210  75 6d 62 65 72 20 6d 6f  64 20 32 35 36 0a 09 20  |umber mod 256.. |
0000d220  09 20 38 2d 31 35 09 48  65 61 64 20 28 30 20 6f  |. 8-15.Head (0 o|
0000d230  6e 77 61 72 64 73 29 0a  09 20 09 31 36 2d 32 33  |nwards).. .16-23|
0000d240  09 53 65 63 74 6f 72 20  6e 75 6d 62 65 72 0a 09  |.Sector number..|
0000d250  20 09 32 34 2d 33 31 09  6c 6f 67 32 28 73 65 63  | .24-31.log2(sec|
0000d260  74 6f 72 20 73 69 7a 65  29 2d 37 0a 23 73 75 62  |tor size)-7.#sub|
0000d270  70 61 67 65 20 6f 70 74  69 6f 6e 73 0a 46 6f 72  |page options.For|
0000d280  6d 61 74 20 6f 70 74 69  6f 6e 73 0a 62 69 74 09  |mat options.bit.|
0000d290  6d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |meaning.#Line.0.|
0000d2a0  69 6e 64 65 78 20 6d 61  72 6b 20 72 65 71 75 69  |index mark requi|
0000d2b0  72 65 64 0a 31 09 64 6f  75 62 6c 65 20 73 74 65  |red.1.double ste|
0000d2c0  70 0a 32 2d 33 09 30 20  3d 20 69 6e 74 65 72 6c  |p.2-3.0 = interl|
0000d2d0  65 61 76 65 64 20 73 69  64 65 0a 09 31 20 3d 20  |eaved side..1 = |
0000d2e0  66 6f 72 6d 61 74 20 73  69 64 65 20 31 20 6f 6e  |format side 1 on|
0000d2f0  6c 79 0a 09 32 20 3d 20  66 6f 72 6d 61 74 20 73  |ly..2 = format s|
0000d300  69 64 65 20 32 20 6f 6e  6c 79 0a 09 33 20 3d 20  |ide 2 only..3 = |
0000d310  73 65 71 75 65 6e 63 65  64 20 73 69 64 65 73 0a  |sequenced sides.|
0000d320  34 2d 37 09 72 65 73 65  72 76 65 64 2c 20 6d 75  |4-7.reserved, mu|
0000d330  73 74 20 62 65 20 30 0a  44 41 54 41 67 00 00 00  |st be 0.DATAg...|
0000d340  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 20  |FileCore_DiscOp |
0000d350  61 64 64 72 65 73 73 0a  42 69 74 09 4d 65 61 6e  |address.Bit.Mean|
0000d360  69 6e 67 0a 23 4c 69 6e  65 0a 30 2d 32 38 09 44  |ing.#Line.0-28.D|
0000d370  69 73 63 20 61 64 64 72  65 73 73 20 6f 66 66 73  |isc address offs|
0000d380  65 74 20 69 6e 20 62 79  74 65 73 0a 32 39 2d 33  |et in bytes.29-3|
0000d390  31 09 44 72 69 76 65 20  6e 75 6d 62 65 72 0a 00  |1.Drive number..|
0000d3a0  44 41 54 41 52 07 00 00  46 69 6c 65 43 6f 72 65  |DATAR...FileCore|
0000d3b0  5f 43 72 65 61 74 65 20  28 26 34 30 35 34 31 29  |_Create (&40541)|
0000d3c0  0a 23 50 61 72 65 6e 74  20 46 69 6c 65 63 6f 72  |.#Parent Filecor|
0000d3d0  65 5f 0a 3d 3e 09 52 30  20 3d 09 70 6f 69 6e 74  |e_.=>.R0 =.point|
0000d3e0  65 72 20 74 6f 20 3c 64  65 73 63 72 69 70 74 6f  |er to <descripto|
0000d3f0  72 20 62 6c 6f 63 6b 3d  3e 46 69 6c 65 43 6f 72  |r block=>FileCor|
0000d400  65 5f 66 73 64 65 73 63  72 69 70 74 6f 72 3e 0a  |e_fsdescriptor>.|
0000d410  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
0000d420  20 63 61 6c 6c 69 6e 67  20 6d 6f 64 75 6c 65 27  | calling module'|
0000d430  73 20 62 61 73 65 0a 09  52 32 20 3d 09 70 6f 69  |s base..R2 =.poi|
0000d440  6e 74 65 72 20 74 6f 20  63 61 6c 6c 69 6e 67 20  |nter to calling |
0000d450  6d 6f 64 75 6c 65 27 73  20 70 72 69 76 61 74 65  |module's private|
0000d460  20 77 6f 72 64 0a 09 52  33 20 20 09 20 20 20 62  | word..R3  .   b|
0000d470  69 74 73 20 20 30 20 2d  20 20 37 20 20 6e 75 6d  |its  0 -  7  num|
0000d480  62 65 72 20 6f 66 20 66  6c 6f 70 70 69 65 73 0a  |ber of floppies.|
0000d490  09 20 09 20 20 20 20 20  20 20 20 20 38 20 2d 20  |. .         8 - |
0000d4a0  31 35 20 20 6e 75 6d 62  65 72 20 6f 66 20 68 61  |15  number of ha|
0000d4b0  72 64 64 69 73 63 73 0a  09 20 09 20 20 20 20 20  |rddiscs.. .     |
0000d4c0  20 20 20 31 36 20 2d 20  32 34 20 20 64 65 66 61  |   16 - 24  defa|
0000d4d0  75 6c 74 20 64 72 69 76  65 0a 09 20 09 20 20 20  |ult drive.. .   |
0000d4e0  20 20 20 20 20 32 35 20  2d 20 33 31 20 20 73 74  |     25 - 31  st|
0000d4f0  61 72 74 20 75 70 20 6f  70 74 69 6f 6e 73 0a 09  |art up options..|
0000d500  52 34 20 3d 09 73 75 67  67 65 73 74 65 64 20 73  |R4 =.suggested s|
0000d510  69 7a 65 20 66 6f 20 64  69 72 65 63 74 6f 72 79  |ize fo directory|
0000d520  20 63 61 63 68 65 0a 09  52 35 20 3d 09 73 75 67  | cache..R5 =.sug|
0000d530  67 65 73 74 65 64 20 6e  75 6d 62 65 72 20 6f 66  |gested number of|
0000d540  20 31 30 37 32 20 62 79  74 65 20 62 75 66 66 65  | 1072 byte buffe|
0000d550  72 73 20 6f 72 20 66 69  6c 65 20 63 61 63 68 65  |rs or file cache|
0000d560  0a 09 52 36 20 3d 09 68  61 72 64 20 64 69 73 63  |..R6 =.hard disc|
0000d570  20 6d 61 70 20 73 69 7a  65 73 0a 0a 3c 3d 09 52  | map sizes..<=.R|
0000d580  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 46  |0 =.pointer to F|
0000d590  69 6c 65 43 6f 72 65 20  69 6e 73 74 61 6e 63 65  |ileCore instance|
0000d5a0  20 70 72 69 76 61 74 65  20 77 6f 72 64 0a 09 52  | private word..R|
0000d5b0  31 20 3d 09 61 64 64 72  65 73 73 20 74 6f 20 63  |1 =.address to c|
0000d5c0  61 6c 6c 20 61 66 74 65  72 20 63 6f 6d 70 6c 65  |all after comple|
0000d5d0  74 69 6e 67 20 62 61 63  6b 67 72 6f 75 6e 64 20  |ting background |
0000d5e0  66 6c 6f 70 70 79 20 6f  70 0a 09 52 32 20 3d 09  |floppy op..R2 =.|
0000d5f0  61 64 64 72 65 73 73 20  74 6f 20 63 61 6c 6c 20  |address to call |
0000d600  61 66 74 65 72 20 63 6f  6d 70 6c 65 74 69 6e 67  |after completing|
0000d610  20 62 61 63 6b 67 72 6f  75 6e 64 20 68 61 72 64  | background hard|
0000d620  20 64 69 73 63 20 6f 70  0a 09 52 33 20 3d 09 61  | disc op..R3 =.a|
0000d630  64 64 72 65 73 73 20 74  6f 20 63 61 6c 6c 20 74  |ddress to call t|
0000d640  6f 20 72 65 6c 65 61 73  65 20 46 49 51 20 61 66  |o release FIQ af|
0000d650  74 65 72 20 6c 6f 77 20  6c 65 76 65 6c 20 6f 70  |ter low level op|
0000d660  0a 0a 54 68 69 73 20 63  61 6c 6c 20 63 72 65 61  |..This call crea|
0000d670  74 65 73 20 61 20 6e 65  77 20 69 6e 73 74 61 6e  |tes a new instan|
0000d680  74 69 61 74 69 6f 6e 20  6f 66 20 61 6e 20 41 44  |tiation of an AD|
0000d690  46 53 20 6c 69 6b 65 20  66 69 6c 69 6e 67 20 73  |FS like filing s|
0000d6a0  79 73 74 65 6d 2e 20 49  74 20 6d 75 73 74 20 62  |ystem. It must b|
0000d6b0  65 20 63 61 6c 6c 65 64  20 6f 6e 20 69 6e 69 74  |e called on init|
0000d6c0  69 61 6c 69 73 61 74 69  6f 6e 20 62 79 20 61 6e  |ialisation by an|
0000d6d0  79 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |y filing system |
0000d6e0  6d 6f 64 75 6c 65 20 74  68 61 74 20 69 73 20 61  |module that is a|
0000d6f0  64 64 69 6e 67 20 69 74  73 65 6c 66 20 74 6f 20  |dding itself to |
0000d700  46 69 6c 65 43 6f 72 65  2e 0a 0a 54 68 65 20 6f  |FileCore...The o|
0000d710  6e 6c 79 20 73 74 61 72  74 20 75 70 20 6f 70 74  |nly start up opt|
0000d720  69 6f 6e 20 63 75 72 72  65 6e 74 6c 79 20 73 75  |ion currently su|
0000d730  70 70 6f 72 74 65 64 20  69 73 20 27 4e 6f 20 64  |pported is 'No d|
0000d740  69 72 65 63 74 6f 72 79  20 73 74 61 74 65 27 20  |irectory state' |
0000d750  77 68 69 63 68 20 69 73  20 69 6e 64 69 63 61 74  |which is indicat|
0000d760  65 64 20 62 79 20 73 65  74 74 69 6e 67 20 62 69  |ed by setting bi|
0000d770  74 20 33 30 2e 20 41 6c  6c 20 6f 74 68 65 72 20  |t 30. All other |
0000d780  62 69 74 73 20 72 65 70  72 65 73 65 6e 74 69 6e  |bits representin|
0000d790  67 20 73 74 61 72 74 20  75 70 20 6f 70 74 69 6f  |g start up optio|
0000d7a0  6e 73 20 6d 75 73 74 20  62 65 20 63 6c 65 61 72  |ns must be clear|
0000d7b0  2e 0a 0a 49 66 20 74 68  65 20 66 69 6c 69 6e 67  |...If the filing|
0000d7c0  20 73 79 73 74 65 6d 20  64 6f 65 73 6e 27 74 20  | system doesn't |
0000d7d0  73 75 70 70 6f 72 74 20  62 61 63 6b 67 72 6f 75  |support backgrou|
0000d7e0  6e 64 20 74 72 61 6e 73  66 65 72 20 6f 66 20 64  |nd transfer of d|
0000d7f0  61 74 61 2c 20 52 35 20  6d 75 73 74 20 62 65 20  |ata, R5 must be |
0000d800  7a 65 72 6f 2e 0a 0a 54  68 65 20 68 61 72 64 20  |zero...The hard |
0000d810  64 69 73 63 20 6d 61 70  20 73 69 7a 65 20 61 72  |disc map size ar|
0000d820  65 20 67 69 76 65 6e 20  75 73 69 6e 67 20 31 20  |e given using 1 |
0000d830  62 79 74 65 20 66 6f 72  20 65 61 63 68 20 64 69  |byte for each di|
0000d840  73 63 2c 20 77 69 74 68  20 64 72 69 76 65 20 34  |sc, with drive 4|
0000d850  20 69 6e 20 74 68 65 20  6c 6f 77 20 62 79 74 65  | in the low byte|
0000d860  2c 20 61 6e 64 20 64 72  69 76 65 20 37 20 69 6e  |, and drive 7 in|
0000d870  20 74 68 65 20 68 69 67  68 20 62 79 74 65 2e 20  | the high byte. |
0000d880  54 68 65 20 62 79 74 65  20 73 68 6f 75 6c 64 20  |The byte should |
0000d890  63 6f 6e 74 61 69 6e 20  27 6d 61 70 20 73 69 7a  |contain 'map siz|
0000d8a0  65 27 2f 32 35 36 20 28  69 65 20 32 20 66 6f 72  |e'/256 (ie 2 for|
0000d8b0  20 74 68 65 20 6f 6c 64  20 6d 61 70 29 2e 20 54  | the old map). T|
0000d8c0  68 69 73 20 69 73 20 6a  75 73 74 20 61 20 67 6f  |his is just a go|
0000d8d0  6f 64 20 67 75 65 73 73  20 61 6e 64 20 73 68 6f  |od guess and sho|
0000d8e0  75 6c 64 6e 27 74 20 69  6e 76 6f 6c 76 65 20 73  |uldn't involve s|
0000d8f0  74 61 72 74 69 6e 67 20  75 70 20 74 68 65 20 64  |tarting up the d|
0000d900  72 69 76 65 73 20 74 6f  20 72 65 61 64 20 66 72  |rives to read fr|
0000d910  6f 6d 20 74 68 65 6d 2e  20 59 6f 75 20 6d 69 67  |om them. You mig|
0000d920  68 74 20 73 74 6f 72 65  20 74 68 69 73 20 69 6e  |ht store this in|
0000d930  20 74 68 65 20 3c 43 4d  4f 53 20 52 41 4d 3d 3e  | the <CMOS RAM=>|
0000d940  4f 53 5f 42 79 74 65 43  6d 6f 73 3e 2e 0a 0a 59  |OS_ByteCmos>...Y|
0000d950  6f 75 20 6d 75 73 74 20  73 74 6f 72 65 20 74 68  |ou must store th|
0000d960  65 20 46 69 6c 65 43 6f  72 65 20 69 6e 73 74 61  |e FileCore insta|
0000d970  6e 63 65 20 70 72 69 76  61 74 65 20 77 6f 72 64  |nce private word|
0000d980  20 72 65 74 75 72 6e 65  64 20 62 79 20 74 68 69  | returned by thi|
0000d990  73 20 53 57 49 20 69 6e  20 79 6f 75 72 20 6d 6f  |s SWI in your mo|
0000d9a0  64 75 6c 65 73 20 77 6f  72 6b 73 70 61 63 65 3b  |dules workspace;|
0000d9b0  20 69 74 27 73 20 79 6f  75 72 20 6d 6f 64 75 6c  | it's your modul|
0000d9c0  65 27 73 20 6d 65 61 6e  73 20 6f 66 20 69 64 65  |e's means of ide|
0000d9d0  6e 74 69 66 79 69 6e 67  20 69 74 73 65 6c 66 20  |ntifying itself |
0000d9e0  74 6f 20 46 69 6c 65 43  6f 72 65 2e 0a 20 0a 57  |to FileCore.. .W|
0000d9f0  68 65 6e 20 79 6f 75 72  20 6d 6f 64 75 6c 65 20  |hen your module |
0000da00  63 61 6c 6c 73 20 74 68  65 20 61 64 64 72 65 73  |calls the addres|
0000da10  73 65 73 20 72 65 74 75  72 6e 65 64 20 69 6e 20  |ses returned in |
0000da20  52 31 2d 52 33 2c 20 69  74 20 6d 75 73 74 20 62  |R1-R3, it must b|
0000da30  65 20 69 6e 20 53 56 43  20 6d 6f 64 65 20 77 69  |e in SVC mode wi|
0000da40  74 68 20 52 31 32 20 68  6f 6c 64 69 6e 67 20 74  |th R12 holding t|
0000da50  68 65 20 76 61 6c 75 65  20 6f 66 20 52 30 20 74  |he value of R0 t|
0000da60  68 61 74 20 74 68 69 73  20 53 57 49 20 72 65 74  |hat this SWI ret|
0000da70  75 72 6e 65 64 2e 20 49  6e 74 65 72 72 75 70 74  |urned. Interrupt|
0000da80  73 20 6e 65 65 64 20 74  6f 20 62 65 20 64 69 73  |s need to be dis|
0000da90  61 62 6c 65 64 2e 20 52  30 2c 20 52 31 2c 20 52  |abled. R0, R1, R|
0000daa0  33 2d 52 31 31 20 61 6e  64 20 52 31 33 20 77 69  |3-R11 and R13 wi|
0000dab0  6c 6c 20 62 65 20 70 72  65 73 65 72 76 65 64 20  |ll be preserved |
0000dac0  62 79 20 46 69 6c 65 43  6f 72 65 20 6f 76 65 72  |by FileCore over|
0000dad0  20 74 68 65 73 65 20 63  61 6c 6c 73 2e 0a 23 53  | these calls..#S|
0000dae0  75 62 70 61 67 65 20 44  65 73 63 72 69 70 74 6f  |ubpage Descripto|
0000daf0  72 0a 00 00 44 41 54 41  f8 02 00 00 46 69 6c 65  |r...DATA....File|
0000db00  63 6f 72 65 20 46 53 20  64 65 73 63 72 69 70 74  |core FS descript|
0000db10  6f 72 20 62 6c 6f 63 6b  0a 4f 66 66 73 65 74 09  |or block.Offset.|
0000db20  43 6f 6e 74 61 69 6e 73  0a 23 4c 69 6e 65 0a 30  |Contains.#Line.0|
0000db30  09 3c 64 69 73 63 20 66  6c 61 67 73 3d 3e 2e 66  |.<disc flags=>.f|
0000db40  6c 61 67 73 3e 0a 33 09  3c 66 69 6c 69 6e 67 20  |lags>.3.<filing |
0000db50  73 79 73 74 65 6d 20 6e  75 6d 62 65 72 3d 3e 66  |system number=>f|
0000db60  73 79 73 5f 69 64 65 6e  74 3e 0a 34 09 6f 66 66  |sys_ident>.4.off|
0000db70  73 65 74 20 6f 66 20 66  69 6c 69 6e 67 20 73 79  |set of filing sy|
0000db80  73 74 65 6d a0 74 69 74  6c 65 20 66 72 6f 6d 20  |stem.title from |
0000db90  6d 6f 64 75 6c 65 20 62  61 73 65 0a 38 09 6f 66  |module base.8.of|
0000dba0  66 73 65 74 20 6f 66 20  62 6f 6f 74 20 74 65 78  |fset of boot tex|
0000dbb0  74 20 66 72 6f 6d 20 6d  6f 64 75 6c 65 20 62 61  |t from module ba|
0000dbc0  73 65 0a 31 32 09 6f 66  66 73 65 74 20 6f 66 20  |se.12.offset of |
0000dbd0  6c 6f 77 20 6c 65 76 65  6c 20 64 69 73 63 20 6f  |low level disc o|
0000dbe0  70 20 65 6e 74 72 79 20  66 72 6f 6d 20 6d 6f 64  |p entry from mod|
0000dbf0  75 6c 65 20 62 61 73 65  0a 31 36 09 6f 66 66 73  |ule base.16.offs|
0000dc00  65 74 20 6f 66 20 6c 6f  77 20 6c 65 76 65 6c 20  |et of low level |
0000dc10  6d 69 73 63 65 6c 6c 61  6e 65 6f 75 73 20 65 6e  |miscellaneous en|
0000dc20  74 72 79 20 66 72 6f 6d  20 6d 6f 64 75 6c 65 20  |try from module |
0000dc30  62 61 73 65 0a 23 53 75  62 70 61 67 65 20 66 6c  |base.#Subpage fl|
0000dc40  61 67 73 0a 44 69 73 63  20 66 6c 61 67 73 0a 42  |ags.Disc flags.B|
0000dc50  69 74 09 4d 65 61 6e 69  6e 67 20 77 68 65 6e 20  |it.Meaning when |
0000dc60  73 65 74 0a 23 4c 69 6e  65 0a 30 09 48 61 72 64  |set.#Line.0.Hard|
0000dc70  20 64 69 73 63 20 6e 65  65 64 73 20 46 49 51 0a  | disc needs FIQ.|
0000dc80  31 09 46 6c 6f 70 70 79  20 6e 65 65 64 73 20 46  |1.Floppy needs F|
0000dc90  49 51 0a 32 09 52 65 73  65 72 76 65 64 20 6d 75  |IQ.2.Reserved mu|
0000dca0  73 74 20 62 65 20 7a 65  72 6f 0a 33 09 55 73 65  |st be zero.3.Use|
0000dcb0  20 6f 6e 6c 79 20 73 63  72 61 74 63 68 20 73 70  | only scratch sp|
0000dcc0  61 63 65 20 77 68 65 6e  20 61 20 74 65 6d 70 6f  |ace when a tempo|
0000dcd0  72 61 72 79 20 62 75 66  66 65 72 20 69 73 20 6e  |rary buffer is n|
0000dce0  65 65 64 65 64 0a 34 09  48 61 72 64 20 64 69 73  |eeded.4.Hard dis|
0000dcf0  63 20 73 75 70 70 6f 72  74 20 6d 6f 75 6e 74 20  |c support mount |
0000dd00  6c 69 6b 65 20 66 6c 6f  70 70 69 65 73 20 64 6f  |like floppies do|
0000dd10  20 28 69 65 20 74 68 65  79 20 66 69 6c 6c 20 69  | (ie they fill i|
0000dd20  6e 20 73 65 63 74 6f 72  20 73 69 7a 65 2c 20 68  |n sector size, h|
0000dd30  65 61 64 73 2c 20 73 65  63 74 6f 72 73 20 70 65  |eads, sectors pe|
0000dd40  72 20 74 72 61 63 6b 20  61 6e 64 20 64 65 6e 73  |r track and dens|
0000dd50  69 74 79 29 0a 35 09 48  61 72 64 20 64 69 73 63  |ity).5.Hard disc|
0000dd60  20 73 75 70 70 6f 72 74  20 70 6f 6c 6c 20 63 68  | support poll ch|
0000dd70  61 6e 67 65 20 28 69 65  20 74 68 65 20 70 6f 6c  |ange (ie the pol|
0000dd80  6c 20 63 68 61 6e 67 65  20 63 61 6c 6c 20 77 6f  |l change call wo|
0000dd90  72 6b 73 20 66 6f 72 20  68 61 72 64 20 64 69 73  |rks for hard dis|
0000dda0  63 73 20 61 6e 64 20 72  65 74 75 72 6e 73 20 61  |cs and returns a|
0000ddb0  20 73 65 6e 73 69 62 6c  65 20 76 61 6c 75 65 3b  | sensible value;|
0000ddc0  20 61 6c 73 6f 20 6c 6f  63 6b 69 6e 67 20 74 68  | also locking th|
0000ddd0  65 6d 20 67 69 76 65 73  20 61 20 73 65 6e 73 69  |em gives a sensi|
0000dde0  62 6c 65 20 72 65 73 75  6c 74 29 0a 44 41 54 41  |ble result).DATA|
0000ddf0  df 01 00 00 46 69 6c 65  43 6f 72 65 5f 44 65 73  |....FileCore_Des|
0000de00  63 72 69 62 65 44 69 73  63 20 20 28 26 34 30 35  |cribeDisc  (&405|
0000de10  34 35 29 0a 23 50 61 72  65 6e 74 20 46 69 6c 65  |45).#Parent File|
0000de20  43 6f 72 65 5f 0a 3d 3e  09 52 30 20 3d 09 70 6f  |Core_.=>.R0 =.po|
0000de30  69 6e 74 65 72 20 74 6f  20 64 69 73 63 20 6e 61  |inter to disc na|
0000de40  6d 65 20 28 6f 72 20 3a  30 2c 20 65 74 63 29 0a  |me (or :0, etc).|
0000de50  09 52 31 20 3d 09 3c 70  6f 69 6e 74 65 72 20 74  |.R1 =.<pointer t|
0000de60  6f 20 64 61 74 61 20 62  6c 6f 63 6b 3d 3e 46 69  |o data block=>Fi|
0000de70  6c 65 43 6f 72 65 5f 64  69 73 63 3e 0a 09 52 38  |leCore_disc>..R8|
0000de80  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 46 69  | =.pointer to Fi|
0000de90  6c 65 43 6f 72 65 20 69  6e 73 74 61 6e 63 65 20  |leCore instance |
0000dea0  70 72 69 76 61 74 65 20  77 6f 72 64 0a 0a 54 68  |private word..Th|
0000deb0  69 73 20 63 61 6c 6c 20  61 6c 6c 6f 77 73 20 79  |is call allows y|
0000dec0  6f 75 20 74 6f 20 63 68  65 63 6b 20 74 68 65 20  |ou to check the |
0000ded0  64 69 73 63 27 73 20 66  6f 72 6d 61 74 20 61 6e  |disc's format an|
0000dee0  64 20 69 6e 74 65 72 6e  61 6c 20 73 74 72 75 63  |d internal struc|
0000def0  74 75 72 65 2e 20 49 66  20 74 68 65 20 69 73 20  |ture. If the is |
0000df00  73 70 65 63 69 66 69 65  64 20 69 73 20 6e 6f 74  |specified is not|
0000df10  20 69 6e 20 61 20 64 72  69 76 65 20 69 74 20 77  | in a drive it w|
0000df20  69 6c 6c 20 62 65 20 73  65 61 72 63 68 65 64 20  |ill be searched |
0000df30  66 6f 72 20 61 6e 64 20  61 73 6b 65 64 20 66 6f  |for and asked fo|
0000df40  72 20 69 6e 20 61 6e 20  65 72 72 6f 72 20 62 6f  |r in an error bo|
0000df50  78 20 6f 72 20 62 79 20  70 72 6f 6d 70 74 2e 20  |x or by prompt. |
0000df60  49 66 20 74 68 65 20 64  69 73 63 20 6e 61 6d 65  |If the disc name|
0000df70  20 69 73 20 74 68 61 74  20 6f 66 20 61 20 64 72  | is that of a dr|
0000df80  69 76 65 20 74 68 65 6e  20 69 66 20 6e 6f 20 64  |ive then if no d|
0000df90  69 73 63 20 69 73 20 70  72 65 73 65 6e 74 20 74  |isc is present t|
0000dfa0  68 65 6e 20 74 68 65 20  44 72 69 76 65 20 65 6d  |hen the Drive em|
0000dfb0  70 74 79 20 65 72 72 6f  72 20 77 69 6c 6c 20 62  |pty error will b|
0000dfc0  65 20 72 65 70 6f 72 74  65 64 2e 00 44 41 54 41  |e reported..DATA|
0000dfd0  b7 00 00 00 46 69 6c 65  43 6f 72 65 5f 44 69 73  |....FileCore_Dis|
0000dfe0  63 61 72 64 52 65 61 64  53 65 63 74 6f 72 73 43  |cardReadSectorsC|
0000dff0  61 63 68 65 20 28 26 34  30 35 34 36 29 0a 23 50  |ache (&40546).#P|
0000e000  61 72 65 6e 74 20 46 69  6c 65 43 6f 72 65 5f 0a  |arent FileCore_.|
0000e010  3d 3e 09 52 36 20 3d 09  63 61 63 68 65 20 68 61  |=>.R6 =.cache ha|
0000e020  6e 64 6c 65 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |ndle..This call |
0000e030  64 69 73 63 61 72 64 73  20 74 68 65 20 63 61 63  |discards the cac|
0000e040  68 65 20 6f 66 20 72 65  61 64 20 73 65 63 74 6f  |he of read secto|
0000e050  72 73 20 63 72 65 61 74  65 64 20 62 79 20 3c 46  |rs created by <F|
0000e060  69 6c 65 43 6f 72 65 5f  44 69 73 63 4f 70 20 39  |ileCore_DiscOp 9|
0000e070  3d 3e 46 69 6c 65 43 6f  72 65 5f 44 69 73 63 4f  |=>FileCore_DiscO|
0000e080  70 39 3e 00 44 41 54 41  39 04 00 00 46 69 6c 65  |p9>.DATA9...File|
0000e090  43 6f 72 65 5f 44 69 73  63 46 6f 72 6d 61 74 20  |Core_DiscFormat |
0000e0a0  28 26 34 30 35 34 37 29  0a 23 50 61 72 65 6e 74  |(&40547).#Parent|
0000e0b0  20 46 69 6c 65 43 6f 72  65 5f 0a 3d 3e 09 52 30  | FileCore_.=>.R0|
0000e0c0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 64  | =.pointer to <d|
0000e0d0  69 73 63 20 66 6f 72 6d  61 74 20 73 74 72 75 63  |isc format struc|
0000e0e0  74 75 72 65 3d 3e 46 69  6c 65 43 6f 72 65 5f 66  |ture=>FileCore_f|
0000e0f0  6f 72 6d 61 74 3e 20 74  6f 20 62 65 20 66 69 6c  |ormat> to be fil|
0000e100  6c 65 64 20 69 6e 0a 09  52 31 20 3d 09 53 57 49  |led in..R1 =.SWI|
0000e110  20 6e 75 6d 62 65 72 20  74 6f 20 63 61 6c 6c 20  | number to call |
0000e120  74 6f 20 76 65 74 20 64  69 73 63 20 66 6f 72 6d  |to vet disc form|
0000e130  61 74 20 28 65 67 20 3c  41 44 46 53 5f 56 65 74  |at (eg <ADFS_Vet|
0000e140  46 6f 72 6d 61 74 3e 29  0a 09 52 32 20 3d 09 70  |Format>)..R2 =.p|
0000e150  61 72 61 6d 65 74 65 72  20 69 6e 20 52 31 20 74  |arameter in R1 t|
0000e160  6f 20 75 73 65 20 77 68  65 6e 20 63 61 6c 6c 69  |o use when calli|
0000e170  6e 67 20 76 65 74 74 69  6e 67 20 53 57 49 0a 09  |ng vetting SWI..|
0000e180  52 33 20 3d 09 3c 66 6f  72 6d 61 74 20 73 70 65  |R3 =.<format spe|
0000e190  63 69 66 69 65 72 3d 3e  46 69 6c 65 43 6f 72 65  |cifier=>FileCore|
0000e1a0  5f 66 6f 72 6d 61 74 73  70 65 63 3e 0a 0a 3c 3d  |_formatspec>..<=|
0000e1b0  09 52 30 2d 52 33 20 70  72 65 73 65 72 76 65 64  |.R0-R3 preserved|
0000e1c0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 66 69 6c 6c  |..This call fill|
0000e1d0  73 20 69 6e 20 74 68 65  20 64 69 73 63 20 66 6f  |s in the disc fo|
0000e1e0  72 6d 61 74 20 73 74 72  75 63 74 75 72 65 20 70  |rmat structure p|
0000e1f0  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 52 30 20  |ointed to by R0 |
0000e200  77 69 74 68 20 74 68 65  20 27 70 72 65 66 65 63  |with the 'prefec|
0000e210  74 27 20 70 61 72 61 6d  65 74 65 72 73 20 66 6f  |t' parameters fo|
0000e220  72 20 74 68 65 20 73 70  65 63 69 66 69 65 64 20  |r the specified |
0000e230  66 6f 72 6d 61 74 2c 20  74 61 6b 69 6e 67 20 6e  |format, taking n|
0000e240  6f 20 61 63 63 6f 75 6e  74 20 6f 66 20 74 68 65  |o account of the|
0000e250  20 61 62 69 6c 69 74 69  65 73 20 6f 66 20 74 68  | abilities of th|
0000e260  65 20 61 76 61 69 6c 61  62 6c 65 20 68 61 72 64  |e available hard|
0000e270  77 61 72 65 20 74 68 61  74 20 77 69 6c 6c 20 68  |ware that will h|
0000e280  61 76 65 20 74 6f 20 70  65 72 66 6f 72 6d 20 74  |ave to perform t|
0000e290  68 65 20 66 6f 72 6d 61  74 2e 20 4f 6e 63 65 20  |he format. Once |
0000e2a0  66 69 6c 6c 65 64 20 69  6e 2c 20 74 68 69 73 20  |filled in, this |
0000e2b0  53 57 49 20 63 61 6c 6c  73 20 74 68 65 20 76 65  |SWI calls the ve|
0000e2c0  74 74 69 6e 67 20 53 57  49 20 74 6f 20 63 68 65  |tting SWI to che|
0000e2d0  63 6b 20 74 68 65 20 66  6f 72 6d 61 79 20 73 74  |ck the formay st|
0000e2e0  72 75 63 74 75 72 65 20  66 6f 72 20 61 63 68 69  |ructure for achi|
0000e2f0  65 76 61 62 69 6c 69 74  79 20 6f 6e 20 74 68 65  |evability on the|
0000e300  20 61 76 61 69 6c 61 62  6c 65 20 68 61 72 64 77  | available hardw|
0000e310  61 72 65 2e 20 54 68 65  20 76 65 74 74 69 6e 67  |are. The vetting|
0000e320  20 53 57 49 20 6d 61 79  20 67 65 6e 65 72 61 74  | SWI may generat|
0000e330  65 20 61 6e 20 65 72 72  6f 72 20 69 66 20 74 68  |e an error if th|
0000e340  65 20 66 6f 72 6d 61 74  20 64 69 66 66 65 72 73  |e format differs|
0000e350  20 77 69 64 65 6c 79 20  66 72 6f 6d 20 77 68 61  | widely from wha|
0000e360  74 20 63 61 6e 20 62 65  20 61 63 68 69 65 76 65  |t can be achieve|
0000e370  64 3b 20 61 6c 74 65 72  6e 61 74 69 76 65 6c 79  |d; alternatively|
0000e380  20 69 74 20 6d 61 79 20  61 6c 74 65 72 20 74 68  | it may alter th|
0000e390  65 20 66 6f 72 6d 61 74  20 73 74 72 75 63 74 75  |e format structu|
0000e3a0  72 65 20 74 6f 20 74 68  65 20 63 6c 6f 73 65 73  |re to the closes|
0000e3b0  74 20 6d 61 74 63 68 20  74 68 61 74 20 63 61 6e  |t match that can|
0000e3c0  20 62 65 20 61 63 68 69  65 76 65 64 2e 20 54 68  | be achieved. Th|
0000e3d0  65 20 76 65 74 74 69 6e  67 20 53 57 49 20 74 68  |e vetting SWI th|
0000e3e0  65 6e 20 72 65 74 75 72  6e 73 20 74 6f 20 74 68  |en returns to th|
0000e3f0  69 73 0a 53 57 49 2c 20  77 68 69 63 68 20 63 68  |is.SWI, which ch|
0000e400  65 63 6b 73 20 77 68 65  74 68 65 72 20 74 68 65  |ecks whether the|
0000e410  20 66 6f 72 6d 61 74 20  62 6c 6f 63 6b 20 2d 20  | format block - |
0000e420  61 73 20 75 70 64 61 74  65 64 20 62 79 20 74 68  |as updated by th|
0000e430  65 20 76 65 74 74 69 6e  67 20 53 57 49 20 2d 20  |e vetting SWI - |
0000e440  69 73 20 73 74 69 6c 6c  20 61 6e 20 61 64 65 71  |is still an adeq|
0000e450  75 61 74 65 20 6d 61 74  63 68 20 66 6f 72 20 74  |uate match for t|
0000e460  68 65 20 64 65 73 69 72  65 64 20 66 6f 72 6d 61  |he desired forma|
0000e470  74 2e 20 49 66 20 69 74  20 69 73 2c 20 74 68 69  |t. If it is, thi|
0000e480  73 20 53 57 49 20 72 65  74 75 72 6e 73 20 74 6f  |s SWI returns to|
0000e490  20 69 74 73 20 63 61 6c  6c 65 72 3b 20 6f 74 68  | its caller; oth|
0000e4a0  65 72 77 69 73 65 20 69  74 20 67 65 6e 65 72 61  |erwise it genera|
0000e4b0  74 65 73 20 61 6e 20 65  72 72 6f 72 2e 00 00 00  |tes an error....|
0000e4c0  44 41 54 41 ec 00 00 00  44 69 73 63 20 64 65 6e  |DATA....Disc den|
0000e4d0  73 69 74 69 65 73 0a 5c  23 09 4d 65 61 6e 69 6e  |sities.\#.Meanin|
0000e4e0  67 0a 23 6c 69 6e 65 0a  30 09 68 61 72 64 20 64  |g.#line.0.hard d|
0000e4f0  69 73 63 0a 31 09 73 69  6e 67 6c 65 20 64 65 6e  |isc.1.single den|
0000e500  73 69 74 79 20 28 31 32  35 20 4b 62 70 73 20 46  |sity (125 Kbps F|
0000e510  4d 29 0a 32 09 64 6f 75  62 6c 65 20 64 65 6e 73  |M).2.double dens|
0000e520  69 74 79 20 28 32 35 30  20 4b 62 70 73 20 46 4d  |ity (250 Kbps FM|
0000e530  29 0a 33 09 64 6f 75 62  6c 65 2b 20 64 65 6e 73  |).3.double+ dens|
0000e540  69 74 79 20 28 33 30 30  20 4b 62 70 73 20 46 4d  |ity (300 Kbps FM|
0000e550  29 20 28 69 65 20 68 69  67 68 65 72 20 72 6f 74  |) (ie higher rot|
0000e560  61 74 69 6f 6e 20 73 70  65 65 64 20 44 44 29 0a  |ation speed DD).|
0000e570  34 09 71 75 61 64 20 64  65 6e 73 69 74 79 20 28  |4.quad density (|
0000e580  35 30 30 20 4b 62 70 73  20 46 4d 29 0a 38 09 6f  |500 Kbps FM).8.o|
0000e590  63 74 61 6c 20 64 65 6e  73 69 74 79 20 28 31 30  |ctal density (10|
0000e5a0  30 30 20 4b 62 70 73 20  46 4d 29 0a 44 41 54 41  |00 Kbps FM).DATA|
0000e5b0  7a 00 00 00 46 6f 72 6d  61 74 20 73 70 65 63 69  |z...Format speci|
0000e5c0  66 69 65 72 0a 5c 23 09  4d 65 61 6e 69 6e 67 0a  |fier.\#.Meaning.|
0000e5d0  23 4c 69 6e 65 0a 26 38  30 09 4c 20 66 6f 72 6d  |#Line.&80.L form|
0000e5e0  61 74 20 66 6c 6f 70 70  79 0a 26 38 31 09 44 20  |at floppy.&81.D |
0000e5f0  66 6f 72 6d 61 74 20 66  6c 6f 70 70 79 0a 26 38  |format floppy.&8|
0000e600  32 09 45 20 66 6f 72 6d  61 74 20 66 6c 6f 70 70  |2.E format flopp|
0000e610  79 0a 26 38 33 09 46 20  66 6f 72 6d 61 74 20 66  |y.&83.F format f|
0000e620  6c 6f 70 70 79 0a 00 00  44 41 54 41 aa 01 00 00  |loppy...DATA....|
0000e630  44 69 73 63 4f 70 20 72  65 61 73 6f 6e 20 63 6f  |DiscOp reason co|
0000e640  64 65 73 0a 52 65 61 73  6f 6e 09 4d 65 61 6e 69  |des.Reason.Meani|
0000e650  6e 67 0a 23 4c 69 6e 65  0a 30 09 3c 56 65 72 69  |ng.#Line.0.<Veri|
0000e660  66 79 3d 3e 46 69 6c 65  43 6f 72 65 5f 44 69 73  |fy=>FileCore_Dis|
0000e670  63 4f 70 30 3e 0a 31 09  3c 52 65 61 64 20 73 65  |cOp0>.1.<Read se|
0000e680  63 74 6f 72 73 3d 3e 46  69 6c 65 43 6f 72 65 5f  |ctors=>FileCore_|
0000e690  44 69 73 63 4f 70 31 3e  0a 32 09 3c 57 72 69 74  |DiscOp1>.2.<Writ|
0000e6a0  65 20 73 65 63 74 6f 72  73 3d 3e 46 69 6c 65 43  |e sectors=>FileC|
0000e6b0  6f 72 65 5f 44 69 73 63  4f 70 32 3e 0a 33 09 3c  |ore_DiscOp2>.3.<|
0000e6c0  52 65 61 64 20 74 72 61  63 6b 2f 49 64 3d 3e 46  |Read track/Id=>F|
0000e6d0  69 6c 65 43 6f 72 65 5f  44 69 73 63 4f 70 33 3e  |ileCore_DiscOp3>|
0000e6e0  0a 34 09 3c 57 72 69 74  65 2f 66 6f 72 6d 61 74  |.4.<Write/format|
0000e6f0  20 74 72 61 63 6b 3d 3e  46 69 6c 65 43 6f 72 65  | track=>FileCore|
0000e700  5f 44 69 73 63 4f 70 34  3e 0a 35 09 3c 53 65 65  |_DiscOp4>.5.<See|
0000e710  6b 3d 3e 46 69 6c 65 43  6f 72 65 5f 44 69 73 63  |k=>FileCore_Disc|
0000e720  4f 70 35 3e 0a 36 09 3c  52 65 73 74 6f 72 65 3d  |Op5>.6.<Restore=|
0000e730  3e 46 69 6c 65 43 6f 72  65 5f 44 69 73 63 4f 70  |>FileCore_DiscOp|
0000e740  36 3e 0a 37 09 3c 53 74  65 70 20 69 6e 3d 3e 46  |6>.7.<Step in=>F|
0000e750  69 6c 65 43 6f 72 65 5f  44 69 73 63 4f 70 37 2d  |ileCore_DiscOp7-|
0000e760  38 3e 0a 38 09 3c 53 74  65 70 20 6f 75 74 3d 3e  |8>.8.<Step out=>|
0000e770  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 37  |FileCore_DiscOp7|
0000e780  2d 38 3e 0a 39 09 3c 52  65 61 64 20 73 65 63 74  |-8>.9.<Read sect|
0000e790  6f 72 73 20 76 69 61 20  63 61 63 68 65 3d 3e 46  |ors via cache=>F|
0000e7a0  69 6c 65 43 6f 72 65 5f  44 69 73 63 4f 70 39 3e  |ileCore_DiscOp9>|
0000e7b0  0a 31 35 09 3c 53 70 65  63 69 66 79 20 3f 3d 3e  |.15.<Specify ?=>|
0000e7c0  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 31  |FileCore_DiscOp1|
0000e7d0  35 3e 00 00 44 41 54 41  b7 00 00 00 46 69 6c 65  |5>..DATA....File|
0000e7e0  43 6f 72 65 5f 44 69 73  63 4f 70 20 20 28 26 34  |Core_DiscOp  (&4|
0000e7f0  30 35 34 30 29 0a 23 50  72 65 66 69 78 20 46 69  |0540).#Prefix Fi|
0000e800  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 5f 0a 23  |leCore_DiscOp_.#|
0000e810  50 61 72 65 6e 74 20 46  69 6c 65 43 6f 72 65 5f  |Parent FileCore_|
0000e820  0a 3d 3e 09 52 31 20 3d  20 3c 72 65 61 73 6f 6e  |.=>.R1 = <reason|
0000e830  3e 20 61 6e 64 20 3c 66  6c 61 67 73 3e 0a 09 44  |> and <flags>..D|
0000e840  65 70 65 6e 64 61 6e 74  20 6f 6e 20 72 65 61 73  |ependant on reas|
0000e850  6f 6e 0a 0a 54 68 69 73  20 53 57 49 20 70 65 72  |on..This SWI per|
0000e860  66 6f 72 6d 73 20 76 61  72 69 6f 75 73 20 6c 6f  |forms various lo|
0000e870  77 2d 6c 65 76 65 6c 20  61 63 63 65 73 73 65 73  |w-level accesses|
0000e880  20 6f 6e 20 61 20 64 69  73 63 2e 00 44 41 54 41  | on a disc..DATA|
0000e890  b8 00 00 00 46 69 6c 65  43 6f 72 65 5f 44 69 73  |....FileCore_Dis|
0000e8a0  63 4f 70 20 30 0a 56 65  72 69 66 79 20 73 65 63  |cOp 0.Verify sec|
0000e8b0  74 6f 72 73 0a 0a 3d 3e  09 52 31 20 3d 09 30 20  |tors..=>.R1 =.0 |
0000e8c0  2b 20 3c 66 6c 61 67 73  3d 3e 46 69 6c 65 43 6f  |+ <flags=>FileCo|
0000e8d0  72 65 5f 44 69 73 63 4f  70 5f 66 6c 61 67 73 3e  |re_DiscOp_flags>|
0000e8e0  0a 09 52 32 20 3d 09 3c  64 69 73 63 20 61 64 64  |..R2 =.<disc add|
0000e8f0  72 65 73 73 3d 3e 46 69  6c 65 43 6f 72 65 5f 64  |ress=>FileCore_d|
0000e900  69 73 63 61 64 64 72 65  73 73 3e 0a 09 52 34 20  |iscaddress>..R4 |
0000e910  3d 09 73 69 7a 65 0a 09  0a 5c 3c 3d 09 52 32 20  |=.size...\<=.R2 |
0000e920  3d 09 6e 65 78 74 20 64  69 73 63 20 61 64 64 72  |=.next disc addr|
0000e930  65 73 73 0a 09 52 34 20  3d 09 75 6e 76 65 72 69  |ess..R4 =.unveri|
0000e940  66 69 65 64 44 41 54 41  f7 00 00 00 46 69 6c 65  |fiedDATA....File|
0000e950  43 6f 72 65 5f 44 69 73  63 4f 70 20 31 0a 52 65  |Core_DiscOp 1.Re|
0000e960  61 64 20 73 65 63 74 6f  72 73 20 66 72 6f 6d 20  |ad sectors from |
0000e970  64 69 73 63 0a 0a 3d 3e  09 52 31 20 3d 09 31 20  |disc..=>.R1 =.1 |
0000e980  2b 20 3c 66 6c 61 67 73  3d 3e 46 69 6c 65 43 6f  |+ <flags=>FileCo|
0000e990  72 65 5f 44 69 73 63 4f  70 5f 66 6c 61 67 73 3e  |re_DiscOp_flags>|
0000e9a0  0a 09 52 32 20 3d 09 3c  64 69 73 63 20 61 64 64  |..R2 =.<disc add|
0000e9b0  72 65 73 73 3d 3e 46 69  6c 65 43 6f 72 65 5f 64  |ress=>FileCore_d|
0000e9c0  69 73 63 61 64 64 72 65  73 73 3e 0a 09 52 33 20  |iscaddress>..R3 |
0000e9d0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |=.pointer to blo|
0000e9e0  63 6b 20 74 6f 20 72 65  61 64 20 69 6e 74 6f 0a  |ck to read into.|
0000e9f0  09 52 34 20 3d 09 73 69  7a 65 0a 09 0a 3c 3d 09  |.R4 =.size...<=.|
0000ea00  52 32 20 3d 09 6e 65 78  74 20 64 69 73 63 20 61  |R2 =.next disc a|
0000ea10  64 64 72 65 73 73 0a 09  52 33 20 3d 09 6e 65 78  |ddress..R3 =.nex|
0000ea20  74 20 66 72 65 65 20 61  64 64 72 65 73 73 0a 09  |t free address..|
0000ea30  52 34 20 3d 09 75 6e 72  65 61 64 00 44 41 54 41  |R4 =.unread.DATA|
0000ea40  7d 00 00 00 46 69 6c 65  43 6f 72 65 5f 44 69 73  |}...FileCore_Dis|
0000ea50  63 4f 70 20 31 35 0a 53  70 65 63 69 66 79 20 3f  |cOp 15.Specify ?|
0000ea60  0a 0a 3d 3e 09 52 31 20  3d 09 31 35 20 2b 20 3c  |..=>.R1 =.15 + <|
0000ea70  66 6c 61 67 73 3d 3e 46  69 6c 65 43 6f 72 65 5f  |flags=>FileCore_|
0000ea80  44 69 73 63 4f 70 5f 66  6c 61 67 73 3e 0a 09 52  |DiscOp_flags>..R|
0000ea90  32 20 3d 09 3c 64 69 73  63 20 61 64 64 72 65 73  |2 =.<disc addres|
0000eaa0  73 3d 3e 46 69 6c 65 43  6f 72 65 5f 64 69 73 63  |s=>FileCore_disc|
0000eab0  61 64 64 72 65 73 73 3e  0a 00 00 00 44 41 54 41  |address>....DATA|
0000eac0  fc 00 00 00 46 69 6c 65  43 6f 72 65 5f 44 69 73  |....FileCore_Dis|
0000ead0  63 4f 70 20 32 0a 57 72  69 74 65 20 73 65 63 74  |cOp 2.Write sect|
0000eae0  6f 72 73 20 74 6f 20 64  69 73 63 0a 0a 3d 3e 09  |ors to disc..=>.|
0000eaf0  52 31 20 3d 09 31 20 2b  20 3c 66 6c 61 67 73 3d  |R1 =.1 + <flags=|
0000eb00  3e 46 69 6c 65 43 6f 72  65 5f 44 69 73 63 4f 70  |>FileCore_DiscOp|
0000eb10  5f 66 6c 61 67 73 3e 0a  09 52 32 20 3d 09 3c 64  |_flags>..R2 =.<d|
0000eb20  69 73 63 20 61 64 64 72  65 73 73 3d 3e 46 69 6c  |isc address=>Fil|
0000eb30  65 43 6f 72 65 5f 64 69  73 63 61 64 64 72 65 73  |eCore_discaddres|
0000eb40  73 3e 0a 09 52 33 20 3d  09 70 6f 69 6e 74 65 72  |s>..R3 =.pointer|
0000eb50  20 74 6f 20 62 6c 6f 63  6b 20 74 6f 20 72 65 61  | to block to rea|
0000eb60  64 20 69 6e 74 6f 0a 09  52 34 20 3d 09 73 69 7a  |d into..R4 =.siz|
0000eb70  65 0a 09 0a 5c 3c 3d 09  52 32 20 3d 09 6e 65 78  |e...\<=.R2 =.nex|
0000eb80  74 20 64 69 73 63 20 61  64 64 72 65 73 73 0a 09  |t disc address..|
0000eb90  52 33 20 3d 09 6e 65 78  74 20 66 72 65 65 20 61  |R3 =.next free a|
0000eba0  64 64 72 65 73 73 0a 09  52 34 20 3d 09 75 6e 77  |ddress..R4 =.unw|
0000ebb0  72 69 74 74 65 6e 20 3f  44 41 54 41 08 05 00 00  |ritten ?DATA....|
0000ebc0  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 20  |FileCore_DiscOp |
0000ebd0  33 0a 52 65 61 64 20 74  72 61 63 6b 20 28 66 72  |3.Read track (fr|
0000ebe0  6f 6d 20 66 6c 6f 70 70  79 29 20 6f 72 20 69 64  |om floppy) or id|
0000ebf0  20 28 66 72 6f 6d 20 68  61 72 64 20 64 69 73 63  | (from hard disc|
0000ec00  29 0a 0a 3d 3e 09 52 31  20 3d 09 33 20 2b 20 3c  |)..=>.R1 =.3 + <|
0000ec10  66 6c 61 67 73 3d 3e 46  69 6c 65 43 6f 72 65 5f  |flags=>FileCore_|
0000ec20  44 69 73 63 4f 70 5f 66  6c 61 67 73 3e 0a 09 52  |DiscOp_flags>..R|
0000ec30  32 20 3d 09 3c 64 69 73  63 20 61 64 64 72 65 73  |2 =.<disc addres|
0000ec40  73 3d 3e 46 69 6c 65 43  6f 72 65 5f 64 69 73 63  |s=>FileCore_disc|
0000ec50  61 64 64 72 65 73 73 3e  0a 09 52 33 20 3d 09 70  |address>..R3 =.p|
0000ec60  6f 69 6e 74 65 72 20 74  6f 20 62 6c 6f 63 6b 20  |ointer to block |
0000ec70  74 6f 20 72 65 61 64 20  69 6e 74 6f 0a 0a 49 66  |to read into..If|
0000ec80  20 74 68 65 20 61 6c 74  65 72 6e 61 74 65 20 64  | the alternate d|
0000ec90  65 66 65 63 74 20 6c 69  73 74 20 6f 70 74 69 6f  |efect list optio|
0000eca0  6e 20 62 69 74 20 28 62  69 74 20 34 29 20 69 73  |n bit (bit 4) is|
0000ecb0  20 73 65 74 20 69 6e 20  52 31 20 6f 6e 20 65 6e  | set in R1 on en|
0000ecc0  74 72 79 20 77 68 65 6e  20 72 65 61 64 69 6e 67  |try when reading|
0000ecd0  20 61 20 74 72 61 63 6b  2f 49 44 2c 20 74 68 65  | a track/ID, the|
0000ece0  6e 20 61 20 77 68 6f 6c  65 20 74 72 61 63 6b 27  |n a whole track'|
0000ecf0  73 20 77 6f 72 74 68 20  6f 66 20 49 44 20 66 69  |s worth of ID fi|
0000ed00  65 6c 64 73 20 69 73 20  72 65 61 64 2e 20 54 68  |elds is read. Th|
0000ed10  69 73 20 75 73 61 67 65  20 69 73 6e 27 74 20 61  |is usage isn't a|
0000ed20  76 61 69 6c 61 62 6c 65  20 75 6e 64 65 72 20 52  |vailable under R|
0000ed30  49 53 43 20 4f 53 20 32  2e 0a 0a 54 68 65 20 63  |ISC OS 2...The c|
0000ed40  61 6c 6c 20 72 65 61 64  73 20 34 20 62 79 74 65  |all reads 4 byte|
0000ed50  73 20 6f 66 20 73 65 63  74 6f 72 20 49 44 20 69  |s of sector ID i|
0000ed60  6e 66 6f 72 6d 61 74 69  6f 6e 20 69 6e 74 6f 20  |nformation into |
0000ed70  74 68 65 20 62 75 66 66  65 72 20 70 6f 69 6e 74  |the buffer point|
0000ed80  65 64 20 74 6f 20 62 79  20 52 33 20 66 6f 72 20  |ed to by R3 for |
0000ed90  65 76 65 72 79 20 73 65  63 74 6f 72 20 6f 6e 20  |every sector on |
0000eda0  74 68 65 20 74 72 61 63  6b 2e 20 54 68 65 20 6f  |the track. The o|
0000edb0  72 64 65 72 20 6f 66 20  64 61 74 61 20 69 73 3a  |rder of data is:|
0000edc0  0a 0a 23 69 6e 64 65 6e  74 20 32 0a 43 79 6c 69  |..#indent 2.Cyli|
0000edd0  6e 64 65 72 0a 48 65 61  64 0a 53 65 63 74 6f 72  |nder.Head.Sector|
0000ede0  20 6e 75 6d 62 65 72 0a  53 65 63 74 6f 72 20 73  | number.Sector s|
0000edf0  69 7a 65 20 28 30 20 3d  20 31 32 38 3b 31 20 3d  |ize (0 = 128;1 =|
0000ee00  20 32 35 36 2c 20 65 74  63 29 0a 23 69 6e 64 65  | 256, etc).#inde|
0000ee10  6e 74 0a 0a 54 68 65 20  6f 70 65 72 61 74 69 6f  |nt..The operatio|
0000ee20  6e 20 69 73 20 74 65 72  6d 69 6e 61 74 65 64 20  |n is terminated |
0000ee30  61 66 74 65 72 20 32 30  30 20 6d 53 20 28 31 20  |after 200 mS (1 |
0000ee40  72 65 76 6f 6c 75 74 69  6f 6e 29 0a 0a 54 68 65  |revolution)..The|
0000ee50  20 66 69 72 73 74 20 73  65 63 74 6f 72 20 49 44  | first sector ID|
0000ee60  20 74 72 61 6e 73 66 65  72 72 65 64 20 77 69 6c  | transferred wil|
0000ee70  6c 20 6e 6f 72 6d 61 6c  6c 79 20 62 65 20 74 68  |l normally be th|
0000ee80  61 74 20 66 6f 6c 6c 6f  77 69 6e 67 20 74 68 65  |at following the|
0000ee90  20 69 6e 64 65 78 20 6d  61 72 6b 20 28 69 74 20  | index mark (it |
0000eea0  6d 61 79 20 62 65 20 74  68 65 20 73 65 63 6f 6e  |may be the secon|
0000eeb0  64 20 69 66 20 74 68 65  72 65 20 69 73 20 61 62  |d if there is ab|
0000eec0  6e 6f 72 6d 61 6c 20 69  6e 74 65 72 75 70 74 20  |normal interupt |
0000eed0  6c 61 74 65 6e 63 79 20  66 72 6f 6d 20 74 68 65  |latency from the|
0000eee0  20 69 6e 64 65 78 20 70  75 6c 73 65 20 69 6e 74  | index pulse int|
0000eef0  65 72 72 75 70 74 29 2e  20 54 68 65 20 66 69 72  |errupt). The fir|
0000ef00  73 74 20 74 77 6f 20 49  44 27 73 20 72 65 61 64  |st two ID's read|
0000ef10  20 6d 61 79 20 61 6c 73  6f 20 62 65 20 64 75 70  | may also be dup|
0000ef20  6c 69 63 61 74 65 64 20  61 74 20 74 68 65 20 62  |licated at the b|
0000ef30  75 66 66 65 72 20 65 6e  64 20 64 75 65 20 74 6f  |uffer end due to|
0000ef40  20 69 6e 74 65 72 72 75  70 74 20 6c 61 74 65 6e  | interrupt laten|
0000ef50  63 79 2e 20 43 6f 6e 73  65 71 75 65 6e 74 6c 79  |cy. Consequently|
0000ef60  20 74 68 65 20 62 75 66  66 65 72 20 73 68 6f 75  | the buffer shou|
0000ef70  6c 64 20 62 65 20 61 74  20 6c 65 61 73 74 20 31  |ld be at least 1|
0000ef80  36 20 62 79 74 65 73 20  6c 6f 6e 67 65 72 20 74  |6 bytes longer t|
0000ef90  68 61 6e 20 74 68 65 20  6d 61 78 69 6d 75 6d 20  |han the maximum |
0000efa0  6e 75 6d 62 65 72 20 6f  66 20 49 44 27 73 20 65  |number of ID's e|
0000efb0  78 70 65 63 74 65 64 20  28 35 31 32 20 62 79 74  |xpected (512 byt|
0000efc0  65 73 20 61 74 20 6d 6f  73 74 29 2e 0a 0a 54 68  |es at most)...Th|
0000efd0  65 20 64 69 73 63 20 72  65 63 6f 72 64 20 70 72  |e disc record pr|
0000efe0  6f 76 69 64 65 64 20 69  73 20 75 70 64 61 74 65  |ovided is update|
0000eff0  64 20 74 6f 20 72 65 74  75 72 6e 20 74 68 65 20  |d to return the |
0000f000  61 63 74 75 61 6c 20 6e  75 6d 62 65 72 20 6f 66  |actual number of|
0000f010  20 73 65 63 74 6f 72 73  20 70 65 72 20 74 72 61  | sectors per tra|
0000f020  63 6b 20 66 6f 75 6e 64  20 28 61 74 20 6f 66 66  |ck found (at off|
0000f030  73 65 74 20 31 29 2e 20  4e 6f 74 65 20 74 6f 20  |set 1). Note to |
0000f040  75 73 65 20 74 68 69 73  20 6f 70 74 69 6f 6e 20  |use this option |
0000f050  79 6f 75 20 4d 55 53 54  20 70 72 6f 76 69 64 65  |you MUST provide|
0000f060  20 61 20 76 61 6c 69 64  20 64 65 66 65 63 74 20  | a valid defect |
0000f070  6c 69 73 74 2c 20 77 68  69 63 68 20 61 74 20 61  |list, which at a|
0000f080  20 6d 69 6e 69 6d 75 6d  20 69 73 20 61 20 77 6f  | minimum is a wo|
0000f090  72 64 20 6f 66 20 26 32  30 30 30 30 30 30 30 20  |rd of &20000000 |
0000f0a0  66 6f 6c 6c 6f 77 69 6e  67 20 61 66 74 65 72 20  |following after |
0000f0b0  74 68 65 20 64 69 73 63  20 72 65 63 6f 72 64 2e  |the disc record.|
0000f0c0  44 41 54 41 5c 02 00 00  46 69 6c 65 43 6f 72 65  |DATA\...FileCore|
0000f0d0  5f 44 69 73 63 4f 70 20  34 0a 57 72 69 74 65 20  |_DiscOp 4.Write |
0000f0e0  6f 72 20 66 6f 72 6d 61  74 20 74 72 61 63 6b 20  |or format track |
0000f0f0  74 6f 20 64 69 73 63 0a  0a 3d 3e 09 52 31 20 3d  |to disc..=>.R1 =|
0000f100  09 34 20 2b 20 3c 66 6c  61 67 73 3d 3e 46 69 6c  |.4 + <flags=>Fil|
0000f110  65 43 6f 72 65 5f 44 69  73 63 4f 70 5f 66 6c 61  |eCore_DiscOp_fla|
0000f120  67 73 3e 0a 09 52 32 20  3d 09 3c 64 69 73 63 20  |gs>..R2 =.<disc |
0000f130  61 64 64 72 65 73 73 3d  3e 46 69 6c 65 43 6f 72  |address=>FileCor|
0000f140  65 5f 64 69 73 63 61 64  64 72 65 73 73 3e 0a 09  |e_discaddress>..|
0000f150  52 33 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R3 =.pointer to |
0000f160  62 6c 6f 63 6b 20 74 6f  20 77 72 69 74 65 20 6f  |block to write o|
0000f170  72 20 30 20 74 6f 20 66  6f 72 6d 61 74 0a 09 52  |r 0 to format..R|
0000f180  34 20 3d 09 3c 66 6f 72  6d 61 74 20 62 6c 6f 63  |4 =.<format bloc|
0000f190  6b 3d 3e 46 69 6c 65 43  6f 72 65 5f 66 6f 72 6d  |k=>FileCore_form|
0000f1a0  61 74 3e 0a 0a 49 66 20  52 33 3d 30 2c 20 74 68  |at>..If R3=0, th|
0000f1b0  69 73 20 63 61 6c 6c 20  66 6f 72 6d 61 74 73 20  |is call formats |
0000f1c0  61 20 74 72 61 63 6b 20  6f 66 20 74 68 65 20 73  |a track of the s|
0000f1d0  70 65 63 69 66 69 65 64  20 64 69 73 63 2c 20 61  |pecified disc, a|
0000f1e0  6e 20 65 72 72 6f 72 20  69 73 20 67 65 6e 65 72  |n error is gener|
0000f1f0  61 74 65 64 2c 20 69 66  20 74 68 65 20 73 70 65  |ated, if the spe|
0000f200  63 69 66 69 65 64 20 66  6f 72 6d 61 74 20 69 73  |cified format is|
0000f210  20 6e 6f 74 20 70 6f 73  73 69 62 6c 65 20 74 6f  | not possible to|
0000f220  20 67 65 6e 65 72 61 74  65 2c 20 6f 72 20 69 66  | generate, or if|
0000f230  20 74 68 65 20 74 72 61  63 6b 20 72 65 71 75 65  | the track reque|
0000f240  73 74 65 64 20 69 73 20  6f 75 74 73 69 64 65 20  |sted is outside |
0000f250  74 68 65 20 76 61 6c 69  64 20 72 61 6e 67 65 2e  |the valid range.|
0000f260  20 54 68 65 20 74 72 61  63 6b 73 20 61 72 65 20  | The tracks are |
0000f270  6e 75 6d 62 65 72 65 64  20 66 72 6f 6d 20 30 20  |numbered from 0 |
0000f280  74 6f 20 28 6e 75 6d 62  65 72 20 6f 66 20 74 72  |to (number of tr|
0000f290  61 63 6b 73 29 2d 31 2e  20 54 68 65 20 6d 61 70  |acks)-1. The map|
0000f2a0  70 69 6e 67 20 6f 66 20  74 68 65 20 61 64 64 72  |ping of the addr|
0000f2b0  65 73 73 20 69 73 20 63  6f 6e 74 72 6f 6c 6c 65  |ess is controlle|
0000f2c0  64 20 62 79 20 74 68 65  20 64 69 73 63 20 73 74  |d by the disc st|
0000f2d0  72 75 63 74 75 72 65 20  72 65 63 6f 72 64 2e 0a  |ructure record..|
0000f2e0  0a 49 66 20 52 33 5c 3c  3e 30 20 74 68 65 6e 20  |.If R3\<>0 then |
0000f2f0  74 68 65 20 64 61 74 61  20 73 70 65 63 69 66 69  |the data specifi|
0000f300  65 64 20 69 73 20 77 72  69 74 74 65 6e 20 74 6f  |ed is written to|
0000f310  20 74 68 65 20 74 72 61  63 6b 2e 0a 44 41 54 41  | the track..DATA|
0000f320  a6 00 00 00 46 69 6c 65  43 6f 72 65 5f 44 69 73  |....FileCore_Dis|
0000f330  63 4f 70 20 35 0a 53 65  65 6b 20 73 65 63 74 6f  |cOp 5.Seek secto|
0000f340  72 0a 0a 3d 3e 09 52 31  20 3d 09 35 20 2b 20 3c  |r..=>.R1 =.5 + <|
0000f350  66 6c 61 67 73 3d 3e 46  69 6c 65 43 6f 72 65 5f  |flags=>FileCore_|
0000f360  44 69 73 63 4f 70 5f 66  6c 61 67 73 3e 0a 09 52  |DiscOp_flags>..R|
0000f370  32 20 3d 09 3c 64 69 73  63 20 61 64 64 72 65 73  |2 =.<disc addres|
0000f380  73 3d 3e 46 69 6c 65 43  6f 72 65 5f 64 69 73 63  |s=>FileCore_disc|
0000f390  61 64 64 72 65 73 73 3e  0a 0a 54 68 69 73 20 63  |address>..This c|
0000f3a0  61 6c 6c 20 69 73 20 6f  6e 6c 79 20 75 73 65 64  |all is only used|
0000f3b0  20 74 6f 20 70 61 72 6b  20 74 68 65 20 64 69 73  | to park the dis|
0000f3c0  63 2e 00 00 44 41 54 41  7d 00 00 00 46 69 6c 65  |c...DATA}...File|
0000f3d0  43 6f 72 65 5f 44 69 73  63 4f 70 20 36 0a 52 65  |Core_DiscOp 6.Re|
0000f3e0  73 74 6f 72 65 20 3f 3f  3f 0a 0a 3d 3e 09 52 31  |store ???..=>.R1|
0000f3f0  20 3d 09 36 20 2b 20 3c  66 6c 61 67 73 3d 3e 46  | =.6 + <flags=>F|
0000f400  69 6c 65 43 6f 72 65 5f  44 69 73 63 4f 70 5f 66  |ileCore_DiscOp_f|
0000f410  6c 61 67 73 3e 0a 09 52  32 20 3d 09 3c 64 69 73  |lags>..R2 =.<dis|
0000f420  63 20 61 64 64 72 65 73  73 3d 3e 46 69 6c 65 43  |c address=>FileC|
0000f430  6f 72 65 5f 64 69 73 63  61 64 64 72 65 73 73 3e  |ore_discaddress>|
0000f440  0a 00 00 00 44 41 54 41  e9 00 00 00 46 69 6c 65  |....DATA....File|
0000f450  43 6f 72 65 5f 44 69 73  63 4f 70 20 37 2c 38 0a  |Core_DiscOp 7,8.|
0000f460  53 74 65 70 20 69 6e 2f  6f 75 74 20 61 20 74 72  |Step in/out a tr|
0000f470  61 63 6b 0a 0a 3d 3e 09  52 31 20 3d 09 37 20 6f  |ack..=>.R1 =.7 o|
0000f480  72 20 38 20 2b 20 3c 66  6c 61 67 73 3d 3e 46 69  |r 8 + <flags=>Fi|
0000f490  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 5f 66 6c  |leCore_DiscOp_fl|
0000f4a0  61 67 73 3e 0a 0a 54 68  65 73 65 20 61 72 65 20  |ags>..These are |
0000f4b0  6f 6e 6c 79 20 73 75 70  70 6f 72 74 65 64 20 62  |only supported b|
0000f4c0  79 20 31 37 37 32 20 64  69 73 63 20 63 6f 6e 74  |y 1772 disc cont|
0000f4d0  72 6f 6c 6c 65 72 73 2c  20 65 67 20 74 68 6f 73  |rollers, eg thos|
0000f4e0  65 20 66 6f 75 6e 64 20  69 6e 20 74 68 65 20 41  |e found in the A|
0000f4f0  35 30 30 30 2c 20 61 6e  64 20 73 68 6f 75 6c 64  |5000, and should|
0000f500  20 6e 6f 74 20 62 65 20  75 73 65 64 20 73 6f 20  | not be used so |
0000f510  61 73 20 74 6f 20 6d 61  69 6e 74 61 69 6e 20 63  |as to maintain c|
0000f520  6f 6d 70 61 74 69 62 69  6c 69 74 79 2e 00 00 00  |ompatibility....|
0000f530  44 41 54 41 b7 02 00 00  46 69 6c 65 43 6f 72 65  |DATA....FileCore|
0000f540  5f 44 69 73 63 4f 70 20  39 0a 52 65 61 64 20 73  |_DiscOp 9.Read s|
0000f550  65 63 74 6f 72 73 20 66  72 6f 6d 20 64 69 73 63  |ectors from disc|
0000f560  20 76 69 61 20 63 61 63  68 65 0a 0a 3d 3e 09 52  | via cache..=>.R|
0000f570  31 20 3d 09 39 20 2b 20  3c 66 6c 61 67 73 3d 3e  |1 =.9 + <flags=>|
0000f580  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 5f  |FileCore_DiscOp_|
0000f590  66 6c 61 67 73 3e 0a 09  52 32 20 3d 09 3c 64 69  |flags>..R2 =.<di|
0000f5a0  73 63 20 61 64 64 72 65  73 73 3d 3e 46 69 6c 65  |sc address=>File|
0000f5b0  43 6f 72 65 5f 64 69 73  63 61 64 64 72 65 73 73  |Core_discaddress|
0000f5c0  3e 0a 09 52 33 20 3d 09  70 6f 69 6e 74 65 72 20  |>..R3 =.pointer |
0000f5d0  74 6f 20 62 6c 6f 63 6b  20 74 6f 20 72 65 61 64  |to block to read|
0000f5e0  20 69 6e 74 6f 0a 09 52  34 20 3d 09 73 69 7a 65  | into..R4 =.size|
0000f5f0  0a 09 52 36 20 3d 09 63  61 63 68 65 20 68 61 6e  |..R6 =.cache han|
0000f600  64 6c 65 0a 09 0a 5c 3c  3d 09 52 32 20 3d 09 6e  |dle...\<=.R2 =.n|
0000f610  65 78 74 20 64 69 73 63  20 61 64 64 72 65 73 73  |ext disc address|
0000f620  0a 09 52 33 20 3d 09 6e  65 78 74 20 66 72 65 65  |..R3 =.next free|
0000f630  20 61 64 64 72 65 73 73  0a 09 52 34 20 3d 09 75  | address..R4 =.u|
0000f640  6e 72 65 61 64 0a 09 52  36 20 3d 09 63 61 63 68  |nread..R6 =.cach|
0000f650  65 20 68 61 6e 64 6c 65  0a 0a 54 68 69 73 20 72  |e handle..This r|
0000f660  65 61 73 6f 6e 20 63 6f  64 65 20 72 65 61 64 73  |eason code reads|
0000f670  20 73 65 63 74 6f 72 73  20 76 69 61 20 61 20 63  | sectors via a c|
0000f680  61 63 68 65 20 68 65 6c  64 20 69 6e 20 52 4d 41  |ache held in RMA|
0000f690  2c 20 61 6e 64 20 69 73  6e 27 74 20 61 76 61 69  |, and isn't avai|
0000f6a0  6c 61 62 6c 65 20 75 6e  64 65 72 20 52 49 53 43  |lable under RISC|
0000f6b0  20 4f 53 20 32 2e 0a 0a  54 6f 20 73 74 61 72 74  | OS 2...To start|
0000f6c0  20 61 20 73 65 71 75 65  6e 63 65 20 6f 66 20 74  | a sequence of t|
0000f6d0  68 65 73 65 20 6f 70 65  72 61 74 69 6f 6e 73 2c  |hese operations,|
0000f6e0  20 73 65 74 20 52 36 20  28 63 61 63 68 65 20 68  | set R6 (cache h|
0000f6f0  61 6e 64 6c 65 29 20 74  6f 20 7a 65 72 6f 20 6f  |andle) to zero o|
0000f700  6e 20 65 6e 74 72 79 2e  20 49 74 73 20 76 61 6c  |n entry. Its val|
0000f710  75 65 20 77 69 6c 6c 20  62 65 20 75 70 64 61 74  |ue will be updat|
0000f720  65 64 20 6f 6e 20 65 78  69 74 2c 20 61 6e 64 20  |ed on exit, and |
0000f730  73 75 62 73 65 71 75 65  6e 74 20 63 61 6c 6c 73  |subsequent calls|
0000f740  20 73 68 6f 75 6c 64 20  75 73 65 20 74 68 69 73  | should use this|
0000f750  20 6e 65 77 20 76 61 6c  75 65 73 2e 0a 0a 42 69  | new values...Bi|
0000f760  74 73 20 34 2d 37 20 6f  66 20 52 31 20 73 68 6f  |ts 4-7 of R1 sho|
0000f770  75 6c 64 20 62 65 20 7a  65 72 6f 2c 20 62 75 74  |uld be zero, but|
0000f780  20 61 72 65 20 69 67 6e  6f 72 65 64 20 69 66 20  | are ignored if |
0000f790  73 65 74 2e 0a 0a 54 6f  20 64 69 73 63 61 72 64  |set...To discard|
0000f7a0  20 74 68 65 20 63 61 63  68 65 20 6f 6e 63 65 20  | the cache once |
0000f7b0  66 69 6e 69 73 68 65 64  2c 20 6a 75 73 74 20 63  |finished, just c|
0000f7c0  61 6c 6c 20 3c 46 69 6c  65 43 6f 72 65 5f 44 69  |all <FileCore_Di|
0000f7d0  73 63 61 72 64 52 65 61  64 53 65 63 74 6f 72 73  |scardReadSectors|
0000f7e0  43 61 63 68 65 3e 2e 00  44 41 54 41 f9 00 00 00  |Cache>..DATA....|
0000f7f0  46 69 6c 65 43 6f 72 65  5f 44 72 69 76 65 73 20  |FileCore_Drives |
0000f800  28 26 34 30 35 34 32 29  0a 23 50 61 72 65 6e 74  |(&40542).#Parent|
0000f810  20 46 69 6c 65 43 6f 72  65 5f 0a 3d 3e 09 52 38  | FileCore_.=>.R8|
0000f820  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 46 69  | =.pointer to Fi|
0000f830  6c 65 43 6f 72 65 20 69  6e 73 74 61 6e 63 65 20  |leCore instance |
0000f840  70 72 69 76 61 74 65 20  77 6f 72 64 0a 0a 3c 3d  |private word..<=|
0000f850  09 52 30 20 3d 09 64 65  66 61 75 6c 74 20 64 72  |.R0 =.default dr|
0000f860  69 76 65 0a 09 52 31 20  3d 09 6e 75 6d 62 65 72  |ive..R1 =.number|
0000f870  20 6f 66 20 66 6c 6f 70  70 79 20 64 72 69 76 65  | of floppy drive|
0000f880  73 0a 09 52 32 20 3d 09  6e 75 6d 62 65 72 20 6f  |s..R2 =.number o|
0000f890  66 20 68 61 72 64 20 64  69 73 63 20 64 72 69 76  |f hard disc driv|
0000f8a0  65 73 0a 0a 54 68 69 73  20 63 61 6c 6c 20 72 65  |es..This call re|
0000f8b0  74 75 72 6e 73 20 69 6e  66 6f 72 6d 61 74 69 6f  |turns informatio|
0000f8c0  6e 73 20 6f 6e 20 74 68  65 20 66 69 6c 69 6e 67  |ns on the filing|
0000f8d0  20 73 79 73 74 65 6d 27  73 20 64 72 69 76 65 73  | system's drives|
0000f8e0  2e 00 00 00 44 41 54 41  c4 02 00 00 46 69 6c 65  |....DATA....File|
0000f8f0  43 6f 72 65 5f 46 6c 6f  70 70 79 53 74 72 75 63  |Core_FloppyStruc|
0000f900  74 75 72 65 20 28 26 34  30 35 34 34 29 0a 23 50  |ture (&40544).#P|
0000f910  61 72 65 6e 74 20 46 69  6c 65 43 6f 72 65 5f 0a  |arent FileCore_.|
0000f920  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
0000f930  74 6f 20 62 75 66 66 65  72 20 28 6d 75 73 74 20  |to buffer (must |
0000f940  62 65 20 3e 3d 20 34 6b  20 6c 6f 6e 67 29 0a 09  |be >= 4k long)..|
0000f950  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
0000f960  3c 64 69 73 63 20 72 65  63 6f 72 64 3d 3e 46 69  |<disc record=>Fi|
0000f970  6c 65 43 6f 72 65 5f 64  69 73 63 3e 20 64 65 73  |leCore_disc> des|
0000f980  63 72 69 62 69 6e 67 20  73 68 61 70 65 20 61 6e  |cribing shape an|
0000f990  64 20 66 6f 72 6d 61 74  0a 09 52 32 09 62 69 74  |d format..R2.bit|
0000f9a0  20 37 20 73 65 74 20 3a  20 6f 6c 64 20 64 69 72  | 7 set : old dir|
0000f9b0  65 63 74 6f 72 79 20 73  74 72 75 63 74 75 72 65  |ectory structure|
0000f9c0  0a 09 20 09 62 69 74 20  36 20 73 65 74 20 3a 20  |.. .bit 6 set : |
0000f9d0  6f 6c 64 20 6d 61 70 0a  09 52 33 20 3d 09 70 6f  |old map..R3 =.po|
0000f9e0  69 6e 74 65 72 20 74 6f  20 6c 69 73 74 20 6f 66  |inter to list of|
0000f9f0  20 64 65 66 65 63 74 73  0a 0a 3c 3d 09 52 33 20  | defects..<=.R3 |
0000fa00  3d 09 74 6f 74 61 6c 20  73 69 7a 65 20 6f 66 20  |=.total size of |
0000fa10  73 74 72 75 63 74 75 72  65 20 63 72 65 61 74 65  |structure create|
0000fa20  64 0a 0a 54 68 69 73 20  63 61 6c 6c 20 63 72 65  |d..This call cre|
0000fa30  61 74 65 73 20 61 20 52  41 4d 20 69 6d 61 67 65  |ates a RAM image|
0000fa40  20 6f 66 20 61 20 66 6c  6f 70 70 79 20 64 69 73  | of a floppy dis|
0000fa50  63 20 6d 61 70 20 61 6e  64 20 72 6f 6f 74 20 64  |c map and root d|
0000fa60  69 72 65 63 74 6f 72 79  20 65 6e 74 72 79 2e 0a  |irectory entry..|
0000fa70  0a 54 68 65 20 70 6f 69  6e 74 65 72 20 74 6f 20  |.The pointer to |
0000fa80  61 20 6c 69 73 74 20 6f  66 20 64 65 66 65 63 74  |a list of defect|
0000fa90  73 20 69 73 20 6f 6e 6c  79 20 6e 65 65 64 65 64  |s is only needed|
0000faa0  20 66 6f 72 20 6e 65 77  20 6d 61 70 20 64 69 73  | for new map dis|
0000fab0  63 73 2e 20 54 68 65 79  20 6d 75 73 74 20 62 65  |cs. They must be|
0000fac0  20 62 79 74 65 20 61 64  64 72 65 73 73 65 73 20  | byte addresses |
0000fad0  67 69 76 69 6e 67 20 74  68 65 20 73 74 61 72 74  |giving the start|
0000fae0  20 6f 66 20 64 65 66 65  63 74 69 76 65 20 73 65  | of defective se|
0000faf0  63 74 6f 72 73 20 61 6e  64 20 74 65 72 6d 69 6e  |ctors and termin|
0000fb00  61 74 65 64 20 77 69 74  68 20 26 32 30 30 30 30  |ated with &20000|
0000fb10  30 30 30 2e 20 20 59 6f  75 20 64 6f 6e 27 74 20  |000.  You don't |
0000fb20  6e 65 65 64 20 74 6f 20  6b 6e 6f 77 20 61 20 46  |need to know a F|
0000fb30  69 6c 65 43 6f 72 65 20  69 6e 73 74 61 6e 63 65  |ileCore instance|
0000fb40  20 70 72 69 76 61 74 65  20 77 6f 72 64 20 74 6f  | private word to|
0000fb50  20 75 73 65 20 74 68 69  73 20 63 61 6c 6c 3b 20  | use this call; |
0000fb60  69 6e 73 74 65 61 64 20  74 68 65 20 64 69 73 63  |instead the disc|
0000fb70  20 72 65 63 6f 72 64 20  74 65 6c 6c 73 20 46 69  | record tells Fi|
0000fb80  6c 65 43 6f 72 65 20 77  68 69 63 68 20 66 69 6c  |leCore which fil|
0000fb90  69 6e 67 20 73 79 73 74  65 6d 20 69 73 20 69 6e  |ing system is in|
0000fba0  76 6f 6c 76 65 64 2e 0a  44 41 54 41 56 01 00 00  |volved..DATAV...|
0000fbb0  46 69 6c 65 43 6f 72 65  5f 46 72 65 65 53 70 61  |FileCore_FreeSpa|
0000fbc0  63 65 20 28 26 34 30 35  34 33 29 0a 23 50 61 72  |ce (&40543).#Par|
0000fbd0  65 6e 74 20 46 69 6c 65  43 6f 72 65 5f 0a 3d 3e  |ent FileCore_.=>|
0000fbe0  09 52 30 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R0 =.pointer to|
0000fbf0  20 64 69 73 63 20 73 70  65 63 69 66 69 65 72 20  | disc specifier |
0000fc00  28 6e 61 6d 65 2c 20 6f  72 20 3a 30 2c 20 65 74  |(name, or :0, et|
0000fc10  63 29 0a 09 52 38 20 3d  09 70 6f 69 6e 74 65 72  |c)..R8 =.pointer|
0000fc20  20 74 6f 20 46 69 6c 65  43 6f 72 65 20 69 6e 73  | to FileCore ins|
0000fc30  74 61 6e 63 65 20 70 72  69 76 61 74 65 20 77 6f  |tance private wo|
0000fc40  72 64 0a 0a 3c 3d 09 52  30 20 3d 09 74 6f 74 61  |rd..<=.R0 =.tota|
0000fc50  6c 20 66 72 65 65 20 73  70 61 63 65 20 6f 6e 20  |l free space on |
0000fc60  64 69 73 63 0a 09 52 31  20 3d 09 73 69 7a 65 20  |disc..R1 =.size |
0000fc70  6f 66 20 6c 61 72 67 65  73 74 20 6f 62 6a 65 63  |of largest objec|
0000fc80  74 20 74 68 61 74 20 63  61 6e 20 62 65 20 63 72  |t that can be cr|
0000fc90  65 61 74 65 64 0a 0a 54  68 69 73 20 63 61 6c 6c  |eated..This call|
0000fca0  20 72 65 74 75 72 6e 73  20 74 68 65 20 74 6f 74  | returns the tot|
0000fcb0  61 6c 20 66 72 65 65 20  73 70 61 63 65 20 6f 6e  |al free space on|
0000fcc0  20 67 69 76 65 6e 20 64  69 73 63 2c 20 61 6e 64  | given disc, and|
0000fcd0  20 74 68 65 20 6c 61 72  67 65 73 74 20 6f 62 6a  | the largest obj|
0000fce0  65 63 74 20 74 68 61 74  20 63 61 6e 20 62 65 20  |ect that can be |
0000fcf0  63 72 65 61 74 65 64 20  6f 6e 20 69 74 2e 00 00  |created on it...|
0000fd00  44 41 54 41 2c 02 00 00  46 69 6c 65 43 6f 72 65  |DATA,...FileCore|
0000fd10  5f 4c 61 79 6f 75 74 53  74 72 75 63 74 75 72 65  |_LayoutStructure|
0000fd20  0a 23 50 61 72 65 6e 74  20 46 69 6c 65 43 6f 72  |.#Parent FileCor|
0000fd30  65 5f 0a 3d 3e 09 52 30  20 3d 09 3c 69 64 65 6e  |e_.=>.R0 =.<iden|
0000fd40  74 69 66 69 65 72 3d 3e  46 69 6c 65 43 6f 72 65  |tifier=>FileCore|
0000fd50  5f 44 69 73 63 3e 20 6f  66 20 70 61 72 74 69 63  |_Disc> of partic|
0000fd60  75 6c 61 72 20 66 6f 72  6d 61 74 0a 09 52 31 20  |ular format..R1 |
0000fd70  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 61 64  |=.pointer to bad|
0000fd80  20 62 6c 6f 63 6b 20 6c  69 73 74 20 28 74 65 72  | block list (ter|
0000fd90  6d 69 6e 61 74 65 64 20  62 79 20 2d 31 29 0a 09  |minated by -1)..|
0000fda0  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
0000fdb0  6e 75 6c 6c 20 74 65 72  6d 69 6e 61 74 65 64 20  |null terminated |
0000fdc0  64 69 73 63 20 6e 61 6d  65 0a 09 52 33 20 3d 09  |disc name..R3 =.|
0000fdd0  69 6d 61 67 65 20 66 69  6c 65 20 68 61 6e 64 6c  |image file handl|
0000fde0  65 0a 0a 3c 3d 09 52 30  2d 52 33 20 70 72 65 73  |e..<=.R0-R3 pres|
0000fdf0  65 72 76 65 64 0a 0a 54  68 69 73 20 63 61 6c 6c  |erved..This call|
0000fe00  20 6c 61 79 73 20 6f 75  74 20 69 6e 74 6f 20 74  | lays out into t|
0000fe10  68 65 20 73 70 65 63 69  66 69 65 64 20 66 69 6c  |he specified fil|
0000fe20  65 20 61 20 73 65 74 20  6f 66 20 73 74 72 75 63  |e a set of struc|
0000fe30  74 75 72 65 20 63 6f 72  72 65 73 70 6f 6e 64 69  |ture correspondi|
0000fe40  6e 67 20 74 6f 20 74 68  65 20 69 64 65 6e 74 69  |ng to the identi|
0000fe50  66 69 65 64 20 66 6f 72  6d 61 74 2e 20 54 68 65  |fied format. The|
0000fe60  20 66 6f 72 6d 61 74 20  69 64 65 6e 74 69 66 69  | format identifi|
0000fe70  65 72 20 69 73 20 61 20  70 6f 69 6e 74 65 72 20  |er is a pointer |
0000fe80  74 6f 20 61 20 64 69 73  63 20 72 65 63 6f 72 64  |to a disc record|
0000fe90  2e 20 41 6e 20 65 72 72  6f 72 20 69 73 20 72 65  |. An error is re|
0000fea0  74 75 72 6e 65 64 20 69  66 20 74 68 65 20 73 70  |turned if the sp|
0000feb0  65 63 69 66 69 65 64 20  66 6f 72 6d 61 74 20 63  |ecified format c|
0000fec0  61 6e 27 74 20 6d 61 70  20 6f 75 74 20 64 65 66  |an't map out def|
0000fed0  65 63 74 73 2c 20 61 6e  64 20 74 68 65 72 65 20  |ects, and there |
0000fee0  77 65 72 65 20 64 65 66  65 63 74 73 20 69 6e 20  |were defects in |
0000fef0  74 68 65 20 64 65 66 65  63 74 20 6c 69 73 74 2e  |the defect list.|
0000ff00  0a 0a 54 68 69 73 20 63  61 6c 6c 20 69 73 6e 27  |..This call isn'|
0000ff10  74 20 61 76 61 69 6c 61  62 6c 65 20 75 6e 64 65  |t available unde|
0000ff20  72 20 52 49 53 43 20 4f  53 20 32 2e 44 41 54 41  |r RISC OS 2.DATA|
0000ff30  28 01 00 00 46 69 6c 65  43 6f 72 65 5f 4d 69 73  |(...FileCore_Mis|
0000ff40  63 4f 70 20 28 26 34 30  35 34 39 29 0a 23 50 61  |cOp (&40549).#Pa|
0000ff50  72 65 6e 74 20 46 69 6c  65 43 6f 72 65 5f 0a 3d  |rent FileCore_.=|
0000ff60  3e 09 52 30 20 3d 09 3c  72 65 61 73 6f 6e 20 63  |>.R0 =.<reason c|
0000ff70  6f 64 65 3d 3e 46 69 6c  65 43 6f 72 65 5f 4d 69  |ode=>FileCore_Mi|
0000ff80  73 63 4f 70 5f 72 65 61  73 6f 6e 3e 0a 09 52 31  |scOp_reason>..R1|
0000ff90  20 3d 09 64 72 69 76 65  20 6e 75 6d 62 65 72 0a  | =.drive number.|
0000ffa0  09 52 32 2d 52 35 20 64  65 70 65 6e 64 61 6e 74  |.R2-R5 dependant|
0000ffb0  20 6f 6e 20 72 65 61 73  6f 6e 20 63 6f 64 65 0a  | on reason code.|
0000ffc0  09 52 38 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R8 =.pointer to|
0000ffd0  20 46 69 6c 65 43 6f 72  65 20 69 6e 73 74 61 6e  | FileCore instan|
0000ffe0  63 65 20 70 72 69 76 61  74 65 20 77 6f 72 64 0a  |ce private word.|
0000fff0  0a 54 68 69 73 20 63 61  6c 6c 20 70 65 72 66 6f  |.This call perfo|
00010000  72 6d 73 20 6d 69 73 63  65 6c 6c 61 6e 65 6f 75  |rms miscellaneou|
00010010  73 20 66 75 6e 63 74 69  6f 6e 73 20 66 6f 72 20  |s functions for |
00010020  61 63 63 65 73 73 69 6e  67 20 64 72 69 76 65 73  |accessing drives|
00010030  20 64 65 70 65 6e 64 69  6e 67 20 6f 6e 20 74 68  | depending on th|
00010040  65 20 72 65 61 73 6f 6e  20 63 6f 64 65 20 69 6e  |e reason code in|
00010050  20 52 30 2e 44 41 54 41  1f 01 00 00 46 69 6c 65  | R0.DATA....File|
00010060  43 6f 72 65 5f 4d 69 73  63 4f 70 20 72 65 61 73  |Core_MiscOp reas|
00010070  6f 6e 20 63 6f 64 65 73  0a 52 30 09 4d 65 61 6e  |on codes.R0.Mean|
00010080  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 3c 4d 6f 75  |ing.#Line.0.<Mou|
00010090  6e 74 3d 3e 46 69 6c 65  43 6f 72 65 5f 4d 69 73  |nt=>FileCore_Mis|
000100a0  63 4f 70 30 3e 0a 31 09  3c 50 6f 6c 6c 20 63 68  |cOp0>.1.<Poll ch|
000100b0  61 6e 67 65 64 3d 3e 46  69 6c 65 43 6f 72 65 5f  |anged=>FileCore_|
000100c0  4d 69 73 63 4f 70 31 3e  0a 32 09 3c 4c 6f 63 6b  |MiscOp1>.2.<Lock|
000100d0  20 64 72 69 76 65 3d 3e  46 69 6c 65 43 6f 72 65  | drive=>FileCore|
000100e0  5f 4d 69 73 63 4f 70 32  3e 0a 33 09 3c 55 6e 6c  |_MiscOp2>.3.<Unl|
000100f0  6f 63 6b 20 64 72 69 76  65 3d 3e 46 69 6c 65 43  |ock drive=>FileC|
00010100  6f 72 65 5f 4d 69 73 63  4f 70 33 3e 0a 34 09 3c  |ore_MiscOp3>.4.<|
00010110  50 6f 6c 6c 20 70 65 72  69 6f 64 3d 3e 46 69 6c  |Poll period=>Fil|
00010120  65 43 6f 72 65 5f 4d 69  73 63 4f 70 34 3e 0a 0a  |eCore_MiscOp4>..|
00010130  54 68 65 20 77 68 6f 6c  65 20 73 65 74 20 6f 66  |The whole set of|
00010140  20 46 69 6c 65 43 6f 72  65 5f 4d 69 73 63 4f 70  | FileCore_MiscOp|
00010150  27 73 20 69 73 6e 27 74  20 61 76 61 69 6c 61 62  |'s isn't availab|
00010160  6c 65 20 75 6e 64 65 72  20 52 49 53 43 20 4f 53  |le under RISC OS|
00010170  20 32 2e 00 44 41 54 41  31 07 00 00 46 69 6c 65  | 2..DATA1...File|
00010180  43 6f 72 65 5f 4d 69 73  63 4f 70 20 30 0a 3d 3e  |Core_MiscOp 0.=>|
00010190  09 52 30 20 3d 09 30 20  28 72 65 61 73 6f 6e 20  |.R0 =.0 (reason |
000101a0  63 6f 64 65 29 0a 09 52  31 20 3d 09 64 72 69 76  |code)..R1 =.driv|
000101b0  65 0a 09 52 32 20 3d 09  64 69 73 63 20 61 64 64  |e..R2 =.disc add|
000101c0  72 65 73 73 20 74 6f 20  72 65 61 64 20 66 72 6f  |ress to read fro|
000101d0  6d 0a 09 52 33 20 3d 09  70 6f 69 6e 74 65 72 20  |m..R3 =.pointer |
000101e0  74 6f 20 62 75 66 66 65  72 0a 09 52 34 20 3d 09  |to buffer..R4 =.|
000101f0  6c 65 6e 67 74 68 20 74  6f 20 72 65 61 64 20 69  |length to read i|
00010200  6e 74 6f 20 62 75 66 66  65 72 0a 09 52 35 20 3d  |nto buffer..R5 =|
00010210  09 70 6f 69 6e 74 65 72  20 74 6f 20 3c 64 69 73  |.pointer to <dis|
00010220  63 20 72 65 63 6f 72 64  3d 3e 46 69 6c 65 43 6f  |c record=>FileCo|
00010230  72 65 5f 64 69 73 63 3e  20 74 6f 20 66 69 6c 6c  |re_disc> to fill|
00010240  20 69 6e 20 28 66 6c 6f  70 70 69 65 73 20 61 6e  | in (floppies an|
00010250  64 20 66 6c 6f 70 70 79  20 6c 69 6b 65 20 68 61  |d floppy like ha|
00010260  72 64 20 64 69 73 63 73  20 6f 6e 6c 79 29 0a 09  |rd discs only)..|
00010270  52 38 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R8 =.pointer to |
00010280  46 69 6c 65 43 6f 72 65  20 69 6e 73 74 61 6e 63  |FileCore instanc|
00010290  65 20 70 72 69 76 61 74  65 20 77 6f 72 64 0a 0a  |e private word..|
000102a0  3c 3d 09 52 31 2d 52 35  20 70 72 65 73 65 72 76  |<=.R1-R5 preserv|
000102b0  65 64 0a 0a 54 68 69 73  20 63 61 6c 6c 20 6d 6f  |ed..This call mo|
000102c0  75 6e 74 73 20 61 20 64  69 73 63 2c 20 72 65 61  |unts a disc, rea|
000102d0  64 69 6e 67 20 69 6e 20  74 68 65 20 64 61 74 61  |ding in the data|
000102e0  20 61 73 6b 65 64 20 66  6f 72 2e 0a 0a 46 6f 72  | asked for...For|
000102f0  20 61 20 66 6c 6f 70 70  79 20 64 69 73 63 2c 20  | a floppy disc, |
00010300  61 6e 64 20 66 6f 72 20  61 20 68 61 72 64 20 64  |and for a hard d|
00010310  69 73 63 20 77 68 65 72  65 20 62 69 74 20 34 20  |isc where bit 4 |
00010320  6f 66 20 74 68 65 20 64  65 73 63 72 69 70 74 6f  |of the descripto|
00010330  72 20 62 6c 6f 63 6b 20  66 6c 61 67 73 20 69 73  |r block flags is|
00010340  20 73 65 74 2c 20 74 68  69 73 20 63 61 6c 6c 20  | set, this call |
00010350  61 73 6b 73 20 74 68 65  20 67 69 76 65 6e 20 66  |asks the given f|
00010360  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 74 6f 20  |iling system to |
00010370  66 69 72 73 74 20 69 64  65 6e 74 69 66 79 20 74  |first identify t|
00010380  68 65 20 64 69 73 63 27  73 20 66 6f 72 6d 61 74  |he disc's format|
00010390  2e 20 54 68 65 20 73 75  67 67 65 73 74 65 64 20  |. The suggested |
000103a0  64 65 6e 73 69 74 79 20  74 6f 20 74 72 79 20 66  |density to try f|
000103b0  69 72 73 74 20 69 73 20  67 69 76 65 6e 20 69 6e  |irst is given in|
000103c0  20 74 68 65 20 64 69 73  63 20 72 65 63 6f 72 64  | the disc record|
000103d0  3b 20 69 66 20 74 68 69  73 20 69 73 20 6e 6f 74  |; if this is not|
000103e0  20 73 75 63 63 65 73 73  66 75 6c 2c 20 74 68 65  | successful, the|
000103f0  20 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 20 73  | filing system s|
00010400  68 6f 75 6c 64 20 74 68  65 6e 20 74 72 79 20 6f  |hould then try o|
00010410  74 68 65 72 20 64 65 6e  73 69 74 69 65 73 2e 20  |ther densities. |
00010420  54 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 6f 72  |The following or|
00010430  64 65 72 20 69 73 20 73  75 67 67 65 73 74 65 64  |der is suggested|
00010440  3a 0a 0a 23 49 6e 64 65  6e 74 20 32 0a 31 2e 20  |:..#Indent 2.1. |
00010450  51 75 61 64 20 64 65 6e  73 69 74 79 0a 32 2e 20  |Quad density.2. |
00010460  44 6f 75 62 6c 65 20 64  65 6e 64 69 74 79 0a 33  |Double dendity.3|
00010470  2e 20 4f 63 74 61 6c 20  64 65 6e 73 69 74 79 0a  |. Octal density.|
00010480  34 2e 20 53 69 6e 67 6c  65 20 64 65 6e 73 69 74  |4. Single densit|
00010490  79 0a 35 2e 20 44 6f 75  62 6c 65 2b 20 64 65 6e  |y.5. Double+ den|
000104a0  73 69 74 79 0a 23 49 6e  64 65 6e 74 0a 0a 4f 6e  |sity.#Indent..On|
000104b0  63 65 20 74 68 65 20 66  69 6c 69 6e 67 20 73 79  |ce the filing sy|
000104c0  73 74 65 6d 20 68 61 73  20 69 64 65 6e 74 69 66  |stem has identif|
000104d0  69 65 64 20 74 68 65 20  64 69 73 63 27 73 20 66  |ied the disc's f|
000104e0  6f 72 6d 61 74 2c 20 69  74 20 66 69 6c 6c 73 20  |ormat, it fills |
000104f0  69 6e 20 74 68 65 20 27  6c 6f 67 32 73 65 63 73  |in the 'log2secs|
00010500  69 7a 65 27 2c 20 27 73  65 63 73 70 65 72 74 72  |ize', 'secspertr|
00010510  61 63 6b 27 2c 20 27 68  65 61 64 73 27 2c 20 27  |ack', 'heads', '|
00010520  64 65 6e 73 69 74 79 27  2c 20 27 6c 6f 77 73 65  |density', 'lowse|
00010530  63 74 6f 72 27 20 61 6e  64 20 27 72 6f 6f 74 27  |ctor' and 'root'|
00010540  20 76 61 6c 75 65 73 20  69 6e 20 74 68 65 20 64  | values in the d|
00010550  69 73 63 20 72 65 63 6f  72 64 2e 0a 0a 8f 20 49  |isc record.... I|
00010560  66 20 27 6c 6f 67 32 73  63 65 73 69 7a 65 27 5c  |f 'log2scesize'\|
00010570  3c 3d 38 2c 20 74 68 65  6e 20 69 74 20 67 69 76  |<=8, then it giv|
00010580  65 73 20 27 68 65 61 64  73 27 20 74 68 65 20 76  |es 'heads' the v|
00010590  61 6c 75 65 20 28 61 63  74 75 61 6c 20 6e 75 6d  |alue (actual num|
000105a0  62 65 72 20 6f 66 20 68  65 61 64 73 20 2d 31 29  |ber of heads -1)|
000105b0  2c 20 61 6e 64 20 73 65  74 73 20 62 69 74 20 36  |, and sets bit 6|
000105c0  20 6f 66 20 27 6c 6f 77  73 65 63 74 6f 72 27 2c  | of 'lowsector',|
000105d0  20 73 6f 20 73 69 64 65  73 20 61 72 65 20 74 72  | so sides are tr|
000105e0  65 61 74 65 64 20 61 73  20 73 65 71 75 65 6e 63  |eated as sequenc|
000105f0  65 64 2e 20 4f 74 68 65  72 77 69 73 65 20 28 69  |ed. Otherwise (i|
00010600  65 20 77 68 65 6e 20 27  6c 6f 67 32 73 65 63 73  |e when 'log2secs|
00010610  69 7a 65 27 3e 38 29 20  69 74 20 67 69 76 65 73  |ize'>8) it gives|
00010620  20 27 68 65 61 64 73 27  20 74 68 65 20 76 61 6c  | 'heads' the val|
00010630  75 65 20 28 61 63 74 75  61 6c 20 6e 75 6d 62 65  |ue (actual numbe|
00010640  72 20 6f 66 20 68 65 61  64 73 29 2c 20 61 6e 64  |r of heads), and|
00010650  20 63 6c 65 61 72 73 20  62 69 74 20 36 20 6f 66  | clears bit 6 of|
00010660  20 6c 6f 77 20 73 65 63  74 6f 72 2c 20 73 6f 20  | low sector, so |
00010670  73 69 64 65 73 20 61 72  65 20 74 72 65 61 74 65  |sides are treate|
00010680  64 20 61 73 20 69 6e 74  65 72 6c 65 61 76 65 64  |d as interleaved|
00010690  2e 0a 20 20 20 0a 8f 20  54 68 65 20 66 69 6c 69  |..   .. The fili|
000106a0  6e 67 20 73 79 73 74 65  6d 20 63 6c 65 61 72 73  |ng system clears|
000106b0  20 62 69 74 20 37 20 6f  66 20 27 6c 6f 77 73 65  | bit 7 of 'lowse|
000106c0  63 74 6f 72 27 3b 20 74  68 69 73 20 69 73 20 75  |ctor'; this is u|
000106d0  73 65 64 20 61 73 20 61  6e 20 69 6e 69 74 69 61  |sed as an initia|
000106e0  6c 20 76 61 6c 75 65 2c  20 77 68 69 63 68 20 46  |l value, which F|
000106f0  69 6c 65 43 6f 72 65 20  73 75 62 73 65 71 75 65  |ileCore subseque|
00010700  6e 74 6c 79 20 63 6f 72  72 65 63 74 20 69 66 20  |ntly correct if |
00010710  6e 65 63 65 73 73 61 72  79 2e 0a 0a 48 61 76 69  |necessary...Havi|
00010720  6e 67 20 66 69 6c 6c 65  64 20 69 6e 20 74 68 65  |ng filled in the|
00010730  20 64 69 73 63 20 72 65  63 6f 72 64 2c 20 74 68  | disc record, th|
00010740  65 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |e filing system |
00010750  74 68 65 6e 20 72 65 61  64 73 20 69 6e 20 74 68  |then reads in th|
00010760  65 20 64 61 74 61 20 61  73 6b 65 64 20 66 6f 72  |e data asked for|
00010770  2e 0a 0a 46 6f 72 20 68  61 72 64 20 64 69 73 63  |...For hard disc|
00010780  73 20 77 68 65 72 65 20  62 69 74 20 34 20 6f 66  |s where bit 4 of|
00010790  20 74 68 65 20 3c 64 65  73 63 72 69 70 74 6f 72  | the <descriptor|
000107a0  20 62 6c 6f 63 6b 3d 3e  46 69 6c 65 43 6f 72 65  | block=>FileCore|
000107b0  5f 66 73 64 65 73 63 72  69 70 74 6f 72 2e 66 6c  |_fsdescriptor.fl|
000107c0  61 67 73 3e 20 66 6c 61  67 73 20 69 73 20 63 6c  |ags> flags is cl|
000107d0  65 61 72 2c 20 74 68 69  73 20 6d 65 72 65 6c 79  |ear, this merely|
000107e0  20 61 73 6b 73 20 74 68  65 20 67 69 76 65 6e 20  | asks the given |
000107f0  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 74 6f  |filing system to|
00010800  20 72 65 61 64 20 69 6e  20 74 68 65 20 64 61 74  | read in the dat|
00010810  61 20 61 73 6b 65 64 20  66 6f 72 2e 20 54 68 69  |a asked for. Thi|
00010820  73 20 74 79 70 69 63 61  6c 6c 79 20 6e 65 63 65  |s typically nece|
00010830  73 73 69 74 61 74 65 73  20 69 74 20 72 65 61 64  |ssitates it read|
00010840  69 6e 67 20 74 68 65 20  62 6f 6f 74 20 62 6c 6f  |ing the boot blo|
00010850  63 6b 20 6f 66 20 74 68  65 20 64 69 73 63 3b 20  |ck of the disc; |
00010860  69 66 20 74 68 65 20 64  69 73 63 20 64 6f 65 73  |if the disc does|
00010870  6e 27 74 20 68 61 76 65  20 6f 6e 65 2c 20 74 68  |n't have one, th|
00010880  65 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |e filing system |
00010890  67 65 6e 65 72 61 74 65  73 20 6f 6e 65 20 69 74  |generates one it|
000108a0  73 65 6c 66 2e 00 00 00  44 41 54 41 01 04 00 00  |self....DATA....|
000108b0  46 69 6c 65 43 6f 72 65  5f 4d 69 73 63 4f 70 20  |FileCore_MiscOp |
000108c0  31 0a 3d 3e 09 52 30 20  3d 09 31 20 28 72 65 61  |1.=>.R0 =.1 (rea|
000108d0  73 6f 6e 20 63 6f 64 65  29 0a 09 52 31 20 3d 09  |son code)..R1 =.|
000108e0  64 72 69 76 65 0a 09 52  32 20 3d 09 73 65 71 75  |drive..R2 =.sequ|
000108f0  65 6e 63 65 20 6e 75 6d  62 65 72 0a 09 52 38 20  |ence number..R8 |
00010900  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 46 69 6c  |=.pointer to Fil|
00010910  65 43 6f 72 65 20 70 72  69 76 61 74 65 20 69 6e  |eCore private in|
00010920  73 74 61 6e 63 65 20 77  6f 72 64 0a 0a 3c 3d 09  |stance word..<=.|
00010930  52 32 20 3d 09 73 65 71  75 65 6e 63 65 20 6e 75  |R2 =.sequence nu|
00010940  6d 62 65 72 0a 09 52 33  20 3d 09 3c 72 65 73 75  |mber..R3 =.<resu|
00010950  6c 74 20 66 6c 61 67 3d  3e 2e 66 6c 61 67 73 3e  |lt flag=>.flags>|
00010960  0a 0a 54 68 65 20 73 65  71 75 65 6e 63 65 20 6e  |..The sequence n|
00010970  75 6d 62 65 72 20 69 73  20 74 6f 20 65 6e 73 75  |umber is to ensu|
00010980  72 65 20 6e 6f 20 63 68  61 6e 67 65 73 20 61 72  |re no changes ar|
00010990  65 20 6c 6f 73 74 20 64  75 65 20 74 6f 20 72 65  |e lost due to re|
000109a0  73 65 74 20 62 65 69 6e  67 20 70 72 65 73 73 65  |set being presse|
000109b0  64 2e 20 42 6f 74 68 20  74 68 65 20 67 69 76 65  |d. Both the give|
000109c0  6e 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |n filing system |
000109d0  61 6e 64 20 74 68 65 20  46 69 6c 65 43 6f 72 65  |and the FileCore|
000109e0  20 69 6e 63 61 72 6e 61  74 69 6f 6e 20 73 68 6f  | incarnation sho|
000109f0  75 6c 64 20 73 74 61 72  74 20 77 69 74 68 20 61  |uld start with a|
00010a00  20 73 65 71 75 65 6e 63  65 20 6e 75 6d 62 65 72  | sequence number|
00010a10  20 6f 66 20 30 20 66 6f  72 20 65 61 63 68 20 64  | of 0 for each d|
00010a20  72 69 76 65 2e 20 54 68  65 20 66 69 6c 69 6e 67  |rive. The filing|
00010a30  20 73 79 73 74 65 6d 20  69 6e 63 72 65 6d 65 6e  | system incremen|
00010a40  74 73 20 74 68 65 20 73  65 71 75 65 6e 63 65 20  |ts the sequence |
00010a50  6e 75 6d 62 65 72 20 77  69 74 68 20 65 61 63 68  |number with each|
00010a60  20 63 68 61 6e 67 65 20  6f 66 20 73 74 61 74 65  | change of state|
00010a70  2e 20 49 66 20 74 68 65  20 66 69 6c 69 6e 67 20  |. If the filing |
00010a80  73 79 73 74 65 6d 20 66  69 6e 64 73 20 74 68 65  |system finds the|
00010a90  20 65 6e 74 72 79 20 73  65 71 75 65 6e 63 65 20  | entry sequence |
00010aa0  6e 75 6d 62 65 72 20 64  6f 65 73 6e 27 74 20 6d  |number doesn't m|
00010ab0  61 74 63 68 20 69 74 73  20 63 6f 70 79 20 69 74  |atch its copy it|
00010ac0  20 73 68 6f 75 6c 64 20  72 65 74 75 72 6e 20 63  | should return c|
00010ad0  68 61 6e 67 65 64 2f 6d  61 79 62 65 20 63 68 61  |hanged/maybe cha|
00010ae0  6e 67 65 64 2c 20 64 65  70 65 6e 64 69 6e 67 20  |nged, depending |
00010af0  6f 6e 20 77 68 65 74 68  65 72 20 74 68 65 20 64  |on whether the d|
00010b00  69 73 63 20 63 68 61 6e  67 65 64 20 6c 69 6e 65  |isc changed line|
00010b10  20 77 6f 72 6b 73 2f 64  6f 65 73 6e 27 74 20 77  | works/doesn't w|
00010b20  6f 72 6b 2e 0a 23 53 75  62 70 61 67 65 20 66 6c  |ork..#Subpage fl|
00010b30  61 67 73 0a 4d 69 73 63  4f 70 20 33 20 72 65 73  |ags.MiscOp 3 res|
00010b40  75 6c 74 20 66 6c 61 67  73 0a 42 69 74 20 20 20  |ult flags.Bit   |
00010b50  4d 65 61 6e 69 6e 67 20  77 68 65 6e 20 73 65 74  |Meaning when set|
00010b60  0a 23 4c 69 6e 65 0a 30  09 6e 6f 74 20 63 68 61  |.#Line.0.not cha|
00010b70  6e 67 65 64 0a 31 09 6d  61 79 62 65 20 63 68 61  |nged.1.maybe cha|
00010b80  6e 67 65 64 0a 32 09 63  68 61 6e 67 65 64 0a 33  |nged.2.changed.3|
00010b90  09 65 6d 70 74 79 0a 34  09 72 65 61 64 79 0a 35  |.empty.4.ready.5|
00010ba0  09 64 72 69 76 65 20 69  73 20 34 30 20 74 72 61  |.drive is 40 tra|
00010bb0  63 6b 0a 36 09 65 6d 70  74 79 20 77 6f 72 6b 73  |ck.6.empty works|
00010bc0  0a 37 09 63 68 61 6e 67  65 64 20 77 6f 72 6b 73  |.7.changed works|
00010bd0  0a 38 09 64 69 73 63 20  69 6e 20 64 72 69 76 65  |.8.disc in drive|
00010be0  20 69 73 20 68 69 67 68  20 64 65 6e 73 69 74 79  | is high density|
00010bf0  0a 39 09 64 65 6e 73 69  74 79 20 73 65 6e 73 69  |.9.density sensi|
00010c00  6e 67 20 77 6f 72 6b 73  0a 31 30 09 72 65 61 64  |ng works.10.read|
00010c10  79 20 77 6f 72 6b 73 0a  31 31 2d 33 31 09 72 65  |y works.11-31.re|
00010c20  73 65 72 76 65 64 20 6d  75 73 74 20 62 65 20 7a  |served must be z|
00010c30  65 72 6f 0a 0a 45 78 61  63 74 6c 79 20 6f 6e 65  |ero..Exactly one|
00010c40  20 6f 66 20 74 68 65 20  62 69 74 73 20 30 2d 33  | of the bits 0-3|
00010c50  20 6d 75 73 74 20 62 65  20 73 65 74 2e 20 4f 6e  | must be set. On|
00010c60  63 65 20 62 69 74 20 36  20 6f 72 20 37 20 69 73  |ce bit 6 or 7 is|
00010c70  20 72 65 74 75 72 6e 65  64 20 73 65 74 20 66 6f  | returned set fo|
00010c80  72 20 61 20 67 69 76 65  6e 20 64 72 69 76 65 2c  |r a given drive,|
00010c90  20 74 68 65 79 20 6d 75  73 74 20 61 6c 77 61 79  | they must alway|
00010ca0  73 20 62 65 20 73 6f 2e  0a 00 00 00 44 41 54 41  |s be so.....DATA|
00010cb0  66 01 00 00 46 69 6c 65  43 6f 72 65 5f 4d 69 73  |f...FileCore_Mis|
00010cc0  63 4f 70 20 32 0a 3d 3e  09 52 30 20 3d 09 32 20  |cOp 2.=>.R0 =.2 |
00010cd0  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
00010ce0  31 20 3d 09 66 6c 6f 70  70 79 20 64 72 69 76 65  |1 =.floppy drive|
00010cf0  0a 09 52 38 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R8 =.pointer t|
00010d00  6f 20 46 69 6c 65 43 6f  72 65 20 69 6e 73 74 61  |o FileCore insta|
00010d10  6e 63 65 20 70 72 69 76  61 74 65 20 77 6f 72 64  |nce private word|
00010d20  0a 0a 54 68 69 73 20 63  61 6c 6c 20 6c 6f 63 6b  |..This call lock|
00010d30  73 20 61 20 64 69 73 63  20 69 6e 20 61 20 64 72  |s a disc in a dr|
00010d40  69 76 65 2c 20 79 6f 75  20 63 61 6e 20 6f 6e 6c  |ive, you can onl|
00010d50  79 20 75 73 65 20 69 74  20 6f 6e 6c 79 20 66 6f  |y use it only fo|
00010d60  72 20 61 20 66 6c 6f 70  70 79 20 64 72 69 76 65  |r a floppy drive|
00010d70  2e 20 49 74 20 73 68 6f  75 6c 64 20 61 74 20 6c  |. It should at l|
00010d80  65 61 73 74 20 65 6e 73  75 72 65 20 74 68 61 74  |east ensure that|
00010d90  20 74 68 65 20 64 72 69  76 65 20 6c 69 67 68 74  | the drive light|
00010da0  20 73 74 61 79 73 20 6f  6e 20 75 6e 74 69 6c 20  | stays on until |
00010db0  75 6e 6c 6f 63 6b 65 64  2e 20 4e 6f 74 65 20 74  |unlocked. Note t|
00010dc0  68 61 74 20 6c 6f 63 6b  73 20 61 72 65 20 63 6f  |hat locks are co|
00010dd0  75 6e 74 65 64 2c 20 73  6f 20 65 61 63 68 20 27  |unted, so each '|
00010de0  6c 6f 63 6b 20 64 72 69  76 65 27 20 6d 75 73 74  |lock drive' must|
00010df0  20 62 65 20 6d 61 74 63  68 65 64 20 62 79 20 61  | be matched by a|
00010e00  6e 20 27 75 6e 6c 6f 63  6b 20 64 72 69 76 65 27  |n 'unlock drive'|
00010e10  2e 20 00 00 44 41 54 41  dd 00 00 00 46 69 6c 65  |. ..DATA....File|
00010e20  43 6f 72 65 5f 4d 69 73  63 4f 70 20 33 0a 3d 3e  |Core_MiscOp 3.=>|
00010e30  09 52 30 20 3d 09 33 20  28 72 65 61 73 6f 6e 20  |.R0 =.3 (reason |
00010e40  63 6f 64 65 29 0a 09 52  31 20 3d 09 64 72 69 76  |code)..R1 =.driv|
00010e50  65 0a 09 52 38 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R8 =.pointer |
00010e60  74 6f 20 46 69 6c 65 43  6f 72 65 20 69 6e 73 74  |to FileCore inst|
00010e70  61 6e 63 65 20 70 72 69  76 61 74 65 20 77 6f 72  |ance private wor|
00010e80  64 0a 0a 54 68 69 73 20  63 61 6c 6c 20 63 61 6e  |d..This call can|
00010e90  20 6f 6e 6c 79 20 62 65  20 63 61 6c 6c 65 64 20  | only be called |
00010ea0  66 6f 72 20 61 20 66 6c  6f 70 70 79 20 64 72 69  |for a floppy dri|
00010eb0  76 65 2e 20 49 74 20 72  65 76 65 72 73 65 73 20  |ve. It reverses |
00010ec0  61 20 73 69 6e 67 6c 65  20 4d 69 73 63 4f 70 20  |a single MiscOp |
00010ed0  27 3c 4c 6f 63 6b 20 64  72 69 76 65 3d 3e 46 69  |'<Lock drive=>Fi|
00010ee0  6c 65 43 6f 72 65 5f 4d  69 73 63 4f 70 32 3e 27  |leCore_MiscOp2>'|
00010ef0  2e 00 00 00 44 41 54 41  6a 02 00 00 46 69 6c 65  |....DATAj...File|
00010f00  43 6f 72 65 5f 4d 69 73  63 4f 70 20 34 0a 3d 3e  |Core_MiscOp 4.=>|
00010f10  09 52 30 20 3d 09 34 20  28 72 65 61 73 6f 6e 20  |.R0 =.4 (reason |
00010f20  63 6f 64 65 29 0a 09 52  31 20 3d 09 64 72 69 76  |code)..R1 =.driv|
00010f30  65 0a 09 52 38 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R8 =.pointer |
00010f40  74 6f 20 46 69 6c 65 43  6f 72 65 20 69 6e 73 74  |to FileCore inst|
00010f50  61 6e 63 65 20 70 72 69  76 61 74 65 20 77 6f 72  |ance private wor|
00010f60  64 0a 0a 3c 3d 09 52 35  20 3d 09 6d 69 6e 69 6d  |d..<=.R5 =.minim|
00010f70  75 6d 20 70 6f 6c 6c 69  6e 67 20 70 65 72 69 6f  |um polling perio|
00010f80  64 20 28 69 6e 20 63 65  6e 74 69 73 65 63 6f 6e  |d (in centisecon|
00010f90  64 73 29 2c 20 6f 72 20  2d 31 20 69 66 20 63 68  |ds), or -1 if ch|
00010fa0  61 6e 67 65 64 20 64 6f  65 73 6e 27 74 20 77 6f  |anged doesn't wo|
00010fb0  72 6b 0a 09 52 36 20 3d  09 70 6f 69 6e 74 65 72  |rk..R6 =.pointer|
00010fc0  20 74 6f 20 6d 65 64 69  61 20 74 79 70 65 20 73  | to media type s|
00010fd0  74 72 69 6e 67 20 28 65  67 20 27 64 69 73 63 27  |tring (eg 'disc'|
00010fe0  20 66 6f 72 20 41 44 46  53 0a 0a 54 68 69 73 20  | for ADFS..This |
00010ff0  63 61 6c 6c 20 69 6e 66  6f 72 6d 73 20 46 69 6c  |call informs Fil|
00011000  65 43 6f 72 65 20 6f 66  20 74 68 65 20 6d 69 6e  |eCore of the min|
00011010  69 6d 75 6d 20 70 65 72  69 6f 64 20 62 65 74 77  |imum period betw|
00011020  65 65 6e 20 70 6f 6c 6c  69 6e 67 20 66 6f 72 20  |een polling for |
00011030  64 69 73 63 20 69 6e 73  65 72 74 69 6f 6e 20 75  |disc insertion u|
00011040  6e 64 65 72 20 74 68 65  20 67 69 76 65 6e 20 66  |nder the given f|
00011050  69 6c 69 6e 67 20 73 79  73 74 65 6d 2e 20 54 68  |iling system. Th|
00011060  69 73 20 69 73 20 73 6f  20 74 68 61 74 20 64 72  |is is so that dr|
00011070  69 76 65 20 6c 69 67 68  74 73 20 64 6f 6e 27 74  |ive lights don't|
00011080  20 72 65 6d 61 69 6e 20  63 6f 6e 74 69 6e 6f 75  | remain continou|
00011090  73 6c 79 20 69 6c 6c 75  6d 69 6e 61 74 65 64 2e  |sly illuminated.|
000110a0  0a 0a 54 68 65 20 76 61  6c 75 65 73 20 61 72 65  |..The values are|
000110b0  20 72 65 2d 65 78 70 6f  72 74 65 64 20 62 79 20  | re-exported by |
000110c0  46 69 6c 65 43 6f 72 65  20 69 6e 20 74 68 65 20  |FileCore in the |
000110d0  55 70 43 61 6c 6c 73 20  3c 27 4d 65 64 69 61 20  |UpCalls <'Media |
000110e0  6e 6f 74 20 70 72 65 73  65 6e 74 27 3d 3e 4f 53  |not present'=>OS|
000110f0  5f 55 70 43 61 6c 6c 31  3e 20 61 6e 64 20 3c 27  |_UpCall1> and <'|
00011100  4d 65 64 69 61 20 6e 6f  74 20 6b 6e 6f 77 6e 27  |Media not known'|
00011110  3d 3e 4f 53 5f 55 70 43  61 6c 6c 32 3e 2e 20 54  |=>OS_UpCall2>. T|
00011120  68 65 20 76 61 6c 75 65  20 61 70 70 6c 69 65 73  |he value applies|
00011130  20 74 6f 20 61 6c 6c 20  64 72 69 76 65 73 20 72  | to all drives r|
00011140  61 74 68 65 72 20 74 68  61 6e 20 61 20 70 61 72  |ather than a par|
00011150  74 69 63 75 6c 61 72 20  64 72 69 76 65 2e 00 00  |ticular drive...|
00011160  44 49 52 24 2c 00 00 00  2c 00 00 00 8c 11 01 00  |DIR$,...,.......|
00011170  46 fd ff ff fc b9 dc 14  4f 00 00 00 13 00 00 00  |F.......O.......|
00011180  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00011190  4f 00 00 00 46 69 6c 65  49 6e 66 6f 0a 23 50 61  |O...FileInfo.#Pa|
000111a0  72 65 6e 74 20 21 52 6f  6f 74 0a 23 50 72 65 66  |rent !Root.#Pref|
000111b0  69 78 20 46 69 6c 65 49  6e 66 6f 5f 0a 43 6c 61  |ix FileInfo_.Cla|
000111c0  73 73 53 57 49 0a 50 6f  73 74 46 69 6c 74 65 72  |ssSWI.PostFilter|
000111d0  0a 50 72 65 46 69 6c 74  65 72 0a 00 44 49 52 24  |.PreFilter..DIR$|
000111e0  2c 00 00 00 2c 00 00 00  08 12 01 00 46 fd ff ff  |,...,.......F...|
000111f0  3a 42 c7 13 8c 00 00 00  13 00 00 00 00 00 00 00  |:B..............|
00011200  21 52 6f 6f 74 00 00 00  44 41 54 41 8c 00 00 00  |!Root...DATA....|
00011210  46 69 6c 65 72 41 63 74  69 6f 6e 0a 23 50 61 72  |FilerAction.#Par|
00011220  65 6e 74 20 21 52 6f 6f  74 0a 23 50 72 65 66 69  |ent !Root.#Prefi|
00011230  78 20 46 69 6c 65 72 41  63 74 69 6f 6e 5f 0a 23  |x FilerAction_.#|
00011240  54 61 62 6c 65 20 43 6f  6c 75 6d 6e 73 20 32 0a  |Table Columns 2.|
00011250  53 65 6e 64 53 65 6c 65  63 74 65 64 44 69 72 65  |SendSelectedDire|
00011260  63 74 6f 72 79 0a 53 65  6e 64 53 65 6c 65 63 74  |ctory.SendSelect|
00011270  65 64 46 69 6c 65 0a 53  65 6e 64 53 74 61 72 74  |edFile.SendStart|
00011280  4f 70 65 72 61 74 69 6f  6e 0a 23 45 6e 64 54 61  |Operation.#EndTa|
00011290  62 6c 65 0a 44 41 54 41  9f 02 00 00 0d 00 01 11  |ble.DATA........|
000112a0  f4 20 3e 53 57 49 2d 66  69 6c 74 65 72 0d 00 02  |. >SWI-filter...|
000112b0  04 0d 00 03 13 de 20 63  6f 64 65 25 20 31 30 2a  |...... code% 10*|
000112c0  31 30 32 34 0d 00 04 04  0d 00 05 17 e3 20 70 61  |1024......... pa|
000112d0  73 73 25 20 3d 20 30 20  b8 20 32 20 88 20 32 0d  |ss% = 0 . 2 . 2.|
000112e0  00 06 04 0d 00 07 14 20  20 20 20 20 20 50 25 20  |.......      P% |
000112f0  3d 20 63 6f 64 65 25 0d  00 08 04 0d 00 09 1d 5b  |= code%........[|
00011300  20 20 20 20 20 4f 50 54  20 20 20 20 20 20 20 20  |     OPT        |
00011310  70 61 73 73 25 20 20 20  0d 00 0a 04 0d 00 0b 37  |pass%   .......7|
00011320  20 20 20 20 20 20 3b 20  52 30 20 3d 20 73 65 61  |      ; R0 = sea|
00011330  72 63 68 20 77 6f 72 64  20 28 53 68 6f 75 6c 64  |rch word (Should|
00011340  20 6e 65 76 65 72 20 62  65 20 6d 6f 64 69 66 69  | never be modifi|
00011350  65 64 29 0d 00 0c 38 20  20 20 20 20 20 3b 20 52  |ed)...8      ; R|
00011360  31 20 3d 20 62 75 66 66  65 72 20 66 6f 72 20 73  |1 = buffer for s|
00011370  74 6f 72 69 6e 67 20 6d  6f 64 69 66 69 65 64 20  |toring modified |
00011380  73 65 61 72 63 68 20 77  6f 72 64 0d 00 0d 1d 20  |search word.... |
00011390  20 20 20 20 20 3b 20 52  31 33 20 3d 20 73 6d 61  |     ; R13 = sma|
000113a0  6c 6c 20 73 74 61 63 6b  0d 00 0e 04 0d 00 0f 47  |ll stack.......G|
000113b0  20 20 20 20 20 20 3b 20  52 65 74 75 72 6e 20 70  |      ; Return p|
000113c0  74 72 20 74 6f 20 73 65  61 72 63 68 20 77 6f 72  |tr to search wor|
000113d0  64 20 69 6e 20 52 30 2c  20 6f 72 20 2d 31 20 74  |d in R0, or -1 t|
000113e0  6f 20 72 65 6a 65 63 74  20 63 6f 6d 70 6c 65 74  |o reject complet|
000113f0  65 6c 79 0d 00 10 49 20  20 20 20 20 20 3b 20 28  |ely...I      ; (|
00011400  74 68 69 73 20 63 61 6e  20 62 65 20 69 6e 69 74  |this can be init|
00011410  69 61 6c 20 52 30 20 6f  72 20 52 31 20 6f 72 20  |ial R0 or R1 or |
00011420  61 20 70 6f 69 6e 74 65  72 20 69 6e 74 6f 20 6f  |a pointer into o|
00011430  6e 65 20 6f 66 20 74 68  6f 73 65 29 0d 00 11 04  |ne of those)....|
00011440  0d 00 12 1d 20 20 20 20  20 20 53 54 4d 46 44 20  |....      STMFD |
00011450  20 20 20 20 52 31 33 21  2c 7b 31 34 7d 0d 00 13  |    R13!,{14}...|
00011460  1c 20 20 20 20 20 20 4c  44 52 42 20 20 20 20 20  |.      LDRB     |
00011470  20 52 31 34 2c 5b 52 30  5d 0d 00 14 1d 20 20 20  | R14,[R0]....   |
00011480  20 20 20 43 4d 50 20 20  20 20 20 20 20 52 31 34  |   CMP       R14|
00011490  2c 23 97 22 58 22 0d 00  15 1d 20 20 20 20 20 20  |,#."X"....      |
000114a0  43 4d 50 6e 65 20 20 20  20 20 52 31 34 2c 23 97  |CMPne     R14,#.|
000114b0  22 78 22 0d 00 16 1c 20  20 20 20 20 20 41 44 44  |"x"....      ADD|
000114c0  65 71 20 20 20 20 20 52  30 2c 52 30 2c 23 31 0d  |eq     R0,R0,#1.|
000114d0  00 17 1e 20 20 20 20 20  20 4c 44 4d 46 44 20 20  |...      LDMFD  |
000114e0  20 20 20 52 31 33 21 2c  7b 50 43 7d 5e 0d 00 18  |   R13!,{PC}^...|
000114f0  04 0d 00 19 05 5d 0d 00  1a 04 0d 00 1b 05 ed 0d  |.....]..........|
00011500  00 1c 04 0d 00 1d 29 c8  99 20 22 4f 53 5f 46 69  |......).. "OS_Fi|
00011510  6c 65 22 2c 31 30 2c 22  21 50 72 65 22 2c 26 46  |le",10,"!Pre",&F|
00011520  46 43 2c 2c 63 6f 64 65  25 2c 50 25 0d 00 1e 05  |FC,,code%,P%....|
00011530  e0 0d ff 00 44 49 52 24  04 01 00 00 04 01 00 00  |....DIR$........|
00011540  38 16 01 00 46 fd ff ff  82 56 62 88 9d 00 00 00  |8...F....Vb.....|
00011550  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00011560  d8 16 01 00 46 ff ff ff  1a 71 62 88 f2 01 00 00  |....F....qb.....|
00011570  13 00 00 00 00 00 00 00  52 65 67 69 73 74 65 72  |........Register|
00011580  50 72 65 46 69 6c 74 65  72 00 00 00 cc 18 01 00  |PreFilter.......|
00011590  46 fd ff ff a2 d0 62 88  43 02 00 00 13 00 00 00  |F.....b.C.......|
000115a0  00 00 00 00 66 69 6c 74  65 72 63 6f 64 65 00 00  |....filtercode..|
000115b0  10 1b 01 00 46 ff ff ff  77 ef a8 1f 66 02 00 00  |....F...w...f...|
000115c0  13 00 00 00 00 00 00 00  52 65 67 69 73 74 65 72  |........Register|
000115d0  50 6f 73 74 46 69 6c 74  65 72 00 00 78 1d 01 00  |PostFilter..x...|
000115e0  46 ff ff ff f7 dd 62 88  a7 01 00 00 13 00 00 00  |F.....b.........|
000115f0  00 00 00 00 44 65 52 65  67 69 73 74 65 72 50 72  |....DeRegisterPr|
00011600  65 46 69 6c 74 65 72 00  20 1f 01 00 46 ff ff ff  |eFilter. ...F...|
00011610  8f 84 0e 3f c3 01 00 00  13 00 00 00 00 00 00 00  |...?............|
00011620  44 65 52 65 67 69 73 74  65 72 50 6f 73 74 46 69  |DeRegisterPostFi|
00011630  6c 74 65 72 00 00 00 00  44 41 54 41 9d 00 00 00  |lter....DATA....|
00011640  46 69 6c 74 65 72 0a 23  50 72 65 66 69 78 20 46  |Filter.#Prefix F|
00011650  69 6c 74 65 72 5f 0a 23  50 61 72 65 6e 74 20 21  |ilter_.#Parent !|
00011660  52 6f 6f 74 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |Root.#Table Colu|
00011670  6d 6e 73 20 32 0a 3c 44  65 52 65 67 69 73 74 65  |mns 2.<DeRegiste|
00011680  72 50 6f 73 74 46 69 6c  74 65 72 3e 0a 3c 44 65  |rPostFilter>.<De|
00011690  52 65 67 69 73 74 65 72  50 72 65 46 69 6c 74 65  |RegisterPreFilte|
000116a0  72 3e 0a 3c 52 65 67 69  73 74 65 72 50 6f 73 74  |r>.<RegisterPost|
000116b0  46 69 6c 74 65 72 3e 0a  3c 52 65 67 69 73 74 65  |Filter>.<Registe|
000116c0  72 50 72 65 46 69 6c 74  65 72 3e 0a 23 45 6e 64  |rPreFilter>.#End|
000116d0  54 61 62 6c 65 00 00 00  44 41 54 41 f2 01 00 00  |Table...DATA....|
000116e0  46 69 6c 74 65 72 5f 52  65 67 69 73 74 65 72 50  |Filter_RegisterP|
000116f0  72 65 46 69 6c 74 65 72  0a 23 50 61 72 65 6e 74  |reFilter.#Parent|
00011700  20 46 69 6c 74 65 72 5f  0a 3d 3e 09 52 30 20 3d  | Filter_.=>.R0 =|
00011710  09 50 6f 69 6e 74 65 72  20 74 6f 20 30 20 74 65  |.Pointer to 0 te|
00011720  72 6d 69 6e 61 74 65 64  20 66 69 6c 74 65 72 20  |rminated filter |
00011730  6e 61 6d 65 2e 20 0a 09  52 31 20 3d 09 41 64 64  |name. ..R1 =.Add|
00011740  72 65 73 73 20 6f 66 20  3c 66 69 6c 74 65 72 20  |ress of <filter |
00011750  63 6f 64 65 3d 3e 46 69  6c 74 65 72 5f 66 69 6c  |code=>Filter_fil|
00011760  74 65 72 63 6f 64 65 3e  2e 0a 09 52 32 20 3d 09  |tercode>...R2 =.|
00011770  56 61 6c 75 65 20 74 6f  20 62 65 20 70 61 73 73  |Value to be pass|
00011780  65 64 20 69 6e 20 52 31  32 2e 0a 09 52 33 20 3d  |ed in R12...R3 =|
00011790  09 54 61 73 6b 20 68 61  6e 64 6c 65 20 6f 66 20  |.Task handle of |
000117a0  74 61 73 6b 20 74 6f 20  77 68 69 63 68 20 66 69  |task to which fi|
000117b0  6c 74 65 72 20 69 73 20  61 70 70 6c 69 65 64 20  |lter is applied |
000117c0  6f 72 20 30 20 66 6f 72  20 61 6c 6c 20 74 61 73  |or 0 for all tas|
000117d0  6b 73 2e 0a 0a 5c 3c 3d  09 52 65 67 69 73 74 65  |ks...\<=.Registe|
000117e0  72 73 20 70 72 65 73 65  72 76 65 64 2e 0a 0a 41  |rs preserved...A|
000117f0  64 64 73 20 61 20 6e 65  77 20 70 72 65 2d 66 69  |dds a new pre-fi|
00011800  6c 74 65 72 20 74 6f 20  74 68 65 20 6c 69 73 74  |lter to the list|
00011810  20 6f 66 20 70 72 65 2d  66 69 6c 74 65 72 73 2e  | of pre-filters.|
00011820  0a 0a 54 68 65 20 61 64  64 72 65 73 73 20 70 6f  |..The address po|
00011830  69 6e 74 65 64 20 74 6f  20 62 79 20 52 31 20 77  |inted to by R1 w|
00011840  69 6c 6c 20 62 65 20 63  61 6c 6c 65 64 20 77 68  |ill be called wh|
00011850  65 6e 65 76 65 72 20 74  68 65 20 74 61 73 6b 20  |enever the task |
00011860  77 68 6f 27 73 20 68 61  6e 64 6c 65 20 69 73 20  |who's handle is |
00011870  70 61 73 73 65 64 20 69  6e 20 52 33 20 63 61 6c  |passed in R3 cal|
00011880  6c 73 20 3c 57 69 6d 70  5f 50 6f 6c 6c 3e 20 77  |ls <Wimp_Poll> w|
00011890  69 74 68 20 52 31 32 20  65 71 75 61 6c 20 74 6f  |ith R12 equal to|
000118a0  20 74 68 65 20 76 61 6c  75 65 20 6f 66 20 52 32  | the value of R2|
000118b0  20 77 68 65 6e 20 74 68  69 73 20 53 57 49 20 69  | when this SWI i|
000118c0  73 20 63 61 6c 6c 65 64  2e 0a 00 00 44 41 54 41  |s called....DATA|
000118d0  43 02 00 00 46 69 6c 74  65 72 20 63 6f 64 65 0a  |C...Filter code.|
000118e0  23 57 72 61 70 20 4f 66  66 0a 3d 3e 09 52 30 20  |#Wrap Off.=>.R0 |
000118f0  3d 09 45 76 65 6e 74 20  6d 61 73 6b 20 61 73 20  |=.Event mask as |
00011900  70 61 73 73 65 64 20 74  6f 20 3c 57 69 6d 70 5f  |passed to <Wimp_|
00011910  50 6f 6c 6c 3e 20 66 6f  72 20 50 72 65 20 66 69  |Poll> for Pre fi|
00011920  6c 74 65 72 73 2e 0a 09  20 09 45 76 65 6e 74 20  |lters... .Event |
00011930  72 65 61 73 6f 6e 20 63  6f 64 65 20 62 65 69 6e  |reason code bein|
00011940  67 20 72 65 74 75 72 6e  65 64 20 66 6f 72 20 50  |g returned for P|
00011950  6f 73 74 20 66 69 6c 74  65 72 73 2e 0a 09 52 31  |ost filters...R1|
00011960  20 3d 09 55 73 65 72 27  73 20 65 76 65 6e 74 20  | =.User's event |
00011970  62 75 66 66 65 72 2e 0a  09 52 32 20 3d 09 54 61  |buffer...R2 =.Ta|
00011980  73 6b 20 68 61 6e 64 6c  65 20 6f 66 20 74 61 73  |sk handle of tas|
00011990  6b 20 74 68 61 74 20 63  61 6c 6c 65 64 20 57 69  |k that called Wi|
000119a0  6d 70 5f 50 6f 6c 6c 2e  0a 09 52 31 32 3d 09 56  |mp_Poll...R12=.V|
000119b0  61 6c 75 65 20 6f 66 20  52 32 20 77 68 65 6e 20  |alue of R2 when |
000119c0  66 69 6c 74 65 72 20 72  65 67 69 73 74 65 72 65  |filter registere|
000119d0  64 0a 23 57 72 61 70 20  4f 6e 0a 5c 3c 3d 09 50  |d.#Wrap On.\<=.P|
000119e0  72 65 3a 09 49 74 20 6d  61 79 20 63 6c 65 61 72  |re:.It may clear|
000119f0  20 62 69 74 73 20 69 6e  20 72 30 20 74 6f 20 70  | bits in r0 to p|
00011a00  72 6f 76 69 64 65 20 61  20 6e 65 77 20 65 76 65  |rovide a new eve|
00011a10  6e 74 20 6d 61 73 6b 2e  0a 09 20 09 49 74 20 6d  |nt mask... .It m|
00011a20  75 73 74 20 70 72 65 73  65 72 76 65 20 61 6c 6c  |ust preserve all|
00011a30  20 6f 74 68 65 72 20 72  65 67 69 73 74 65 72 73  | other registers|
00011a40  2e 0a 0a 09 50 6f 73 74  3a 09 54 68 65 20 72 6f  |....Post:.The ro|
00011a50  75 74 69 6e 65 20 6d 61  79 20 6d 6f 64 69 66 79  |utine may modify|
00011a60  20 74 68 65 20 72 65 61  73 6f 6e 20 63 6f 64 65  | the reason code|
00011a70  20 69 6e 20 72 30 20 61  6e 64 20 74 68 65 20 63  | in r0 and the c|
00011a80  6f 6e 74 65 6e 74 73 20  6f 66 20 74 68 65 20 62  |ontents of the b|
00011a90  75 66 66 65 72 20 70 6f  69 6e 74 65 64 20 74 6f  |uffer pointed to|
00011aa0  20 62 79 20 52 31 20 74  6f 20 70 72 6f 76 69 64  | by R1 to provid|
00011ab0  65 20 61 20 6e 65 77 20  65 76 65 6e 74 2e 0a 09  |e a new event...|
00011ac0  20 09 52 30 20 3d 20 2d  31 20 74 6f 20 70 72 65  | .R0 = -1 to pre|
00011ad0  76 65 6e 74 20 65 76 65  6e 74 20 62 65 69 6e 67  |vent event being|
00011ae0  20 70 61 73 73 65 64 20  74 6f 20 74 61 73 6b 0a  | passed to task.|
00011af0  09 20 09 49 74 20 6d 75  73 74 20 70 72 65 73 65  |. .It must prese|
00011b00  72 76 65 20 52 31 20 61  6e 64 20 52 32 2e 0a 00  |rve R1 and R2...|
00011b10  44 41 54 41 66 02 00 00  46 69 6c 74 65 72 5f 52  |DATAf...Filter_R|
00011b20  65 67 69 73 74 65 72 50  6f 73 74 46 69 6c 74 65  |egisterPostFilte|
00011b30  72 0a 23 50 61 72 65 6e  74 20 46 69 6c 74 65 72  |r.#Parent Filter|
00011b40  5f 0a 3d 3e 09 52 30 20  3d 09 50 6f 69 6e 74 65  |_.=>.R0 =.Pointe|
00011b50  72 20 74 6f 20 30 20 74  65 72 6d 69 6e 61 74 65  |r to 0 terminate|
00011b60  64 20 66 69 6c 74 65 72  20 6e 61 6d 65 2e 20 0a  |d filter name. .|
00011b70  09 52 31 20 3d 09 41 64  64 72 65 73 73 73 20 6f  |.R1 =.Addresss o|
00011b80  66 20 3c 66 69 6c 74 65  72 20 63 6f 64 65 3d 3e  |f <filter code=>|
00011b90  46 69 6c 74 65 72 5f 66  69 6c 74 65 72 63 6f 64  |Filter_filtercod|
00011ba0  65 3e 2e 0a 09 52 32 20  3d 09 56 61 6c 75 65 20  |e>...R2 =.Value |
00011bb0  74 6f 20 62 65 20 70 61  73 73 65 64 20 69 6e 20  |to be passed in |
00011bc0  52 31 32 2e 0a 09 52 33  20 3d 09 54 61 73 6b 20  |R12...R3 =.Task |
00011bd0  68 61 6e 64 6c 65 20 6f  66 20 74 61 73 6b 20 74  |handle of task t|
00011be0  6f 20 77 68 69 63 68 20  66 69 6c 74 65 72 20 69  |o which filter i|
00011bf0  73 20 61 70 70 6c 69 65  64 20 6f 72 20 30 20 66  |s applied or 0 f|
00011c00  6f 72 20 61 6c 6c 20 74  61 73 6b 73 2e 0a 09 52  |or all tasks...R|
00011c10  34 20 3d 09 45 76 65 6e  74 20 3c 6d 61 73 6b 3d  |4 =.Event <mask=|
00011c20  3e 57 69 6d 70 5f 70 6f  6c 6c 6d 61 73 6b 3e 20  |>Wimp_pollmask> |
00011c30  28 31 20 62 69 74 20 6d  61 73 6b 73 20 74 68 65  |(1 bit masks the|
00011c40  20 65 76 65 6e 74 20 6f  75 74 20 61 73 20 66 6f  | event out as fo|
00011c50  72 20 3c 57 69 6d 70 5f  50 6f 6c 6c 3e 29 2e 0a  |r <Wimp_Poll>)..|
00011c60  0a 5c 3c 3d 09 52 65 67  69 73 74 65 72 73 20 70  |.\<=.Registers p|
00011c70  72 65 73 65 72 76 65 64  2e 0a 0a 41 64 64 73 20  |reserved...Adds |
00011c80  61 20 6e 65 77 20 70 6f  73 74 20 66 69 6c 74 65  |a new post filte|
00011c90  72 20 74 6f 20 74 68 65  20 6c 69 73 74 20 6f 66  |r to the list of|
00011ca0  20 70 6f 73 74 20 66 69  6c 74 65 72 73 2e 0a 20  | post filters.. |
00011cb0  20 0a 54 68 65 20 61 64  64 72 65 73 73 20 70 6f  | .The address po|
00011cc0  69 6e 74 65 64 20 74 6f  20 62 79 20 52 31 20 77  |inted to by R1 w|
00011cd0  69 6c 6c 20 62 65 20 63  61 6c 6c 65 64 20 77 68  |ill be called wh|
00011ce0  65 6e 65 76 65 72 20 74  68 65 20 57 69 6d 70 20  |enever the Wimp |
00011cf0  69 73 20 61 62 6f 75 74  20 74 6f 20 72 65 74 75  |is about to retu|
00011d00  72 6e 20 74 6f 20 74 68  65 20 74 61 73 6b 20 77  |rn to the task w|
00011d10  68 6f 27 73 20 68 61 6e  64 6c 65 20 69 73 20 70  |ho's handle is p|
00011d20  61 73 73 65 64 20 69 6e  20 52 33 20 66 72 6f 6d  |assed in R3 from|
00011d30  20 57 69 6d 70 5f 50 6f  6c 6c 20 77 69 74 68 20  | Wimp_Poll with |
00011d40  52 31 32 20 65 71 75 61  6c 20 74 6f 20 74 68 65  |R12 equal to the|
00011d50  20 76 61 6c 75 65 20 6f  66 20 52 32 20 77 68 65  | value of R2 whe|
00011d60  6e 20 74 68 69 73 20 53  57 49 20 69 73 20 63 61  |n this SWI is ca|
00011d70  6c 6c 65 64 2e 0a 00 00  44 41 54 41 a7 01 00 00  |lled....DATA....|
00011d80  46 69 6c 74 65 72 5f 44  65 52 65 67 69 73 74 65  |Filter_DeRegiste|
00011d90  72 50 72 65 46 69 6c 74  65 72 0a 23 50 61 72 65  |rPreFilter.#Pare|
00011da0  6e 74 20 46 69 6c 74 65  72 5f 0a 3d 3e 09 52 30  |nt Filter_.=>.R0|
00011db0  20 3d 09 50 6f 69 6e 74  65 72 20 74 6f 20 30 20  | =.Pointer to 0 |
00011dc0  74 65 72 6d 69 6e 61 74  65 64 20 66 69 6c 74 65  |terminated filte|
00011dd0  72 20 6e 61 6d 65 2e 20  0a 09 52 31 20 3d 09 41  |r name. ..R1 =.A|
00011de0  64 64 72 65 73 73 73 20  6f 66 20 3c 66 69 6c 74  |ddresss of <filt|
00011df0  65 72 20 63 6f 64 65 3d  3e 46 69 6c 74 65 72 5f  |er code=>Filter_|
00011e00  66 69 6c 74 65 72 63 6f  64 65 3e 2e 0a 09 52 32  |filtercode>...R2|
00011e10  20 3d 09 56 61 6c 75 65  20 74 6f 20 62 65 20 70  | =.Value to be p|
00011e20  61 73 73 65 64 20 69 6e  20 52 31 32 2e 0a 09 52  |assed in R12...R|
00011e30  33 20 3d 09 54 61 73 6b  20 68 61 6e 64 6c 65 20  |3 =.Task handle |
00011e40  6f 66 20 74 61 73 6b 20  74 6f 20 77 68 69 63 68  |of task to which|
00011e50  20 66 69 6c 74 65 72 20  77 61 73 20 61 70 70 6c  | filter was appl|
00011e60  69 65 64 2e 0a 0a 5c 3c  3d 09 52 65 67 69 73 74  |ied...\<=.Regist|
00011e70  65 72 73 20 70 72 65 73  65 72 76 65 64 2e 0a 09  |ers preserved...|
00011e80  46 69 6c 74 65 72 20 64  65 2d 72 65 67 69 73 74  |Filter de-regist|
00011e90  65 72 65 64 2e 0a 0a 52  65 6d 6f 76 65 73 20 61  |ered...Removes a|
00011ea0  20 70 72 65 20 66 69 6c  74 65 72 20 66 72 6f 6d  | pre filter from|
00011eb0  20 74 68 65 20 6c 69 73  74 20 6f 66 20 70 72 65  | the list of pre|
00011ec0  20 66 69 6c 74 65 72 73  2e 0a 0a 4e 6f 74 65 3a  | filters...Note:|
00011ed0  20 41 6c 6c 20 72 65 67  6f 73 74 65 72 73 20 6d  | All regosters m|
00011ee0  75 73 74 20 62 65 20 74  68 65 20 73 61 6d 65 20  |ust be the same |
00011ef0  61 73 20 74 68 6f 73 65  20 70 61 73 73 65 64 20  |as those passed |
00011f00  74 6f 20 3c 46 69 6c 74  65 72 5f 52 65 67 69 73  |to <Filter_Regis|
00011f10  74 65 72 50 72 65 46 69  6c 74 65 72 3e 2e 0a 00  |terPreFilter>...|
00011f20  44 41 54 41 c3 01 00 00  46 69 6c 74 65 72 5f 44  |DATA....Filter_D|
00011f30  65 52 65 67 69 73 74 65  72 50 6f 73 74 46 69 6c  |eRegisterPostFil|
00011f40  74 65 72 0a 23 50 61 72  65 6e 74 20 46 69 6c 74  |ter.#Parent Filt|
00011f50  65 72 5f 0a 3d 3e 09 52  30 20 3d 09 50 6f 69 6e  |er_.=>.R0 =.Poin|
00011f60  74 65 72 20 74 6f 20 30  20 74 65 72 6d 69 6e 61  |ter to 0 termina|
00011f70  74 65 64 20 66 69 6c 74  65 72 20 6e 61 6d 65 2e  |ted filter name.|
00011f80  20 0a 09 52 31 20 3d 09  41 64 64 72 65 73 73 73  | ..R1 =.Addresss|
00011f90  20 6f 66 20 3c 66 69 6c  74 65 72 20 63 6f 64 65  | of <filter code|
00011fa0  3d 3e 46 69 6c 74 65 72  5f 66 69 6c 74 65 72 63  |=>Filter_filterc|
00011fb0  6f 64 65 3e 2e 0a 09 52  32 20 3d 09 56 61 6c 75  |ode>...R2 =.Valu|
00011fc0  65 20 74 6f 20 62 65 20  70 61 73 73 65 64 20 69  |e to be passed i|
00011fd0  6e 20 52 31 32 2e 0a 09  52 33 20 3d 09 54 61 73  |n R12...R3 =.Tas|
00011fe0  6b 20 68 61 6e 64 6c 65  20 6f 66 20 74 61 73 6b  |k handle of task|
00011ff0  20 74 6f 20 77 68 69 63  68 20 66 69 6c 74 65 72  | to which filter|
00012000  20 77 61 73 20 61 70 70  6c 69 65 64 2e 0a 09 52  | was applied...R|
00012010  34 20 3d 09 45 76 65 6e  74 20 3c 6d 61 73 6b 3d  |4 =.Event <mask=|
00012020  3e 57 69 6d 70 5f 70 6f  6c 6c 6d 61 73 6b 3e 0a  |>Wimp_pollmask>.|
00012030  09 0a 5c 3c 3d 09 52 65  67 69 73 74 65 72 73 20  |..\<=.Registers |
00012040  70 72 65 73 65 72 76 65  64 2e 0a 09 46 69 6c 74  |preserved...Filt|
00012050  65 72 20 64 65 2d 72 65  67 69 73 74 65 72 65 64  |er de-registered|
00012060  2e 0a 0a 52 65 6d 6f 76  65 73 20 61 20 70 6f 73  |...Removes a pos|
00012070  74 20 66 69 6c 74 65 72  20 66 72 6f 6d 20 74 68  |t filter from th|
00012080  65 20 6c 69 73 74 20 6f  66 20 70 6f 73 74 20 66  |e list of post f|
00012090  69 6c 74 65 72 73 2e 0a  0a 4e 6f 74 65 3a 20 41  |ilters...Note: A|
000120a0  6c 6c 20 6d 75 73 74 20  62 65 20 74 68 65 20 73  |ll must be the s|
000120b0  61 6d 65 20 61 73 20 74  68 6f 73 65 20 70 61 73  |ame as those pas|
000120c0  73 65 64 20 74 6f 20 3c  46 69 6c 74 65 72 5f 52  |sed to <Filter_R|
000120d0  65 67 69 73 74 65 72 50  6f 73 74 46 69 6c 74 65  |egisterPostFilte|
000120e0  72 3e 0a 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |r>..DIR$,...,...|
000120f0  10 21 01 00 46 fd ff ff  3f bd dc 14 4f 00 00 00  |.!..F...?...O...|
00012100  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00012110  44 41 54 41 4f 00 00 00  46 6f 6e 74 44 62 6f 78  |DATAO...FontDbox|
00012120  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
00012130  50 72 65 66 69 78 20 46  6f 6e 74 44 62 6f 78 5f  |Prefix FontDbox_|
00012140  0a 43 6c 61 73 73 53 57  49 0a 50 6f 73 74 46 69  |.ClassSWI.PostFi|
00012150  6c 74 65 72 0a 50 72 65  46 69 6c 74 65 72 0a 00  |lter.PreFilter..|
00012160  44 49 52 24 2c 00 00 00  2c 00 00 00 8c 21 01 00  |DIR$,...,....!..|
00012170  46 fd ff ff 63 bf dc 14  49 00 00 00 13 00 00 00  |F...c...I.......|
00012180  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00012190  49 00 00 00 46 6f 6e 74  44 72 61 77 0a 23 50 61  |I...FontDraw.#Pa|
000121a0  72 65 6e 74 20 21 52 6f  6f 74 0a 23 50 72 65 66  |rent !Root.#Pref|
000121b0  69 78 20 46 6f 6e 74 44  72 61 77 5f 0a 46 69 6e  |ix FontDraw_.Fin|
000121c0  64 46 6f 6e 74 0a 4c 6f  73 65 46 6f 6e 74 0a 50  |dFont.LoseFont.P|
000121d0  61 69 6e 74 0a 00 00 00  44 49 52 24 2c 00 00 00  |aint....DIR$,...|
000121e0  2c 00 00 00 04 22 01 00  46 fd ff ff 35 c4 dc 14  |,...."..F...5...|
000121f0  4f 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |O...........!Roo|
00012200  74 00 00 00 44 41 54 41  4f 00 00 00 46 6f 6e 74  |t...DATAO...Font|
00012210  4d 65 6e 75 0a 23 50 61  72 65 6e 74 20 21 52 6f  |Menu.#Parent !Ro|
00012220  6f 74 0a 23 50 72 65 66  69 78 20 46 6f 6e 74 4d  |ot.#Prefix FontM|
00012230  65 6e 75 5f 0a 43 6c 61  73 73 53 57 49 0a 50 6f  |enu_.ClassSWI.Po|
00012240  73 74 46 69 6c 74 65 72  0a 50 72 65 46 69 6c 74  |stFilter.PreFilt|
00012250  65 72 0a 00 44 49 52 24  18 04 00 00 18 04 00 00  |er..DIR$........|
00012260  6c 26 01 00 46 fd ff ff  9e 1f 63 88 5d 02 00 00  |l&..F.....c.]...|
00012270  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00012280  cc 28 01 00 45 ff ff ff  d0 1d e4 ff d1 00 00 00  |.(..E...........|
00012290  13 00 00 00 00 00 00 00  43 61 63 68 65 41 64 64  |........CacheAdd|
000122a0  72 00 00 00 a0 29 01 00  45 ff ff ff 92 19 e4 ff  |r....)..E.......|
000122b0  33 01 00 00 13 00 00 00  00 00 00 00 43 61 72 65  |3...........Care|
000122c0  74 00 00 00 d4 2a 01 00  45 ff ff ff d1 14 e4 ff  |t....*..E.......|
000122d0  51 01 00 00 13 00 00 00  00 00 00 00 43 68 61 72  |Q...........Char|
000122e0  42 42 6f 78 00 00 00 00  28 2c 01 00 45 ff ff ff  |BBox....(,..E...|
000122f0  be 0f e4 ff a7 00 00 00  13 00 00 00 00 00 00 00  |................|
00012300  43 6f 6e 76 65 72 74 74  6f 4f 53 00 d0 2c 01 00  |ConverttoOS..,..|
00012310  45 ff ff ff 21 0c e4 ff  ab 00 00 00 13 00 00 00  |E...!...........|
00012320  00 00 00 00 43 6f 6e 76  65 72 74 74 6f 70 6f 69  |....Converttopoi|
00012330  6e 74 73 00 7c 2d 01 00  45 ff ff ff 78 07 e4 ff  |nts.|-..E...x...|
00012340  d8 00 00 00 13 00 00 00  00 00 00 00 43 75 72 72  |............Curr|
00012350  65 6e 74 46 6f 6e 74 00  54 2e 01 00 45 ff ff ff  |entFont.T...E...|
00012360  2c 04 e4 ff 6d 01 00 00  13 00 00 00 00 00 00 00  |,...m...........|
00012370  46 69 6e 64 43 61 72 65  74 00 00 00 c4 2f 01 00  |FindCaret..../..|
00012380  45 ff ff ff f7 6d e4 ff  b1 01 00 00 13 00 00 00  |E....m..........|
00012390  00 00 00 00 46 69 6e 64  43 61 72 65 74 4a 00 00  |....FindCaretJ..|
000123a0  78 31 01 00 45 ff ff ff  5c 86 e4 ff 72 01 00 00  |x1..E...\...r...|
000123b0  13 00 00 00 00 00 00 00  46 69 6e 64 46 6f 6e 74  |........FindFont|
000123c0  00 00 00 00 ec 32 01 00  45 ff ff ff f7 ef e3 ff  |.....2..E.......|
000123d0  17 01 00 00 13 00 00 00  00 00 00 00 46 75 74 75  |............Futu|
000123e0  72 65 46 6f 6e 74 00 00  04 34 01 00 45 ff ff ff  |reFont...4..E...|
000123f0  43 fe e3 ff f2 00 00 00  13 00 00 00 00 00 00 00  |C...............|
00012400  4c 69 73 74 46 6f 6e 74  73 00 00 00 f8 34 01 00  |ListFonts....4..|
00012410  45 ff ff ff 41 eb e3 ff  95 00 00 00 13 00 00 00  |E...A...........|
00012420  00 00 00 00 4c 6f 73 65  46 6f 6e 74 00 00 00 00  |....LoseFont....|
00012430  90 35 01 00 46 ff ff ff  98 5d 56 56 84 01 00 00  |.5..F....]VV....|
00012440  13 00 00 00 00 00 00 00  50 61 69 6e 74 00 00 00  |........Paint...|
00012450  14 37 01 00 46 fd ff ff  1a b0 ce 24 ec 01 00 00  |.7..F......$....|
00012460  13 00 00 00 00 00 00 00  70 61 69 6e 74 30 00 00  |........paint0..|
00012470  00 39 01 00 46 fd ff ff  23 2a 7f f5 a5 02 00 00  |.9..F...#*......|
00012480  13 00 00 00 00 00 00 00  70 61 69 6e 74 31 00 00  |........paint1..|
00012490  a8 3b 01 00 45 fd ff ff  8b 21 e4 ff ef 00 00 00  |.;..E....!......|
000124a0  13 00 00 00 00 00 00 00  70 61 69 6e 74 32 00 00  |........paint2..|
000124b0  98 3c 01 00 45 ff ff ff  2c e4 e3 ff 77 00 00 00  |.<..E...,...w...|
000124c0  13 00 00 00 00 00 00 00  52 65 61 64 43 6f 6c 6f  |........ReadColo|
000124d0  75 72 54 61 62 6c 65 00  10 3d 01 00 45 ff ff ff  |urTable..=..E...|
000124e0  d2 e1 e3 ff f8 00 00 00  13 00 00 00 00 00 00 00  |................|
000124f0  52 65 61 64 44 65 66 6e  00 00 00 00 08 3e 01 00  |ReadDefn.....>..|
00012500  45 ff ff ff ad dc e3 ff  ea 00 00 00 13 00 00 00  |E...............|
00012510  00 00 00 00 52 65 61 64  49 6e 66 6f 00 00 00 00  |....ReadInfo....|
00012520  f4 3e 01 00 45 ff ff ff  6e d7 e3 ff d7 00 00 00  |.>..E...n.......|
00012530  13 00 00 00 00 00 00 00  52 65 61 64 53 63 61 6c  |........ReadScal|
00012540  65 46 61 63 74 6f 72 00  cc 3f 01 00 45 ff ff ff  |eFactor..?..E...|
00012550  c1 cd e7 df 65 00 00 00  13 00 00 00 00 00 00 00  |....e...........|
00012560  53 65 74 46 6f 6e 74 00  34 40 01 00 45 ff ff ff  |SetFont.4@..E...|
00012570  9c d0 e3 ff e7 00 00 00  13 00 00 00 00 00 00 00  |................|
00012580  53 65 74 46 6f 6e 74 43  6f 6c 6f 75 72 73 00 00  |SetFontColours..|
00012590  1c 41 01 00 45 ff ff ff  06 c8 e3 ff 6f 01 00 00  |.A..E.......o...|
000125a0  13 00 00 00 00 00 00 00  53 65 74 50 61 6c 65 74  |........SetPalet|
000125b0  74 65 00 00 8c 42 01 00  45 ff ff ff 6d c2 e3 ff  |te...B..E...m...|
000125c0  d4 00 00 00 13 00 00 00  00 00 00 00 53 65 74 53  |............SetS|
000125d0  63 61 6c 65 46 61 63 74  6f 72 00 00 60 43 01 00  |caleFactor..`C..|
000125e0  45 ff ff ff 23 bd e3 ff  52 01 00 00 13 00 00 00  |E...#...R.......|
000125f0  00 00 00 00 53 74 72 69  6e 67 42 42 6f 78 00 00  |....StringBBox..|
00012600  b4 44 01 00 45 ff ff ff  ca b4 e3 ff 38 02 00 00  |.D..E.......8...|
00012610  13 00 00 00 00 00 00 00  53 74 72 69 6e 67 57 69  |........StringWi|
00012620  64 74 68 00 ec 46 01 00  45 ff ff ff e2 aa e3 ff  |dth..F..E.......|
00012630  a3 00 00 00 13 00 00 00  00 00 00 00 55 6e 43 61  |............UnCa|
00012640  63 68 65 46 69 6c 65 00  90 47 01 00 46 ff ff ff  |cheFile..G..F...|
00012650  7a 3e 63 88 ae 07 00 00  13 00 00 00 00 00 00 00  |z>c.............|
00012660  53 63 61 6e 53 74 72 69  6e 67 00 00 44 41 54 41  |ScanString..DATA|
00012670  5d 02 00 00 46 6f 6e 74  0a 23 50 61 72 65 6e 74  |]...Font.#Parent|
00012680  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 46  | !Root.#Prefix F|
00012690  6f 6e 74 5f 0a 23 54 61  62 6c 65 20 32 31 20 31  |ont_.#Table 21 1|
000126a0  38 0a 41 70 70 6c 79 46  69 65 6c 64 73 0a 3c 43  |8.ApplyFields.<C|
000126b0  61 63 68 65 41 64 64 72  3e 0a 3c 43 61 72 65 74  |acheAddr>.<Caret|
000126c0  3e 0a 3c 43 68 61 72 42  42 6f 78 3e 0a 3c 43 6f  |>.<CharBBox>.<Co|
000126d0  6e 76 65 72 74 74 6f 4f  53 3e 0a 3c 43 6f 6e 76  |nverttoOS>.<Conv|
000126e0  65 72 74 74 6f 70 6f 69  6e 74 73 3e 0a 3c 43 75  |erttopoints>.<Cu|
000126f0  72 72 65 6e 74 46 6f 6e  74 3e 0a 43 75 72 72 65  |rrentFont>.Curre|
00012700  6e 74 52 47 42 0a 44 65  63 6f 64 65 4d 65 6e 75  |ntRGB.DecodeMenu|
00012710  0a 3c 46 69 6e 64 43 61  72 65 74 3e 0a 3c 46 69  |.<FindCaret>.<Fi|
00012720  6e 64 43 61 72 65 74 4a  3e 0a 46 69 6e 64 46 69  |ndCaretJ>.FindFi|
00012730  65 6c 64 0a 3c 46 69 6e  64 46 6f 6e 74 3e 0a 3c  |eld.<FindFont>.<|
00012740  46 75 74 75 72 65 46 6f  6e 74 3e 0a 46 75 74 75  |FutureFont>.Futu|
00012750  72 65 52 47 42 0a 3c 4c  69 73 74 46 6f 6e 74 73  |reRGB.<ListFonts|
00012760  3e 0a 4c 6f 6f 6b 75 70  46 6f 6e 74 0a 3c 4c 6f  |>.LookupFont.<Lo|
00012770  73 65 46 6f 6e 74 3e 0a  4d 61 6b 65 42 69 74 6d  |seFont>.MakeBitm|
00012780  61 70 0a 3c 50 61 69 6e  74 3e 0a 3c 52 65 61 64  |ap.<Paint>.<Read|
00012790  43 6f 6c 6f 75 72 54 61  62 6c 65 3e 0a 3c 52 65  |ColourTable>.<Re|
000127a0  61 64 44 65 66 6e 3e 0a  52 65 61 64 45 6e 63 6f  |adDefn>.ReadEnco|
000127b0  64 69 6e 67 46 69 6c 65  6e 61 6d 65 0a 52 65 61  |dingFilename.Rea|
000127c0  64 46 6f 6e 74 4d 61 78  0a 52 65 61 64 46 6f 6e  |dFontMax.ReadFon|
000127d0  74 4d 65 74 72 69 63 73  0a 52 65 61 64 46 6f 6e  |tMetrics.ReadFon|
000127e0  74 50 72 65 66 69 78 0a  3c 52 65 61 64 49 6e 66  |tPrefix.<ReadInf|
000127f0  6f 3e 0a 3c 52 65 61 64  53 63 61 6c 65 46 61 63  |o>.<ReadScaleFac|
00012800  74 6f 72 3e 0a 52 65 61  64 54 68 72 65 73 68 6f  |tor>.ReadThresho|
00012810  6c 64 73 0a 3c 53 63 61  6e 53 74 72 69 6e 67 3e  |lds.<ScanString>|
00012820  0a 53 65 74 43 6f 6c 6f  75 72 54 61 62 6c 65 0a  |.SetColourTable.|
00012830  3c 53 65 74 46 6f 6e 74  3e 0a 3c 53 65 74 46 6f  |<SetFont>.<SetFo|
00012840  6e 74 43 6f 6c 6f 75 72  73 3e 0a 53 65 74 46 6f  |ntColours>.SetFo|
00012850  6e 74 4d 61 78 0a 3c 53  65 74 50 61 6c 65 74 74  |ntMax.<SetPalett|
00012860  65 3e 0a 3c 53 65 74 53  63 61 6c 65 46 61 63 74  |e>.<SetScaleFact|
00012870  6f 72 3e 0a 53 65 74 54  68 72 65 73 68 6f 6c 64  |or>.SetThreshold|
00012880  73 0a 3c 53 74 72 69 6e  67 42 42 6f 78 3e 0a 3c  |s.<StringBBox>.<|
00012890  53 74 72 69 6e 67 57 69  64 74 68 3e 0a 53 77 69  |StringWidth>.Swi|
000128a0  74 63 68 4f 75 74 70 75  74 54 6f 42 75 66 66 65  |tchOutputToBuffe|
000128b0  72 0a 3c 55 6e 43 61 63  68 65 46 69 6c 65 3e 0a  |r.<UnCacheFile>.|
000128c0  23 45 6e 64 54 61 62 6c  65 00 00 00 44 41 54 41  |#EndTable...DATA|
000128d0  d1 00 00 00 46 6f 6e 74  5f 43 61 63 68 65 41 64  |....Font_CacheAd|
000128e0  64 72 20 20 28 26 34 30  30 38 30 29 0a 23 50 61  |dr  (&40080).#Pa|
000128f0  72 65 6e 74 20 46 6f 6e  74 5f 0a 5c 3c 3d 09 52  |rent Font_.\<=.R|
00012900  30 20 3d 20 56 65 72 73  69 6f 6e 20 6e 75 6d 62  |0 = Version numb|
00012910  65 72 20 2a 20 31 30 30  0a 09 52 31 20 3d 20 53  |er * 100..R1 = S|
00012920  69 7a 65 20 6f 66 20 66  6f 6e 74 20 63 61 63 68  |ize of font cach|
00012930  65 0a 09 52 32 20 3d 20  42 79 74 65 73 20 75 73  |e..R2 = Bytes us|
00012940  65 64 0a 0a 54 68 69 73  20 53 57 49 20 72 65 74  |ed..This SWI ret|
00012950  75 72 6e 73 20 76 65 72  73 69 6f 6e 20 6e 75 6d  |urns version num|
00012960  62 65 72 20 6f 66 20 74  68 65 20 66 6f 6e 74 20  |ber of the font |
00012970  6d 6f 64 75 6c 65 2c 20  61 6e 64 20 69 6e 66 6f  |module, and info|
00012980  72 6d 61 74 69 6f 6e 20  61 62 6f 75 74 20 74 68  |rmation about th|
00012990  65 20 66 6f 6e 74 20 63  61 63 68 65 2e 00 00 00  |e font cache....|
000129a0  44 41 54 41 33 01 00 00  46 6f 6e 74 5f 43 61 72  |DATA3...Font_Car|
000129b0  65 74 20 20 28 26 34 30  30 38 37 29 0a 23 50 61  |et  (&40087).#Pa|
000129c0  72 65 6e 74 20 46 6f 6e  74 5f 0a 3d 3e 09 52 30  |rent Font_.=>.R0|
000129d0  20 3d 20 63 6f 6c 6f 75  72 0a 09 52 31 20 3d 20  | = colour..R1 = |
000129e0  68 65 69 67 68 74 20 28  4f 53 29 0a 09 52 32 20  |height (OS)..R2 |
000129f0  3d 20 3c 66 6c 61 67 73  3d 3e 66 6f 6e 74 5f 70  |= <flags=>font_p|
00012a00  61 69 6e 74 30 3e 2c 20  6f 6e 6c 79 20 62 69 74  |aint0>, only bit|
00012a10  20 34 20 75 73 65 64 0a  09 52 33 20 3d 20 78 0a  | 4 used..R3 = x.|
00012a20  09 52 34 20 3d 20 79 0a  0a 54 68 69 73 20 53 57  |.R4 = y..This SW|
00012a30  49 20 64 72 61 77 73 20  61 20 63 61 72 65 74 20  |I draws a caret |
00012a40  61 74 20 74 68 65 20 67  69 76 65 6e 20 70 6f 73  |at the given pos|
00012a50  69 74 69 6f 6e 2e 20 54  68 65 20 63 6f 6c 6f 75  |ition. The colou|
00012a60  72 20 69 73 20 45 4f 52  65 64 20 6f 6e 74 6f 20  |r is EORed onto |
00012a70  74 68 65 20 73 63 72 65  65 6e 2c 20 73 6f 20 74  |the screen, so t|
00012a80  6f 20 67 65 74 20 61 20  73 70 65 63 69 66 69 63  |o get a specific|
00012a90  20 63 6f 6c 6f 75 72 2c  20 79 6f 75 20 68 61 76  | colour, you hav|
00012aa0  65 20 74 6f 20 74 61 6b  65 20 74 68 65 20 62 61  |e to take the ba|
00012ab0  63 6b 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 20  |ckground colour |
00012ac0  69 6e 74 6f 20 63 6f 6e  73 69 64 65 72 61 74 69  |into considerati|
00012ad0  6f 6e 2e 00 44 41 54 41  51 01 00 00 46 6f 6e 74  |on..DATAQ...Font|
00012ae0  5f 43 68 61 72 42 42 6f  78 20 20 28 26 34 30 30  |_CharBBox  (&400|
00012af0  38 45 29 0a 3d 3e 09 52  30 20 3d 20 66 6f 6e 74  |8E).=>.R0 = font|
00012b00  20 68 61 6e 64 6c 65 0a  09 52 31 20 3d 20 63 68  | handle..R1 = ch|
00012b10  61 72 61 63 74 65 72 0a  09 52 32 20 3d 20 3c 66  |aracter..R2 = <f|
00012b20  6c 61 67 73 3d 3e 66 6f  6e 74 5f 70 61 69 6e 74  |lags=>font_paint|
00012b30  30 3e 20 28 6f 6e 6c 79  20 62 69 74 20 34 20 6d  |0> (only bit 4 m|
00012b40  61 74 74 65 72 73 29 0a  0a 5c 3c 3d 09 52 31 20  |atters)..\<=.R1 |
00012b50  3d 20 6d 69 6e 20 78 20  69 6e 63 6c 0a 09 52 32  |= min x incl..R2|
00012b60  20 3d 20 6d 69 6e 20 79  20 69 6e 63 6c 0a 09 52  | = min y incl..R|
00012b70  33 20 3d 20 6d 61 78 20  78 20 65 78 63 6c 0a 09  |3 = max x excl..|
00012b80  52 34 20 3d 20 6d 61 78  20 79 20 65 78 63 6c 0a  |R4 = max y excl.|
00012b90  0a 54 68 69 73 20 53 57  49 20 72 65 74 75 72 6e  |.This SWI return|
00012ba0  73 20 74 68 65 20 62 6f  75 6e 64 69 6e 67 20 62  |s the bounding b|
00012bb0  6f 78 20 66 6f 72 20 74  68 65 20 67 69 76 65 6e  |ox for the given|
00012bc0  20 63 68 61 72 61 63 74  65 72 20 6f 66 20 74 68  | character of th|
00012bd0  65 20 67 69 76 65 6e 20  66 6f 6e 74 2e 20 54 68  |e given font. Th|
00012be0  65 20 62 6f 75 6e 64 69  6e 67 20 62 6f 78 20 69  |e bounding box i|
00012bf0  73 20 74 68 65 20 73 6d  61 6c 6c 65 73 74 20 62  |s the smallest b|
00012c00  6f 78 20 6e 65 63 63 65  73 73 61 72 79 20 74 6f  |ox neccessary to|
00012c10  20 63 6f 76 65 72 20 74  68 65 20 63 68 61 72 61  | cover the chara|
00012c20  63 74 65 72 2e 00 00 00  44 41 54 41 a7 00 00 00  |cter....DATA....|
00012c30  46 6f 6e 74 5f 43 6f 6e  76 65 72 74 74 6f 4f 53  |Font_ConverttoOS|
00012c40  20 20 28 26 34 30 30 38  38 29 0a 3d 3e 09 52 31  |  (&40088).=>.R1|
00012c50  20 3d 20 78 20 6d 69 6c  6c 69 70 6f 69 6e 74 73  | = x millipoints|
00012c60  0a 09 52 32 20 3d 20 79  20 6d 69 6c 6c 69 70 6f  |..R2 = y millipo|
00012c70  69 6e 74 73 0a 0a 5c 3c  3d 09 52 31 20 3d 20 78  |ints..\<=.R1 = x|
00012c80  20 4f 53 0a 09 52 32 20  3d 20 79 20 4f 53 0a 0a  | OS..R2 = y OS..|
00012c90  54 68 69 73 20 53 57 49  20 63 6f 6e 76 65 72 74  |This SWI convert|
00012ca0  73 20 74 68 65 20 63 6f  6f 72 64 69 6e 61 74 65  |s the coordinate|
00012cb0  73 20 66 72 6f 6d 20 6d  69 6c 6c 69 70 6f 69 6e  |s from millipoin|
00012cc0  74 73 20 74 6f 20 4f 53  20 75 6e 69 74 73 2e 00  |ts to OS units..|
00012cd0  44 41 54 41 ab 00 00 00  46 6f 6e 74 5f 43 6f 6e  |DATA....Font_Con|
00012ce0  76 65 72 74 74 6f 70 6f  69 6e 74 73 20 20 28 26  |verttopoints  (&|
00012cf0  34 30 30 38 39 29 0a 3d  3e 09 52 31 20 3d 20 78  |40089).=>.R1 = x|
00012d00  20 4f 53 0a 09 52 32 20  3d 20 79 20 4f 53 0a 0a  | OS..R2 = y OS..|
00012d10  5c 3c 3d 09 52 31 20 3d  20 78 20 6d 69 6c 6c 69  |\<=.R1 = x milli|
00012d20  70 6f 69 6e 74 73 0a 09  52 32 20 3d 20 79 20 6d  |points..R2 = y m|
00012d30  69 6c 6c 69 70 6f 69 6e  74 73 0a 0a 54 68 69 73  |illipoints..This|
00012d40  20 53 57 49 20 63 6f 6e  76 65 72 74 73 20 74 68  | SWI converts th|
00012d50  65 20 63 6f 6f 72 64 69  6e 61 74 65 73 20 66 72  |e coordinates fr|
00012d60  6f 6d 20 4f 53 20 75 6e  69 74 73 20 74 6f 20 6d  |om OS units to m|
00012d70  69 6c 6c 69 70 6f 69 6e  74 73 2e 00 44 41 54 41  |illipoints..DATA|
00012d80  d8 00 00 00 46 6f 6e 74  5f 43 75 72 72 65 6e 74  |....Font_Current|
00012d90  46 6f 6e 74 20 20 28 26  34 30 30 38 42 29 0a 23  |Font  (&4008B).#|
00012da0  50 61 72 65 6e 74 20 46  6f 6e 74 5f 0a 5c 3c 3d  |Parent Font_.\<=|
00012db0  09 52 30 20 3d 20 68 61  6e 64 6c 65 0a 09 52 31  |.R0 = handle..R1|
00012dc0  20 3d 20 62 61 63 6b 67  72 6f 75 6e 64 20 63 6f  | = background co|
00012dd0  6c 0a 09 52 32 20 3d 20  66 6f 72 65 67 72 6f 75  |l..R2 = foregrou|
00012de0  6e 64 20 63 6f 6c 0a 09  52 33 20 3d 20 3c 66 6f  |nd col..R3 = <fo|
00012df0  72 65 67 72 6f 75 6e 64  20 63 6f 6c 20 6f 66 66  |reground col off|
00012e00  73 65 74 3d 3e 66 6f 6e  74 5f 70 61 69 6e 74 32  |set=>font_paint2|
00012e10  3e 0a 0a 54 68 69 73 20  53 57 49 20 72 65 74 75  |>..This SWI retu|
00012e20  72 6e 73 20 74 68 65 20  63 75 72 72 65 6e 74 20  |rns the current |
00012e30  63 6f 6c 6f 75 72 20 73  65 74 74 69 6e 67 73 20  |colour settings |
00012e40  6f 66 20 74 68 65 20 66  6f 6e 74 20 6d 61 6e 61  |of the font mana|
00012e50  67 65 72 2e 44 41 54 41  6d 01 00 00 46 6f 6e 74  |ger.DATAm...Font|
00012e60  5f 46 69 6e 64 43 61 72  65 74 20 20 28 26 34 30  |_FindCaret  (&40|
00012e70  30 38 44 29 0a 3d 3e 09  52 31 20 3d 20 73 74 72  |08D).=>.R1 = str|
00012e80  69 6e 67 0a 09 52 32 20  3d 20 78 20 6f 66 66 73  |ing..R2 = x offs|
00012e90  65 74 20 69 6e 20 6d 69  6c 6c 69 70 6f 69 6e 74  |et in millipoint|
00012ea0  73 0a 09 52 33 20 3d 20  79 20 6f 66 66 73 65 74  |s..R3 = y offset|
00012eb0  20 69 6e 20 6d 69 6c 6c  69 70 6f 69 6e 74 73 0a  | in millipoints.|
00012ec0  0a 5c 3c 3d 09 52 31 20  3d 20 70 74 72 20 74 6f  |.\<=.R1 = ptr to|
00012ed0  20 63 6c 6f 73 65 73 74  20 63 68 61 72 0a 09 52  | closest char..R|
00012ee0  32 20 3d 20 77 69 64 74  68 20 6f 66 20 73 74 72  |2 = width of str|
00012ef0  69 6e 67 0a 09 52 33 20  3d 20 27 68 65 69 67 68  |ing..R3 = 'heigh|
00012f00  74 27 20 6f 66 20 73 74  72 69 6e 67 0a 09 52 34  |t' of string..R4|
00012f10  20 3d 20 6c 65 6e 67 74  68 20 6f 66 20 73 74 72  | = length of str|
00012f20  69 6e 67 0a 09 52 35 20  3d 20 69 6e 64 65 78 20  |ing..R5 = index |
00012f30  6f 66 20 63 6c 6f 73 65  73 74 20 63 68 61 72 0a  |of closest char.|
00012f40  0a 54 68 69 73 20 53 57  49 20 72 65 74 75 72 6e  |.This SWI return|
00012f50  73 20 69 6e 66 6f 20 61  62 6f 75 74 20 77 68 69  |s info about whi|
00012f60  63 68 20 63 68 61 72 20  69 73 20 63 6c 6f 73 65  |ch char is close|
00012f70  73 74 20 74 6f 20 74 68  65 20 67 69 76 65 6e 20  |st to the given |
00012f80  6f 66 66 73 65 74 2e 20  54 6f 20 66 69 6e 64 20  |offset. To find |
00012f90  74 68 69 73 20 69 6e 20  61 20 6a 75 73 74 69 66  |this in a justif|
00012fa0  69 65 64 20 73 74 72 69  6e 67 2c 20 75 73 65 20  |ied string, use |
00012fb0  3c 46 6f 6e 74 5f 46 69  6e 64 43 61 72 65 74 4a  |<Font_FindCaretJ|
00012fc0  3e 00 00 00 44 41 54 41  b1 01 00 00 46 6f 6e 74  |>...DATA....Font|
00012fd0  5f 46 69 6e 64 43 61 72  65 74 4a 20 20 28 26 34  |_FindCaretJ  (&4|
00012fe0  30 30 39 36 29 0a 3d 3e  09 52 31 20 3d 20 73 74  |0096).=>.R1 = st|
00012ff0  72 69 6e 67 0a 09 52 32  20 3d 20 78 20 6f 66 66  |ring..R2 = x off|
00013000  73 65 74 20 69 6e 20 6d  69 6c 6c 69 70 6f 69 6e  |set in millipoin|
00013010  74 73 0a 09 52 33 20 3d  20 79 20 6f 66 66 73 65  |ts..R3 = y offse|
00013020  74 20 69 6e 20 6d 69 6c  6c 69 70 6f 69 6e 74 73  |t in millipoints|
00013030  0a 09 52 34 20 3d 20 78  20 6a 75 73 74 69 66 69  |..R4 = x justifi|
00013040  63 61 74 69 6f 6e 20 6f  66 66 73 65 74 0a 09 52  |cation offset..R|
00013050  35 20 3d 20 79 20 6a 75  73 74 69 66 69 63 61 74  |5 = y justificat|
00013060  69 6f 6e 20 6f 66 66 73  65 74 0a 0a 5c 3c 3d 09  |ion offset..\<=.|
00013070  52 31 20 3d 20 70 74 72  20 74 6f 20 63 6c 6f 73  |R1 = ptr to clos|
00013080  65 73 74 20 63 68 61 72  0a 09 52 32 20 3d 20 77  |est char..R2 = w|
00013090  69 64 74 68 20 6f 66 20  73 74 72 69 6e 67 0a 09  |idth of string..|
000130a0  52 33 20 3d 20 27 68 65  69 67 68 74 27 20 6f 66  |R3 = 'height' of|
000130b0  20 73 74 72 69 6e 67 0a  09 52 34 20 3d 20 6c 65  | string..R4 = le|
000130c0  6e 67 74 68 20 6f 66 20  73 74 72 69 6e 67 0a 09  |ngth of string..|
000130d0  52 35 20 3d 20 69 6e 64  65 78 20 6f 66 20 63 6c  |R5 = index of cl|
000130e0  6f 73 65 73 74 20 63 68  61 72 0a 0a 54 68 69 73  |osest char..This|
000130f0  20 53 57 49 20 72 65 74  75 72 6e 73 20 69 6e 66  | SWI returns inf|
00013100  6f 20 61 62 6f 75 74 20  77 68 69 63 68 20 63 68  |o about which ch|
00013110  61 72 20 69 73 20 63 6c  6f 73 65 73 74 20 74 6f  |ar is closest to|
00013120  20 74 68 65 20 67 69 76  65 6e 20 6f 66 66 73 65  | the given offse|
00013130  74 2e 20 54 68 65 20 73  75 70 70 6c 69 65 64 20  |t. The supplied |
00013140  6a 75 73 74 69 66 69 63  61 74 69 6f 6e 20 69 73  |justification is|
00013150  20 64 69 76 69 64 65 64  20 6f 6e 20 61 6c 6c 20  | divided on all |
00013160  73 70 61 63 65 73 20 69  6e 20 74 68 65 20 73 74  |spaces in the st|
00013170  72 69 6e 67 2e 00 00 00  44 41 54 41 72 01 00 00  |ring....DATAr...|
00013180  46 6f 6e 74 5f 46 69 6e  64 46 6f 6e 74 20 20 28  |Font_FindFont  (|
00013190  26 34 30 30 38 31 29 0a  23 50 61 72 65 6e 74 20  |&40081).#Parent |
000131a0  46 6f 6e 74 5f 0a 3d 3e  09 52 31 20 3d 20 66 6f  |Font_.=>.R1 = fo|
000131b0  6e 74 20 6e 61 6d 65 20  28 63 74 72 6c 20 74 65  |nt name (ctrl te|
000131c0  72 6d 69 6e 61 74 65 64  29 0a 09 52 32 20 3d 20  |rminated)..R2 = |
000131d0  78 20 70 6f 69 6e 74 73  20 2a 20 31 36 0a 09 52  |x points * 16..R|
000131e0  33 20 3d 20 79 20 70 6f  69 6e 74 73 20 2a 20 31  |3 = y points * 1|
000131f0  36 0a 09 52 34 20 3d 20  78 20 64 70 69 20 20 28  |6..R4 = x dpi  (|
00013200  30 20 66 6f 72 20 64 65  66 61 75 6c 74 29 0a 09  |0 for default)..|
00013210  52 35 20 3d 20 79 20 64  70 69 20 20 28 30 20 66  |R5 = y dpi  (0 f|
00013220  6f 72 20 64 65 66 61 75  6c 74 29 0a 0a 5c 3c 3d  |or default)..\<=|
00013230  09 52 30 20 3d 20 66 6f  6e 74 20 68 61 6e 64 6c  |.R0 = font handl|
00013240  65 0a 09 52 34 20 3d 20  78 20 64 70 69 0a 09 52  |e..R4 = x dpi..R|
00013250  35 20 3d 20 79 20 64 70  69 0a 0a 54 68 69 73 20  |5 = y dpi..This |
00013260  53 57 49 20 72 65 74 75  72 6e 73 20 61 20 68 61  |SWI returns a ha|
00013270  6e 64 6c 65 20 66 6f 72  20 74 68 65 20 67 69 76  |ndle for the giv|
00013280  65 6e 20 66 6f 6e 74 20  6e 61 6d 65 2e 20 54 68  |en font name. Th|
00013290  65 20 66 6f 6e 74 20 69  73 20 61 6c 73 6f 20 73  |e font is also s|
000132a0  65 74 20 61 73 20 63 75  72 72 65 6e 74 20 66 6f  |et as current fo|
000132b0  6e 74 2e 20 57 68 65 6e  20 79 6f 75 20 6e 6f 20  |nt. When you no |
000132c0  6c 6f 6e 67 65 72 20 6e  65 65 64 20 74 68 65 20  |longer need the |
000132d0  66 6f 6e 74 2c 20 75 73  65 20 3c 46 6f 6e 74 5f  |font, use <Font_|
000132e0  4c 6f 73 65 46 6f 6e 74  3e 2e 00 00 44 41 54 41  |LoseFont>...DATA|
000132f0  17 01 00 00 46 6f 6e 74  5f 46 75 74 75 72 65 46  |....Font_FutureF|
00013300  6f 6e 74 20 20 28 26 34  30 30 38 43 29 0a 23 50  |ont  (&4008C).#P|
00013310  61 72 65 6e 74 20 46 6f  6e 74 5f 0a 5c 3c 3d 09  |arent Font_.\<=.|
00013320  52 30 20 3d 20 66 6f 6e  74 20 68 61 6e 64 6c 65  |R0 = font handle|
00013330  0a 09 52 31 20 3d 20 62  61 63 6b 67 72 6f 75 6e  |..R1 = backgroun|
00013340  64 20 63 6f 6c 0a 09 52  32 20 3d 20 66 6f 72 65  |d col..R2 = fore|
00013350  67 72 6f 75 6e 64 20 63  6f 6c 0a 09 52 33 20 3d  |ground col..R3 =|
00013360  20 3c 66 6f 72 65 67 72  6f 75 6e 64 20 63 6f 6c  | <foreground col|
00013370  20 6f 66 66 73 65 74 3d  3e 66 6f 6e 74 5f 70 61  | offset=>font_pa|
00013380  69 6e 74 32 3e 0a 0a 54  68 69 73 20 53 57 49 20  |int2>..This SWI |
00013390  72 65 74 75 72 6e 73 20  77 68 61 74 20 74 68 65  |returns what the|
000133a0  20 73 74 61 74 65 20 61  66 74 65 72 20 74 68 65  | state after the|
000133b0  20 6e 65 78 74 20 63 61  6c 6c 20 74 6f 20 3c 46  | next call to <F|
000133c0  6f 6e 74 5f 50 61 69 6e  74 3e 20 77 6f 75 6c 64  |ont_Paint> would|
000133d0  20 62 65 2e 20 59 6f 75  20 6d 75 73 74 20 66 69  | be. You must fi|
000133e0  72 73 74 20 68 61 76 65  20 63 61 6c 6c 65 64 20  |rst have called |
000133f0  3c 46 6f 6e 74 5f 53 74  72 69 6e 67 57 69 64 74  |<Font_StringWidt|
00013400  68 3e 2e 00 44 41 54 41  f2 00 00 00 46 6f 6e 74  |h>..DATA....Font|
00013410  5f 4c 69 73 74 46 6f 6e  74 73 20 20 28 26 34 30  |_ListFonts  (&40|
00013420  30 39 31 29 0a 23 50 61  72 65 6e 74 20 46 6f 6e  |091).#Parent Fon|
00013430  74 5f 0a 3d 3e 09 52 31  20 3d 20 34 30 2d 62 79  |t_.=>.R1 = 40-by|
00013440  74 65 20 62 75 66 66 65  72 0a 09 52 32 20 3d 20  |te buffer..R2 = |
00013450  63 6f 75 6e 74 20 28 30  20 66 6f 72 20 66 69 72  |count (0 for fir|
00013460  73 74 20 63 61 6c 6c 29  0a 09 52 33 20 3d 20 70  |st call)..R3 = p|
00013470  61 74 68 20 73 74 72 69  6e 67 2c 20 6f 72 20 2d  |ath string, or -|
00013480  31 20 66 6f 72 20 46 6f  6e 74 24 50 61 74 68 0a  |1 for Font$Path.|
00013490  0a 5c 3c 3d 09 52 32 20  3d 20 63 6f 75 6e 74 20  |.\<=.R2 = count |
000134a0  28 2d 31 20 69 66 20 6e  6f 20 6d 6f 72 65 29 0a  |(-1 if no more).|
000134b0  0a 54 68 69 73 20 53 57  49 20 72 65 74 75 72 6e  |.This SWI return|
000134c0  73 2c 20 6f 6e 65 20 61  74 20 61 20 74 69 6d 65  |s, one at a time|
000134d0  2c 20 74 68 65 20 66 6f  6e 74 73 20 66 6f 75 6e  |, the fonts foun|
000134e0  64 20 77 69 74 68 20 74  68 65 20 67 69 76 65 6e  |d with the given|
000134f0  20 70 61 74 68 20 00 00  44 41 54 41 95 00 00 00  | path ..DATA....|
00013500  46 6f 6e 74 5f 4c 6f 73  65 46 6f 6e 74 20 20 28  |Font_LoseFont  (|
00013510  26 34 30 30 38 32 29 0a  23 50 61 72 65 6e 74 20  |&40082).#Parent |
00013520  46 6f 6e 74 5f 0a 3d 3e  20 52 30 20 3d 20 66 6f  |Font_.=> R0 = fo|
00013530  6e 74 20 68 61 6e 64 6c  65 0a 0a 54 68 69 73 20  |nt handle..This |
00013540  53 57 49 20 74 65 6c 6c  73 20 74 68 65 20 66 6f  |SWI tells the fo|
00013550  6e 74 20 6d 61 6e 61 67  65 72 20 74 68 61 74 20  |nt manager that |
00013560  74 68 65 20 66 6f 6e 74  20 69 73 20 6e 6f 20 6c  |the font is no l|
00013570  6f 6e 67 65 72 20 6e 65  65 64 65 64 20 62 79 20  |onger needed by |
00013580  79 6f 75 72 20 70 72 6f  67 72 61 6d 2e 00 00 00  |your program....|
00013590  44 41 54 41 84 01 00 00  46 6f 6e 74 5f 50 61 69  |DATA....Font_Pai|
000135a0  6e 74 20 20 28 26 34 30  30 38 36 29 0a 23 50 61  |nt  (&40086).#Pa|
000135b0  72 65 6e 74 20 46 6f 6e  74 5f 0a 3d 3e 09 52 30  |rent Font_.=>.R0|
000135c0  20 3d 09 46 6f 6e 74 20  68 61 6e 64 6c 65 20 28  | =.Font handle (|
000135d0  69 66 20 61 70 70 6c 69  63 61 62 6c 65 29 0a 09  |if applicable)..|
000135e0  52 31 20 3d 09 3c 53 74  72 69 6e 67 3d 3e 66 6f  |R1 =.<String=>fo|
000135f0  6e 74 5f 70 61 69 6e 74  31 3e 0a 09 52 32 20 3d  |nt_paint1>..R2 =|
00013600  09 3c 46 6c 61 67 73 3d  3e 66 6f 6e 74 5f 70 61  |.<Flags=>font_pa|
00013610  69 6e 74 30 3e 0a 09 52  33 20 3d 09 78 0a 09 52  |int0>..R3 =.x..R|
00013620  34 20 3d 09 79 0a 09 52  35 20 3d 09 70 6f 69 6e  |4 =.y..R5 =.poin|
00013630  74 65 72 20 74 6f 20 62  6c 6f 63 6b 20 28 69 66  |ter to block (if|
00013640  20 61 70 70 6c 69 63 61  62 6c 65 29 0a 09 52 36  | applicable)..R6|
00013650  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 74 72  | =.pointer to tr|
00013660  61 6e 73 66 6f 72 6d 61  74 69 6f 6e 20 6d 61 74  |ansformation mat|
00013670  72 69 78 20 28 69 66 20  61 70 70 6c 69 63 61 62  |rix (if applicab|
00013680  6c 65 29 0a 09 52 37 20  3d 09 4c 65 6e 67 74 68  |le)..R7 =.Length|
00013690  20 28 69 66 20 61 70 70  6c 69 63 61 62 6c 65 29  | (if applicable)|
000136a0  0a 0a 54 68 69 73 20 53  57 49 20 70 61 69 6e 74  |..This SWI paint|
000136b0  73 20 61 20 73 74 72 69  6e 67 20 74 6f 20 74 68  |s a string to th|
000136c0  65 20 73 63 72 65 65 6e  20 75 73 69 6e 67 20 74  |e screen using t|
000136d0  68 65 20 63 75 72 72 65  6e 74 6c 79 20 73 65 6c  |he currently sel|
000136e0  65 63 74 65 64 20 66 6f  6e 74 2c 20 6f 72 20 61  |ected font, or a|
000136f0  20 73 70 65 63 69 66 69  63 20 66 6f 6e 74 20 69  | specific font i|
00013700  66 20 66 6c 61 67 73 20  69 6e 64 69 63 61 74 65  |f flags indicate|
00013710  20 73 6f 2e 44 41 54 41  ec 01 00 00 46 6f 6e 74  | so.DATA....Font|
00013720  5f 50 61 69 6e 74 20 46  6c 61 67 73 0a 62 69 74  |_Paint Flags.bit|
00013730  09 6d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.meaning.#Line.0|
00013740  09 31 20 3d 20 6a 75 73  74 69 66 79 2c 20 30 20  |.1 = justify, 0 |
00013750  3d 20 6e 6f 74 0a 31 09  31 20 3d 20 72 75 62 2d  |= not.1.1 = rub-|
00013760  6f 75 74 20 62 6f 78 2c  20 30 20 3d 20 6e 6f 74  |out box, 0 = not|
00013770  0a 34 09 31 20 3d 20 78  20 61 6e 64 20 79 20 61  |.4.1 = x and y a|
00013780  72 65 20 69 6e 20 4f 53  2c 20 30 20 3d 20 6d 69  |re in OS, 0 = mi|
00013790  6c 6c 69 70 6f 69 6e 74  73 0a 35 09 47 69 76 65  |llipoints.5.Give|
000137a0  6e 20 62 6c 6f 63 6b 20  3f 0a 36 09 47 69 76 65  |n block ?.6.Give|
000137b0  6e 20 74 72 61 6e 73 66  6f 72 6d 61 74 69 6f 6e  |n transformation|
000137c0  20 3f 0a 37 09 47 69 76  65 6e 20 6c 65 6e 67 74  | ?.7.Given lengt|
000137d0  68 0a 38 09 47 69 76 65  6e 20 66 6f 6e 74 0a 39  |h.8.Given font.9|
000137e0  09 4b 65 72 6e 0a 31 30  09 52 69 67 68 74 20 74  |.Kern.10.Right t|
000137f0  6f 20 6c 65 66 74 0a 31  37 09 52 65 74 75 72 6e  |o left.17.Return|
00013800  20 63 61 72 65 74 20 70  6f 73 69 74 69 6f 6e 0a  | caret position.|
00013810  31 38 09 52 65 74 75 72  6e 20 42 6f 75 6e 64 69  |18.Return Boundi|
00013820  6e 67 20 62 6f 78 0a 31  39 09 52 65 74 75 72 6e  |ng box.19.Return|
00013830  20 4d 61 74 72 69 78 0a  32 30 09 52 65 74 75 72  | Matrix.20.Retur|
00013840  6e 20 73 70 6c 69 74 20  63 6f 75 6e 74 0a 4f 74  |n split count.Ot|
00013850  68 65 72 73 09 52 65 73  65 72 76 65 64 2e 20 5a  |hers.Reserved. Z|
00013860  65 72 6f 0a 0a 54 6f 20  75 73 65 20 6a 75 73 74  |ero..To use just|
00013870  69 66 79 2c 20 66 69 72  73 74 20 6d 6f 76 65 20  |ify, first move |
00013880  74 6f 20 72 69 67 68 74  20 73 69 64 65 2e 20 54  |to right side. T|
00013890  6f 20 75 73 65 20 72 75  62 2d 6f 75 74 20 62 6f  |o use rub-out bo|
000138a0  78 2c 20 66 69 72 73 74  20 6d 6f 76 65 20 74 6f  |x, first move to|
000138b0  20 6c 6f 77 65 72 20 6c  65 66 74 20 61 6e 64 20  | lower left and |
000138c0  74 68 65 6e 20 74 6f 20  75 70 70 65 72 20 72 69  |then to upper ri|
000138d0  67 68 74 20 6f 66 20 62  6f 78 2e 0a 0a 49 66 20  |ght of box...If |
000138e0  62 6f 74 68 2c 20 74 68  65 6e 20 64 6f 20 6a 75  |both, then do ju|
000138f0  73 74 69 66 79 20 6d 6f  76 65 20 6c 61 73 74 2e  |stify move last.|
00013900  44 41 54 41 a5 02 00 00  53 70 65 63 69 61 6c 20  |DATA....Special |
00013910  63 68 61 72 61 63 74 65  72 73 0a 53 6f 6d 65 20  |characters.Some |
00013920  63 6f 6e 74 72 6f 6c 20  63 68 61 72 61 63 74 65  |control characte|
00013930  72 73 20 68 61 76 65 20  73 70 65 63 69 61 6c 20  |rs have special |
00013940  6d 65 61 6e 69 6e 67 73  20 3a 0a 0a 20 39 09 64  |meanings :.. 9.d|
00013950  78 20 6c 6f 77 2c 6d 69  64 64 6c 65 2c 68 69 67  |x low,middle,hig|
00013960  68 09 09 3a 09 4d 6f 76  65 20 70 72 69 6e 74 20  |h..:.Move print |
00013970  70 6f 73 69 74 69 6f 6e  20 68 6f 72 69 7a 6f 6e  |position horizon|
00013980  74 61 6c 6c 79 0a 20 31  31 09 64 79 20 6c 6f 77  |tally. 11.dy low|
00013990  2c 6d 69 64 64 6c 65 2c  68 69 67 68 09 09 3a 09  |,middle,high..:.|
000139a0  4d 6f 76 65 20 70 72 69  6e 74 20 70 6f 73 69 74  |Move print posit|
000139b0  69 6f 6e 20 76 65 72 74  69 63 61 6c 6c 79 0a 20  |ion vertically. |
000139c0  31 37 09 63 6f 6c 6f 75  72 09 09 09 09 3a 09 53  |17.colour....:.S|
000139d0  65 74 20 66 6f 6e 74 20  63 6f 6c 6f 75 72 20 28  |et font colour (|
000139e0  2b 26 38 30 20 66 6f 72  20 62 61 63 6b 67 72 6f  |+&80 for backgro|
000139f0  75 6e 64 29 0a 20 31 38  09 62 61 63 6b 67 72 6f  |und). 18.backgro|
00013a00  75 6e 64 2c 20 66 6f 72  65 67 72 6f 75 6e 64 2c  |und, foreground,|
00013a10  20 6f 66 66 73 65 74 09  3a 09 73 65 65 20 3c 46  | offset.:.see <F|
00013a20  6f 6e 74 5f 53 65 74 46  6f 6e 74 43 6f 6c 6f 75  |ont_SetFontColou|
00013a30  72 73 3e 0a 20 31 39 09  62 61 63 6b 67 72 6f 75  |rs>. 19.backgrou|
00013a40  6e 64 2c 20 66 6f 72 65  67 72 6f 75 6e 64 2c 20  |nd, foreground, |
00013a50  6f 66 66 73 65 74 09 3a  09 73 65 65 20 3c 43 6f  |offset.:.see <Co|
00013a60  6c 6f 75 72 54 72 61 6e  73 5f 53 65 74 46 6f 6e  |lourTrans_SetFon|
00013a70  74 43 6f 6c 6f 75 72 73  3e 0a 20 32 31 09 63 6f  |tColours>. 21.co|
00013a80  6d 6d 65 6e 74 20 73 74  72 69 6e 67 2e 20 63 74  |mment string. ct|
00013a90  72 6c 20 74 65 72 6d 69  6e 61 74 65 64 0a 20 32  |rl terminated. 2|
00013aa0  35 09 75 6e 64 65 72 6c  69 6e 65 20 70 6f 73 2c  |5.underline pos,|
00013ab0  20 74 68 69 63 6b 6e 65  73 73 09 3a 09 74 75 72  | thickness.:.tur|
00013ac0  6e 20 75 6e 64 65 72 6c  69 6e 65 20 6f 6e 2f 6f  |n underline on/o|
00013ad0  66 66 0a 20 32 36 09 66  6f 6e 74 20 68 61 6e 64  |ff. 26.font hand|
00013ae0  6c 65 09 09 09 3a 09 73  65 65 20 3c 46 6f 6e 74  |le...:.see <Font|
00013af0  5f 53 65 74 46 6f 6e 74  3e 0a 20 32 37 09 3f 3f  |_SetFont>. 27.??|
00013b00  09 09 09 09 3a 09 48 6f  6d 54 72 66 6d 0a 20 32  |....:.HomTrfm. 2|
00013b10  38 09 3f 3f 09 09 09 09  3a 09 54 72 61 6e 73 66  |8.??....:.Transf|
00013b20  6f 72 6d 0a 20 0a 23 74  61 62 0a 20 39 2c 31 31  |orm. .#tab. 9,11|
00013b30  20 3a 20 54 68 65 20 33  20 62 79 74 65 20 70 72  | : The 3 byte pr|
00013b40  69 6e 74 2d 70 6f 73 69  74 69 6f 6e 20 69 73 20  |int-position is |
00013b50  67 69 76 65 6e 20 69 6e  20 6d 69 6c 6c 69 70 6f  |given in millipo|
00013b60  69 6e 74 73 0a 20 20 20  32 35 20 3a 20 70 6f 73  |ints.   25 : pos|
00013b70  20 26 20 74 68 69 63 6b  6e 65 73 73 20 69 73 20  | & thickness is |
00013b80  67 69 76 65 6e 20 69 6e  20 31 2f 32 35 36 74 68  |given in 1/256th|
00013b90  20 6f 66 20 63 75 72 72  65 6e 74 20 66 6f 6e 74  | of current font|
00013ba0  20 73 69 7a 65 00 00 00  44 41 54 41 ef 00 00 00  | size...DATA....|
00013bb0  43 6f 6c 6f 75 72 20 6f  66 66 73 65 74 0a 54 68  |Colour offset.Th|
00013bc0  69 73 20 69 73 20 74 68  65 20 6e 75 6d 62 65 72  |is is the number|
00013bd0  20 6f 66 20 63 6f 6c 6f  75 72 73 20 74 68 61 74  | of colours that|
00013be0  20 69 73 20 75 73 65 64  20 77 68 65 6e 20 61 6e  | is used when an|
00013bf0  74 69 20 61 6c 69 61 73  69 6e 67 2e 20 54 68 65  |ti aliasing. The|
00013c00  20 63 6f 6c 6f 75 72 73  20 75 73 65 64 20 77 69  | colours used wi|
00013c10  6c 6c 20 62 65 20 66 72  6f 6d 20 5c 3c 66 6f 72  |ll be from \<for|
00013c20  65 67 72 6f 75 6e 64 3e  20 74 6f 20 5c 3c 66 6f  |eground> to \<fo|
00013c30  72 65 67 72 6f 75 6e 64  3e 20 2b 20 5c 3c 6f 66  |reground> + \<of|
00013c40  66 73 65 74 3e 2e 20 54  68 65 20 6f 66 66 73 65  |fset>. The offse|
00013c50  74 20 63 61 6e 20 62 65  20 66 72 6f 6d 20 2d 31  |t can be from -1|
00013c60  34 20 74 6f 20 31 34 2e  20 49 66 20 6f 66 66 73  |4 to 14. If offs|
00013c70  65 74 20 69 73 20 30 2c  20 74 68 65 6e 20 6e 6f  |et is 0, then no|
00013c80  20 61 6e 74 69 2d 61 6c  69 61 73 69 6e 67 20 69  | anti-aliasing i|
00013c90  73 20 64 6f 6e 65 2e 00  44 41 54 41 77 00 00 00  |s done..DATAw...|
00013ca0  46 6f 6e 74 5f 52 65 61  64 43 6f 6c 6f 75 72 54  |Font_ReadColourT|
00013cb0  61 62 6c 65 20 28 26 34  30 30 39 38 29 0a 3d 3e  |able (&40098).=>|
00013cc0  20 52 31 20 3d 20 31 36  2d 62 79 74 65 20 62 75  | R1 = 16-byte bu|
00013cd0  66 66 65 72 0a 0a 54 68  69 73 20 53 57 49 20 72  |ffer..This SWI r|
00013ce0  65 74 75 72 6e 73 20 74  68 65 20 31 36 20 63 6f  |eturns the 16 co|
00013cf0  6c 6f 75 72 73 20 75 73  65 64 20 74 6f 20 64 6f  |lours used to do|
00013d00  20 61 6e 74 69 2d 61 6c  69 61 73 69 6e 67 2e 00  | anti-aliasing..|
00013d10  44 41 54 41 f8 00 00 00  46 6f 6e 74 5f 52 65 61  |DATA....Font_Rea|
00013d20  64 44 65 66 6e 20 20 28  26 34 30 30 38 33 29 0a  |dDefn  (&40083).|
00013d30  23 50 61 72 65 6e 74 20  46 6f 6e 74 5f 0a 3d 3e  |#Parent Font_.=>|
00013d40  09 52 30 20 3d 20 46 6f  6e 74 20 68 61 6e 64 6c  |.R0 = Font handl|
00013d50  65 0a 09 52 31 20 3d 20  42 75 66 66 65 72 20 66  |e..R1 = Buffer f|
00013d60  6f 72 20 66 6f 6e 74 20  6e 61 6d 65 0a 0a 5c 3c  |or font name..\<|
00013d70  3d 09 52 32 20 3d 20 78  20 70 6f 69 6e 74 73 20  |=.R2 = x points |
00013d80  2a 20 31 36 0a 09 52 33  20 3d 20 79 20 70 6f 69  |* 16..R3 = y poi|
00013d90  6e 74 73 20 2a 20 31 36  0a 09 52 34 20 3d 20 78  |nts * 16..R4 = x|
00013da0  20 64 70 69 0a 09 52 35  20 3d 20 79 20 64 70 69  | dpi..R5 = y dpi|
00013db0  0a 09 52 36 20 3d 20 41  67 65 20 6f 66 20 66 6f  |..R6 = Age of fo|
00013dc0  6e 74 0a 09 52 37 20 3d  20 55 73 61 67 65 20 63  |nt..R7 = Usage c|
00013dd0  6f 75 6e 74 0a 0a 54 68  69 73 20 53 57 49 20 72  |ount..This SWI r|
00013de0  65 74 75 72 6e 73 20 69  6e 66 6f 72 6d 61 74 69  |eturns informati|
00013df0  6f 6e 20 61 62 6f 75 74  20 74 68 65 20 67 69 76  |on about the giv|
00013e00  65 6e 20 66 6f 6e 74 2e  44 41 54 41 ea 00 00 00  |en font.DATA....|
00013e10  46 6f 6e 74 5f 52 65 61  64 49 6e 66 6f 20 20 28  |Font_ReadInfo  (|
00013e20  26 34 30 30 38 34 29 0a  3d 3e 09 52 30 20 3d 20  |&40084).=>.R0 = |
00013e30  66 6f 6e 74 20 68 61 6e  64 6c 65 0a 0a 5c 3c 3d  |font handle..\<=|
00013e40  09 52 31 20 3d 20 6d 69  6e 20 78 20 20 69 6e 63  |.R1 = min x  inc|
00013e50  6c 0a 09 52 32 20 3d 20  6d 69 6e 20 79 20 20 69  |l..R2 = min y  i|
00013e60  6e 63 6c 0a 09 52 33 20  3d 20 6d 61 78 20 78 20  |ncl..R3 = max x |
00013e70  20 65 78 63 6c 0a 09 52  34 20 3d 20 6d 61 78 20  | excl..R4 = max |
00013e80  79 20 20 65 78 63 6c 0a  0a 54 68 69 73 20 53 57  |y  excl..This SW|
00013e90  49 20 72 65 74 75 72 6e  73 2c 20 69 6e 20 4f 53  |I returns, in OS|
00013ea0  20 75 6e 69 74 73 2c 20  74 68 65 20 73 6d 61 6c  | units, the smal|
00013eb0  6c 65 73 74 20 70 6f 73  73 69 62 6c 65 20 62 6f  |lest possible bo|
00013ec0  78 20 6e 65 65 64 65 64  20 74 6f 20 63 6f 76 65  |x needed to cove|
00013ed0  72 20 61 6e 79 20 63 68  61 72 61 63 74 65 72 20  |r any character |
00013ee0  69 6e 20 74 68 65 20 67  69 76 65 6e 20 66 6f 6e  |in the given fon|
00013ef0  74 2e 00 00 44 41 54 41  d7 00 00 00 46 6f 6e 74  |t...DATA....Font|
00013f00  5f 52 65 61 64 53 63 61  6c 65 46 61 63 74 6f 72  |_ReadScaleFactor|
00013f10  20 20 28 26 34 30 30 38  46 29 0a 5c 3c 3d 09 52  |  (&4008F).\<=.R|
00013f20  31 20 3d 20 78 20 73 63  61 6c 65 20 66 61 63 74  |1 = x scale fact|
00013f30  6f 72 0a 09 52 32 20 3d  20 79 20 73 63 61 6c 65  |or..R2 = y scale|
00013f40  20 66 61 63 74 6f 72 0a  0a 54 68 69 73 20 53 57  | factor..This SW|
00013f50  49 20 72 65 74 75 72 6e  73 20 74 68 65 20 76 61  |I returns the va|
00013f60  6c 75 65 73 20 75 73 65  64 20 77 68 65 6e 20 63  |lues used when c|
00013f70  6f 6e 76 65 72 74 69 6e  67 20 62 65 74 77 65 65  |onverting betwee|
00013f80  6e 20 4f 53 20 63 6f 6f  72 64 69 6e 61 74 65 73  |n OS coordinates|
00013f90  20 61 6e 64 0a 6d 69 6c  6c 69 70 6f 69 6e 74 73  | and.millipoints|
00013fa0  2e 20 54 6f 20 73 65 74  20 76 61 6c 75 65 73 2c  |. To set values,|
00013fb0  20 75 73 65 20 3c 46 6f  6e 74 5f 53 65 74 53 63  | use <Font_SetSc|
00013fc0  61 6c 65 46 61 63 74 6f  72 3e 2e 00 44 41 54 41  |aleFactor>..DATA|
00013fd0  65 00 00 00 46 6f 6e 74  5f 53 65 74 46 6f 6e 74  |e...Font_SetFont|
00013fe0  20 20 28 26 34 30 30 38  41 29 0a 23 50 61 72 65  |  (&4008A).#Pare|
00013ff0  6e 74 20 46 6f 6e 74 5f  0a 3d 3e 20 52 30 20 3d  |nt Font_.=> R0 =|
00014000  20 6e 65 77 20 66 6f 6e  74 20 68 61 6e 64 6c 65  | new font handle|
00014010  0a 0a 54 68 69 73 20 53  57 49 20 73 65 74 73 20  |..This SWI sets |
00014020  74 68 65 20 63 75 72 72  65 6e 74 20 66 6f 6e 74  |the current font|
00014030  2e 00 00 00 44 41 54 41  e7 00 00 00 46 6f 6e 74  |....DATA....Font|
00014040  5f 53 65 74 46 6f 6e 74  43 6f 6c 6f 75 72 73 20  |_SetFontColours |
00014050  20 28 26 34 30 30 39 32  29 0a 23 50 61 72 65 6e  | (&40092).#Paren|
00014060  74 20 46 6f 6e 74 5f 0a  3d 3e 09 52 30 20 3d 20  |t Font_.=>.R0 = |
00014070  66 6f 6e 74 20 68 61 6e  64 6c 65 20 28 30 20 66  |font handle (0 f|
00014080  6f 72 20 63 75 72 72 65  6e 74 29 0a 09 52 31 20  |or current)..R1 |
00014090  3d 20 62 61 63 6b 67 72  6f 75 6e 64 20 63 6f 6c  |= background col|
000140a0  0a 09 52 32 20 3d 20 66  6f 72 65 67 72 6f 75 6e  |..R2 = foregroun|
000140b0  64 20 63 6f 6c 0a 09 52  33 20 3d 20 3c 66 6f 72  |d col..R3 = <for|
000140c0  65 67 72 6f 75 6e 64 20  63 6f 6c 20 6f 66 66 73  |eground col offs|
000140d0  65 74 3d 3e 66 6f 6e 74  5f 70 61 69 6e 74 32 3e  |et=>font_paint2>|
000140e0  0a 0a 54 68 69 73 20 53  57 49 20 73 65 74 73 20  |..This SWI sets |
000140f0  74 68 65 20 66 6f 6e 74  20 63 6f 6c 6f 75 72 73  |the font colours|
00014100  20 61 6e 64 2c 20 6f 70  74 69 6f 6e 61 6c 6c 79  | and, optionally|
00014110  2c 20 74 68 65 20 66 6f  6e 74 2e 00 44 41 54 41  |, the font..DATA|
00014120  6f 01 00 00 46 6f 6e 74  5f 53 65 74 50 61 6c 65  |o...Font_SetPale|
00014130  74 74 65 20 20 28 26 34  30 30 39 33 29 0a 3d 3e  |tte  (&40093).=>|
00014140  09 52 31 20 3d 20 62 61  63 6b 67 72 6f 75 6e 64  |.R1 = background|
00014150  20 6c 6f 67 69 63 61 6c  20 63 6f 6c 0a 09 52 32  | logical col..R2|
00014160  20 3d 20 66 6f 72 65 67  72 6f 75 6e 64 20 6c 6f  | = foreground lo|
00014170  67 69 63 61 6c 20 63 6f  6c 0a 09 52 33 20 3d 20  |gical col..R3 = |
00014180  66 6f 72 65 67 72 6f 75  6e 64 20 63 6f 6c 20 6f  |foreground col o|
00014190  66 66 73 65 74 0a 09 52  34 20 3d 20 62 61 63 6b  |ffset..R4 = back|
000141a0  67 72 6f 75 6e 64 20 70  68 79 73 69 63 61 6c 20  |ground physical |
000141b0  63 6f 6c 0a 09 52 35 20  3d 20 66 6f 72 65 67 72  |col..R5 = foregr|
000141c0  6f 75 6e 64 20 70 68 79  73 69 63 61 6c 20 63 6f  |ound physical co|
000141d0  6c 0a 0a 54 68 69 73 20  53 57 49 20 69 73 20 75  |l..This SWI is u|
000141e0  73 65 64 20 74 6f 20 73  65 74 20 74 68 65 20 61  |sed to set the a|
000141f0  6e 74 69 2d 61 6c 69 61  73 20 70 61 6c 65 74 74  |nti-alias palett|
00014200  65 2e 20 59 6f 75 20 73  68 6f 75 6c 64 20 2a 6e  |e. You should *n|
00014210  6f 74 2a 20 75 73 65 20  74 68 69 73 20 69 66 20  |ot* use this if |
00014220  79 6f 75 27 72 65 20 72  75 6e 6e 69 6e 67 20 69  |you're running i|
00014230  6e 20 74 68 65 20 64 65  73 6b 74 6f 70 2e 20 49  |n the desktop. I|
00014240  6e 73 74 65 61 64 20 79  6f 75 20 73 68 6f 75 6c  |nstead you shoul|
00014250  64 20 75 73 65 20 3c 57  69 6d 70 5f 53 65 74 46  |d use <Wimp_SetF|
00014260  6f 6e 74 43 6f 6c 6f 75  72 73 3e 20 6f 72 20 3c  |ontColours> or <|
00014270  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 74 46  |ColourTrans_SetF|
00014280  6f 6e 74 43 6f 6c 6f 75  72 73 3e 00 44 41 54 41  |ontColours>.DATA|
00014290  d4 00 00 00 46 6f 6e 74  5f 53 65 74 53 63 61 6c  |....Font_SetScal|
000142a0  65 46 61 63 74 6f 72 20  20 28 26 34 30 30 39 30  |eFactor  (&40090|
000142b0  29 0a 3d 3e 09 52 31 20  3d 20 78 20 73 63 61 6c  |).=>.R1 = x scal|
000142c0  65 20 66 61 63 74 6f 72  0a 09 52 32 20 3d 20 79  |e factor..R2 = y|
000142d0  20 73 63 61 6c 65 20 66  61 63 74 6f 72 0a 0a 54  | scale factor..T|
000142e0  68 69 73 20 53 57 49 20  73 65 74 73 20 74 68 65  |his SWI sets the|
000142f0  20 76 61 6c 75 65 73 20  75 73 65 64 20 77 68 65  | values used whe|
00014300  6e 20 63 6f 6e 76 65 72  74 69 6e 67 20 62 65 74  |n converting bet|
00014310  77 65 65 6e 20 4f 53 20  63 6f 6f 72 64 69 6e 61  |ween OS coordina|
00014320  74 65 73 20 61 6e 64 20  6d 69 6c 6c 69 70 6f 69  |tes and millipoi|
00014330  6e 74 73 2e 20 54 6f 20  72 65 61 64 20 76 61 6c  |nts. To read val|
00014340  75 65 73 2c 20 75 73 65  20 3c 46 6f 6e 74 5f 52  |ues, use <Font_R|
00014350  65 61 64 53 63 61 6c 65  46 61 63 74 6f 72 3e 2e  |eadScaleFactor>.|
00014360  44 41 54 41 52 01 00 00  46 6f 6e 74 5f 53 74 72  |DATAR...Font_Str|
00014370  69 6e 67 42 42 6f 78 20  20 28 26 34 30 30 39 37  |ingBBox  (&40097|
00014380  29 0a 23 50 61 72 65 6e  74 20 46 6f 6e 74 5f 0a  |).#Parent Font_.|
00014390  3d 3e 09 52 31 20 3d 20  73 74 72 69 6e 67 0a 0a  |=>.R1 = string..|
000143a0  5c 3c 3d 09 52 31 20 3d  20 6d 69 6e 20 78 20 28  |\<=.R1 = min x (|
000143b0  69 6e 63 6c 29 0a 09 52  32 20 3d 20 6d 69 6e 20  |incl)..R2 = min |
000143c0  79 20 28 69 6e 63 6c 29  0a 09 52 33 20 3d 20 6d  |y (incl)..R3 = m|
000143d0  61 78 20 78 20 28 65 78  63 6c 29 0a 09 52 34 20  |ax x (excl)..R4 |
000143e0  3d 20 6d 61 78 20 79 20  28 65 78 63 6c 29 0a 0a  |= max y (excl)..|
000143f0  54 68 69 73 20 53 57 49  20 72 65 74 75 72 6e 73  |This SWI returns|
00014400  20 74 68 65 20 73 6d 61  6c 6c 65 73 74 20 70 6f  | the smallest po|
00014410  73 73 69 62 6c 65 20 62  6f 78 20 74 68 61 74 20  |ssible box that |
00014420  63 6f 76 65 72 73 20 74  68 65 20 77 68 6f 6c 65  |covers the whole|
00014430  20 73 74 72 69 6e 67 2e  20 54 68 65 20 62 6f 78  | string. The box|
00014440  20 69 73 20 72 65 74 75  72 6e 65 64 20 69 6e 20  | is returned in |
00014450  6d 69 6c 6c 69 70 6f 69  6e 74 73 2e 20 54 68 69  |millipoints. Thi|
00014460  73 20 63 61 6c 6c 20 63  61 6e 20 6e 6f 74 2c 20  |s call can not, |
00014470  64 75 65 20 74 6f 20 72  6f 75 6e 64 69 6e 67 20  |due to rounding |
00014480  61 6e 64 20 61 6e 74 69  2d 61 6c 69 61 73 69 6e  |and anti-aliasin|
00014490  67 2c 20 62 65 20 75 73  65 64 20 74 6f 20 66 69  |g, be used to fi|
000144a0  6e 64 20 73 69 7a 65 20  6f 6e 20 73 63 72 65 65  |nd size on scree|
000144b0  6e 2e 00 00 44 41 54 41  38 02 00 00 46 6f 6e 74  |n...DATA8...Font|
000144c0  5f 53 74 72 69 6e 67 57  69 64 74 68 20 20 28 26  |_StringWidth  (&|
000144d0  34 30 30 38 35 29 0a 23  50 61 72 65 6e 74 20 46  |40085).#Parent F|
000144e0  6f 6e 74 5f 0a 3d 3e 09  52 31 20 3d 20 3c 73 74  |ont_.=>.R1 = <st|
000144f0  72 69 6e 67 3d 3e 66 6f  6e 74 5f 70 61 69 6e 74  |ring=>font_paint|
00014500  31 3e 0a 09 52 32 20 3d  20 6d 61 78 20 77 69 64  |1>..R2 = max wid|
00014510  74 68 20 69 6e 20 6d 69  6c 6c 69 70 6f 69 6e 74  |th in millipoint|
00014520  73 0a 09 52 33 20 3d 20  6d 61 78 20 68 65 69 67  |s..R3 = max heig|
00014530  68 74 20 69 6e 20 6d 69  6c 6c 69 70 6f 69 6e 74  |ht in millipoint|
00014540  73 0a 09 52 34 20 3d 20  73 70 6c 69 74 20 63 68  |s..R4 = split ch|
00014550  61 72 61 63 74 65 72 20  28 6f 72 20 2d 31 29 0a  |aracter (or -1).|
00014560  09 52 35 20 3d 20 6d 61  78 20 73 74 72 69 6e 67  |.R5 = max string|
00014570  20 6c 65 6e 67 74 68 0a  0a 5c 3c 3d 09 52 31 20  | length..\<=.R1 |
00014580  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 77 68 65  |= pointer to whe|
00014590  72 65 20 73 63 61 6e 20  65 6e 64 65 64 2e 0a 09  |re scan ended...|
000145a0  52 32 20 3d 20 77 69 64  74 68 20 6f 66 20 73 63  |R2 = width of sc|
000145b0  61 6e 6e 65 64 20 73 74  72 69 6e 67 2e 0a 09 52  |anned string...R|
000145c0  33 20 3d 20 68 65 69 67  68 74 20 6f 66 20 73 63  |3 = height of sc|
000145d0  61 6e 6e 65 64 20 73 74  72 69 6e 67 2e 0a 09 52  |anned string...R|
000145e0  34 20 3d 20 6e 6f 20 6f  66 20 73 70 6c 69 74 20  |4 = no of split |
000145f0  63 68 61 72 73 20 66 6f  75 6e 64 0a 09 52 35 20  |chars found..R5 |
00014600  3d 20 6c 65 6e 67 74 68  20 6f 66 20 73 63 61 6e  |= length of scan|
00014610  6e 65 64 20 73 74 72 69  6e 67 2e 0a 0a 54 68 69  |ned string...Thi|
00014620  73 20 53 57 49 20 63 61  6c 63 75 6c 61 74 65 73  |s SWI calculates|
00014630  20 68 6f 77 20 77 69 64  65 20 61 20 73 74 72 69  | how wide a stri|
00014640  6e 67 20 77 6f 75 6c 64  20 62 65 20 75 6e 64 65  |ng would be unde|
00014650  72 20 74 68 65 20 67 69  76 65 6e 20 6c 69 6d 69  |r the given limi|
00014660  74 73 2e 20 41 66 74 65  72 20 74 68 69 73 20 53  |ts. After this S|
00014670  57 49 2c 20 79 6f 75 20  63 61 6e 20 63 61 6c 6c  |WI, you can call|
00014680  20 3c 46 6f 6e 74 5f 46  75 74 75 72 65 46 6f 6e  | <Font_FutureFon|
00014690  74 3e 20 74 6f 20 66 69  6e 64 20 6f 75 74 20 77  |t> to find out w|
000146a0  68 61 74 20 74 68 65 20  63 75 72 72 65 6e 74 20  |hat the current |
000146b0  66 6f 6e 74 20 77 6f 75  6c 64 20 62 65 20 61 66  |font would be af|
000146c0  74 65 72 20 61 20 63 61  6c 6c 20 74 6f 20 3c 46  |ter a call to <F|
000146d0  6f 6e 74 5f 50 61 69 6e  74 3e 20 77 69 74 68 20  |ont_Paint> with |
000146e0  74 68 69 73 20 73 74 72  69 6e 67 2e 44 41 54 41  |this string.DATA|
000146f0  a3 00 00 00 46 6f 6e 74  5f 55 6e 43 61 63 68 65  |....Font_UnCache|
00014700  46 69 6c 65 20 20 28 26  34 30 30 39 41 29 0a 3d  |File  (&4009A).=|
00014710  3e 09 52 31 20 3d 20 66  75 6c 6c 20 66 69 6c 65  |>.R1 = full file|
00014720  6e 61 6d 65 0a 09 52 32  20 3d 20 72 65 63 61 63  |name..R2 = recac|
00014730  68 65 20 66 6c 61 67 0a  0a 54 68 69 73 20 53 57  |he flag..This SW|
00014740  49 20 65 69 74 68 65 72  20 63 61 63 68 65 73 20  |I either caches |
00014750  6f 72 20 75 6e 63 61 63  68 65 73 20 61 20 66 6f  |or uncaches a fo|
00014760  6e 74 2e 0a 54 68 69 73  20 69 73 20 75 73 65 64  |nt..This is used|
00014770  20 77 68 65 6e 20 74 68  65 20 66 6f 6e 74 20 66  | when the font f|
00014780  69 6c 65 20 69 73 20 61  6c 74 65 72 65 64 2e 00  |ile is altered..|
00014790  44 41 54 41 ae 07 00 00  46 6f 6e 74 5f 53 63 61  |DATA....Font_Sca|
000147a0  6e 53 74 72 69 6e 67 20  20 28 26 34 30 30 41 31  |nString  (&400A1|
000147b0  29 0a 3d 3e 09 52 30 20  3d 20 69 6e 69 74 69 61  |).=>.R0 = initia|
000147c0  6c 20 66 6f 6e 74 20 68  61 6e 64 6c 65 2c 20 30  |l font handle, 0|
000147d0  20 66 6f 72 20 63 75 72  72 65 6e 74 0a 09 52 31  | for current..R1|
000147e0  20 3d 20 73 74 72 69 6e  67 0a 09 52 32 20 3d 20  | = string..R2 = |
000147f0  3c 66 6c 61 67 73 3d 3e  2e 66 6c 61 67 73 3e 0a  |<flags=>.flags>.|
00014800  09 52 33 2c 34 20 3d 20  28 78 2c 79 29 20 6f 66  |.R3,4 = (x,y) of|
00014810  20 6d 6f 75 73 65 20 63  6c 69 63 6b 20 6f 72 20  | mouse click or |
00014820  6d 61 78 20 77 2c 68 20  6f 66 20 73 74 72 69 6e  |max w,h of strin|
00014830  67 0a 09 52 35 20 3d 20  70 74 72 20 74 6f 20 62  |g..R5 = ptr to b|
00014840  75 66 66 65 72 20 68 6f  6c 64 69 6e 67 20 73 70  |uffer holding sp|
00014850  61 63 69 6e 67 2c 20 73  70 6c 69 74 20 26 20 62  |acing, split & b|
00014860  6f 75 6e 64 69 6e 67 20  62 6f 78 0a 09 52 36 20  |ounding box..R6 |
00014870  3d 20 74 72 61 6e 73 66  6f 72 6d 61 74 69 6f 6e  |= transformation|
00014880  20 6d 61 74 72 69 78 0a  09 52 37 20 3d 20 6c 65  | matrix..R7 = le|
00014890  6e 67 74 68 20 6f 66 20  73 74 72 69 6e 67 0a 0a  |ngth of string..|
000148a0  5c 3c 3d 09 52 31 20 3d  20 70 6f 69 6e 74 73 20  |\<=.R1 = points |
000148b0  74 6f 20 77 68 65 72 65  20 74 68 65 20 73 63 61  |to where the sca|
000148c0  6e 20 65 6e 64 65 64 0a  09 52 33 2c 34 20 3d 20  |n ended..R3,4 = |
000148d0  28 78 2c 79 29 20 6f 66  20 77 68 65 72 65 20 74  |(x,y) of where t|
000148e0  68 65 20 73 63 61 6e 20  65 6e 64 65 64 0a 09 52  |he scan ended..R|
000148f0  37 20 3d 20 6e 6f 20 6f  66 20 73 70 6c 69 74 20  |7 = no of split |
00014900  63 68 61 72 73 20 69 6e  20 73 63 61 6e 6e 65 64  |chars in scanned|
00014910  20 70 61 72 74 20 6f 66  20 73 74 72 69 6e 67 2e  | part of string.|
00014920  0a 0a 54 68 69 73 20 53  57 49 20 69 73 20 75 73  |..This SWI is us|
00014930  65 64 20 74 6f 20 66 69  6e 64 20 76 61 72 69 6f  |ed to find vario|
00014940  75 73 20 69 6e 66 6f 20  6f 6e 20 61 20 73 74 72  |us info on a str|
00014950  69 6e 67 20 3a 0a 0a 09  8f 09 48 6f 77 20 77 69  |ing :.....How wi|
00014960  64 65 20 69 73 20 61 20  73 74 72 69 6e 67 3f 0a  |de is a string?.|
00014970  09 20 09 55 73 65 20 6c  61 72 67 65 20 76 61 6c  |. .Use large val|
00014980  75 65 73 20 66 6f 72 20  52 33 2c 34 20 61 6e 64  |ues for R3,4 and|
00014990  20 6e 6f 20 73 70 6c 69  74 20 63 68 61 72 61 63  | no split charac|
000149a0  74 65 72 0a 09 8f 09 47  69 76 65 6e 20 61 20 77  |ter....Given a w|
000149b0  69 64 74 68 2c 20 68 6f  77 20 6d 75 63 68 20 6f  |idth, how much o|
000149c0  66 20 61 20 73 74 72 69  6e 67 20 77 69 6c 6c 20  |f a string will |
000149d0  66 69 74 3f 0a 41 4e 44  09 8f 09 41 64 64 72 65  |fit?.AND...Addre|
000149e0  73 73 20 6f 66 20 61 20  6d 6f 75 73 65 20 63 6c  |ss of a mouse cl|
000149f0  69 63 6b 3f 0a 09 20 09  55 73 65 20 63 6f 72 72  |ick?.. .Use corr|
00014a00  65 63 74 20 77 69 64 74  68 20 69 6e 20 52 33 2c  |ect width in R3,|
00014a10  6c 61 72 67 65 20 76 61  6c 75 65 20 69 6e 20 52  |large value in R|
00014a20  34 20 61 6e 64 20 28 69  66 20 6e 65 65 64 65 64  |4 and (if needed|
00014a30  29 20 61 20 73 70 6c 69  74 20 63 68 61 72 20 69  |) a split char i|
00014a40  6e 20 74 68 65 20 62 75  66 66 65 72 20 61 74 20  |n the buffer at |
00014a50  52 35 0a 09 8f 09 47 72  61 70 68 69 63 61 6c 20  |R5....Graphical |
00014a60  70 6f 73 69 74 69 6f 6e  20 6f 66 20 61 20 63 61  |position of a ca|
00014a70  72 65 74 3f 0a 09 20 09  53 65 74 20 52 37 20 74  |ret?.. .Set R7 t|
00014a80  6f 20 6f 66 66 73 65 74  20 69 6e 74 6f 20 73 74  |o offset into st|
00014a90  72 69 6e 67 2c 20 75 73  65 20 68 75 67 65 20 76  |ring, use huge v|
00014aa0  61 6c 75 65 73 20 66 6f  72 20 52 33 2c 34 2c 20  |alues for R3,4, |
00014ab0  61 6e 64 20 6e 6f 20 73  70 6c 69 74 0a 0a 52 65  |and no split..Re|
00014ac0  67 69 73 74 65 72 73 20  30 2c 35 2c 36 20 61 6e  |gisters 0,5,6 an|
00014ad0  64 20 37 20 61 72 65 20  6f 6e 6c 79 20 75 73 65  |d 7 are only use|
00014ae0  64 20 69 66 20 62 69 74  73 20 38 2c 35 2c 36 20  |d if bits 8,5,6 |
00014af0  61 6e 64 20 37 20 61 72  65 20 73 65 74 20 69 6e  |and 7 are set in|
00014b00  20 52 32 0a 0a 49 66 20  62 69 74 20 38 20 6f 66  | R2..If bit 8 of|
00014b10  20 52 32 20 69 73 20 63  6c 65 61 72 20 74 68 65  | R2 is clear the|
00014b20  6e 20 74 68 65 20 63 75  72 72 65 6e 74 20 66 6f  |n the current fo|
00014b30  6e 74 20 77 69 6c 6c 20  62 65 20 61 73 73 75 6d  |nt will be assum|
00014b40  65 64 2e 20 54 68 69 73  20 63 61 6c 6c 20 2a 64  |ed. This call *d|
00014b50  6f 65 73 20 6e 6f 74 2a  20 61 6c 74 65 72 20 63  |oes not* alter c|
00014b60  75 72 72 65 6e 74 20 66  6f 6e 74 2c 20 73 6f 20  |urrent font, so |
00014b70  69 66 20 79 6f 75 20 61  72 65 20 73 63 61 6e 6e  |if you are scann|
00014b80  69 6e 67 20 73 65 76 65  72 61 6c 20 73 65 71 75  |ing several sequ|
00014b90  65 6e 74 69 61 6c 20 6c  69 6e 65 73 2c 20 61 6e  |ential lines, an|
00014ba0  64 20 74 68 65 73 65 20  63 61 6e 20 63 6f 6e 74  |d these can cont|
00014bb0  61 69 6e 20 66 6f 6e 74  20 73 68 69 66 74 73 2c  |ain font shifts,|
00014bc0  20 79 6f 75 20 73 68 6f  75 6c 64 20 63 61 6c 6c  | you should call|
00014bd0  20 3c 46 6f 6e 74 5f 46  75 74 75 72 65 46 6f 6e  | <Font_FutureFon|
00014be0  74 3e 20 74 6f 20 66 69  6e 64 20 77 68 69 63 68  |t> to find which|
00014bf0  20 66 6f 6e 74 20 68 61  6e 64 6c 65 20 74 6f 20  | font handle to |
00014c00  70 61 73 73 20 69 6e 20  52 30 20 74 68 65 20 6e  |pass in R0 the n|
00014c10  65 78 74 20 74 69 6d 65  2e 0a 0a 55 6e 6c 69 6b  |ext time...Unlik|
00014c20  65 20 3c 46 6f 6e 74 5f  50 61 69 6e 74 3e 2c 20  |e <Font_Paint>, |
00014c30  74 68 69 73 20 63 61 6c  6c 20 6f 6e 6c 79 20 61  |this call only a|
00014c40  6c 6c 6f 77 73 20 6d 69  6c 6c 69 70 6f 69 6e 74  |llows millipoint|
00014c50  73 20 66 6f 72 20 61 6c  6c 20 63 6f 6f 72 64 69  |s for all coordi|
00014c60  6e 61 74 65 73 2e 20 43  6f 6e 76 65 72 74 20 74  |nates. Convert t|
00014c70  6f 2f 66 72 6f 6d 20 4f  53 20 75 6e 69 74 73 20  |o/from OS units |
00014c80  62 79 20 64 69 76 69 64  69 6e 67 2f 6d 75 6c 74  |by dividing/mult|
00014c90  69 70 6c 79 69 6e 67 20  62 79 20 34 30 30 2e 20  |iplying by 400. |
00014ca0  28 49 6e 73 74 65 61 64  20 6f 66 20 64 69 76 69  |(Instead of divi|
00014cb0  64 69 6e 67 2c 20 79 6f  75 20 63 61 6e 20 6d 75  |ding, you can mu|
00014cc0  6c 74 69 70 6c 79 20 62  79 20 28 31 5c 3c 5c 3c  |ltiply by (1\<\<|
00014cd0  31 38 20 2f 20 34 30 30  29 20 61 6e 64 20 74 68  |18 / 400) and th|
00014ce0  65 6e 20 73 68 69 66 74  20 64 6f 77 6e 20 31 38  |en shift down 18|
00014cf0  20 74 6f 20 67 65 74 20  61 6e 20 61 70 70 72 6f  | to get an appro|
00014d00  78 69 6d 61 74 65 20 61  6e 73 77 65 72 29 0a 23  |ximate answer).#|
00014d10  0a 23 53 75 62 70 61 67  65 20 66 6c 61 67 73 0a  |.#Subpage flags.|
00014d20  4d 65 61 6e 69 6e 67 20  6f 66 20 62 69 74 73 20  |Meaning of bits |
00014d30  69 6e 20 52 32 20 77 68  65 6e 20 73 65 74 0a 30  |in R2 when set.0|
00014d40  2d 34 09 30 20 28 72 65  73 65 72 76 65 64 29 0a  |-4.0 (reserved).|
00014d50  35 09 52 35 20 69 73 20  70 6f 69 6e 74 65 72 20  |5.R5 is pointer |
00014d60  74 6f 20 62 75 66 66 65  72 0a 36 09 52 36 20 69  |to buffer.6.R6 i|
00014d70  73 20 70 6f 69 6e 74 65  72 20 74 6f 20 74 72 61  |s pointer to tra|
00014d80  6e 73 66 6f 72 6d 61 74  69 6f 6e 20 6d 61 74 72  |nsformation matr|
00014d90  69 78 0a 37 09 52 37 20  69 73 20 6c 65 6e 67 74  |ix.7.R7 is lengt|
00014da0  68 20 6f 66 20 73 74 72  69 6e 67 0a 38 09 52 30  |h of string.8.R0|
00014db0  20 69 73 20 69 6e 69 74  69 61 6c 20 66 6f 6e 74  | is initial font|
00014dc0  20 68 61 6e 64 6c 65 0a  39 09 70 65 72 66 6f 72  | handle.9.perfor|
00014dd0  6d 20 6b 65 72 6e 69 6e  67 0a 31 30 09 77 72 69  |m kerning.10.wri|
00014de0  74 69 6e 67 20 64 69 72  65 63 74 69 6f 6e 20 69  |ting direction i|
00014df0  73 20 52 69 67 68 74 20  74 6f 20 4c 65 66 74 0a  |s Right to Left.|
00014e00  31 31 2d 31 36 09 30 20  28 72 65 73 65 72 76 65  |11-16.0 (reserve|
00014e10  64 29 0a 31 37 09 72 65  74 75 72 6e 20 6e 65 61  |d).17.return nea|
00014e20  72 65 73 74 20 63 61 72  65 74 20 70 6f 73 69 74  |rest caret posit|
00014e30  69 6f 6e 20 28 49 66 20  78 20 6f 66 66 73 65 74  |ion (If x offset|
00014e40  20 69 73 20 6c 65 73 73  20 74 68 61 6e 20 68 61  | is less than ha|
00014e50  6c 66 20 77 61 79 20 74  68 72 6f 75 67 68 20 61  |lf way through a|
00014e60  20 63 68 61 72 2c 20 77  65 20 64 6f 6e 27 74 20  | char, we don't |
00014e70  69 6e 63 6c 75 64 65 20  74 68 69 73 20 63 68 61  |include this cha|
00014e80  72 29 0a 31 38 09 72 65  74 75 72 6e 20 62 6f 75  |r).18.return bou|
00014e90  6e 64 69 6e 67 20 62 6f  78 20 69 6e 20 52 35 20  |nding box in R5 |
00014ea0  28 62 69 74 20 35 20 6d  75 73 74 20 61 6c 73 6f  |(bit 5 must also|
00014eb0  20 62 65 20 73 65 74 29  0a 31 39 09 72 65 74 75  | be set).19.retu|
00014ec0  72 6e 20 75 70 64 61 74  65 64 20 6d 61 74 72 69  |rn updated matri|
00014ed0  78 20 69 6e 20 52 36 20  28 62 69 74 20 36 20 6d  |x in R6 (bit 6 m|
00014ee0  75 73 74 20 61 6c 73 6f  20 62 65 20 73 65 74 29  |ust also be set)|
00014ef0  0a 32 30 09 72 65 74 75  72 6e 20 6e 6f 20 6f 66  |.20.return no of|
00014f00  20 73 70 6c 69 74 20 63  68 61 72 73 20 69 6e 20  | split chars in |
00014f10  52 37 20 28 62 69 74 20  37 20 6d 75 73 74 20 61  |R7 (bit 7 must a|
00014f20  6c 73 6f 20 62 65 20 73  65 74 29 0a 32 31 2d 33  |lso be set).21-3|
00014f30  31 09 30 20 28 72 65 73  65 72 76 65 64 29 00 00  |1.0 (reserved)..|
00014f40  44 49 52 24 4c 00 00 00  4c 00 00 00 8c 4f 01 00  |DIR$L...L....O..|
00014f50  47 fd ff ff 5c 0a 13 0a  3e 00 00 00 13 00 00 00  |G...\...>.......|
00014f60  00 00 00 00 21 52 6f 6f  74 00 00 00 cc 4f 01 00  |....!Root....O..|
00014f70  47 ff ff ff 24 1b 13 0a  4d 00 00 00 13 00 00 00  |G...$...M.......|
00014f80  00 00 00 00 56 65 72 73  69 6f 6e 00 44 41 54 41  |....Version.DATA|
00014f90  3e 00 00 00 46 50 45 6d  75 6c 61 74 6f 72 0a 23  |>...FPEmulator.#|
00014fa0  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
00014fb0  65 66 69 78 20 46 50 45  6d 75 6c 61 74 6f 72 5f  |efix FPEmulator_|
00014fc0  0a 3c 56 65 72 73 69 6f  6e 3e 00 00 44 41 54 41  |.<Version>..DATA|
00014fd0  4d 00 00 00 46 50 45 6d  75 6c 61 74 6f 72 5f 56  |M...FPEmulator_V|
00014fe0  65 72 73 69 6f 6e 20 20  28 26 34 30 34 38 30 29  |ersion  (&40480)|
00014ff0  0a 3d 3e 09 98 0a 3c 3d  09 52 30 20 3d 20 76 65  |.=>...<=.R0 = ve|
00015000  72 73 69 6f 6e 20 6f 66  20 46 50 45 6d 75 6c 61  |rsion of FPEmula|
00015010  74 6f 72 20 2a 20 31 30  30 00 00 00 44 49 52 24  |tor * 100...DIR$|
00015020  2c 00 00 00 2c 00 00 00  48 50 01 00 46 fd ff ff  |,...,...HP..F...|
00015030  8e 8b 1d 00 2e 00 00 00  13 00 00 00 00 00 00 00  |................|
00015040  21 52 6f 6f 74 00 00 00  44 41 54 41 2e 00 00 00  |!Root...DATA....|
00015050  46 72 65 65 0a 23 50 61  72 65 6e 74 20 21 52 6f  |Free.#Parent !Ro|
00015060  6f 74 0a 44 65 52 65 67  69 73 74 65 72 0a 52 65  |ot.DeRegister.Re|
00015070  67 69 73 74 65 72 00 00  44 49 52 24 2c 00 00 00  |gister..DIR$,...|
00015080  2c 00 00 00 a4 50 01 00  46 fd ff ff 02 cc dc 14  |,....P..F.......|
00015090  4d 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |M...........!Roo|
000150a0  74 00 00 00 44 41 54 41  4d 00 00 00 46 72 6f 6e  |t...DATAM...Fron|
000150b0  74 45 6e 64 0a 23 50 61  72 65 6e 74 20 21 52 6f  |tEnd.#Parent !Ro|
000150c0  6f 74 0a 23 50 72 65 66  69 78 20 46 72 6f 6e 74  |ot.#Prefix Front|
000150d0  45 6e 64 5f 0a 45 78 74  65 6e 64 65 64 43 6d 64  |End_.ExtendedCmd|
000150e0  4c 69 6e 65 0a 46 72 65  65 43 6d 64 4c 69 6e 65  |Line.FreeCmdLine|
000150f0  0a 00 00 00 44 49 52 24  b4 00 00 00 b4 00 00 00  |....DIR$........|
00015100  a8 51 01 00 46 fd ff ff  e1 71 a4 d7 83 01 00 00  |.Q..F....q......|
00015110  13 00 00 00 00 00 00 00  69 64 65 6e 74 00 00 00  |........ident...|
00015120  2c 53 01 00 46 fd ff ff  a1 e0 f4 18 7b 01 00 00  |,S..F.......{...|
00015130  13 00 00 00 00 00 00 00  69 6e 66 6f 77 6f 72 64  |........infoword|
00015140  00 00 00 00 a8 54 01 00  46 fd ff ff a8 9d 69 88  |.....T..F.....i.|
00015150  e5 00 00 00 13 00 00 00  00 00 00 00 6c 6f 61 64  |............load|
00015160  65 78 65 63 00 00 00 00  90 55 01 00 46 fd ff ff  |exec.....U..F...|
00015170  65 10 cf 14 23 01 00 00  13 00 00 00 00 00 00 00  |e...#...........|
00015180  6f 62 6a 61 74 74 72 00  b4 56 01 00 46 fd ff ff  |objattr..V..F...|
00015190  07 dc 73 4c 99 01 00 00  13 00 00 00 00 00 00 00  |..sL............|
000151a0  6f 62 6a 74 79 70 65 00  44 41 54 41 83 01 00 00  |objtype.DATA....|
000151b0  46 69 6c 69 6e 67 20 53  79 73 74 65 6d 20 6e 75  |Filing System nu|
000151c0  6d 62 65 72 73 0a 23 54  61 62 6c 65 20 43 6f 6c  |mbers.#Table Col|
000151d0  75 6d 6e 73 20 32 0a 30  20 20 20 4e 6f 6e 65 0a  |umns 2.0   None.|
000151e0  33 20 20 20 52 4f 4d 46  53 0a 35 20 20 20 4e 65  |3   ROMFS.5   Ne|
000151f0  74 46 53 0a 38 20 20 20  41 44 46 53 0a 31 32 20  |tFS.8   ADFS.12 |
00015200  20 4e 65 74 50 72 69 6e  74 0a 31 33 20 20 4e 75  | NetPrint.13  Nu|
00015210  6c 6c 0a 31 34 20 20 50  72 69 6e 74 65 72 0a 31  |ll.14  Printer.1|
00015220  35 20 20 53 65 72 69 61  6c 0a 31 37 20 20 56 44  |5  Serial.17  VD|
00015230  55 0a 31 38 20 20 52 61  77 56 44 55 0a 31 39 20  |U.18  RawVDU.19 |
00015240  20 4b 62 64 0a 32 30 20  20 52 61 77 4b 62 64 0a  | Kbd.20  RawKbd.|
00015250  32 31 20 20 44 65 73 6b  46 53 0a 32 32 20 20 43  |21  DeskFS.22  C|
00015260  2e 43 2e 20 52 6f 6d 46  53 0a 32 33 20 20 52 61  |.C. RomFS.23  Ra|
00015270  6d 46 53 0a 32 34 20 20  52 49 53 43 69 58 46 53  |mFS.24  RISCiXFS|
00015280  0a 32 35 20 20 53 74 72  65 61 6d 65 72 0a 32 36  |.25  Streamer.26|
00015290  20 20 53 43 53 49 0a 32  37 20 20 44 69 67 69 74  |  SCSI.27  Digit|
000152a0  69 73 65 72 0a 32 38 20  20 53 63 61 6e 6e 65 72  |iser.28  Scanner|
000152b0  0a 32 39 20 20 4d 75 6c  74 69 46 53 0a 33 33 20  |.29  MultiFS.33 |
000152c0  20 4e 46 53 0a 33 37 20  20 43 44 46 53 0a 34 33  | NFS.37  CDFS.43|
000152d0  20 20 44 4f 53 46 53 0a  34 36 20 20 52 65 73 6f  |  DOSFS.46  Reso|
000152e0  75 72 63 65 46 53 0a 34  37 20 20 50 69 70 65 46  |urceFS.47  PipeF|
000152f0  53 0a 35 33 20 20 44 65  76 69 63 65 46 53 0a 35  |S.53  DeviceFS.5|
00015300  34 20 20 50 61 72 61 6c  6c 65 6c 0a 35 36 20 20  |4  Parallel.56  |
00015310  41 72 63 46 53 0a 39 39  20 20 53 68 61 72 65 46  |ArcFS.99  ShareF|
00015320  53 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |S.#EndTable.DATA|
00015330  7b 01 00 00 46 69 6c 69  6e 67 20 73 79 73 74 65  |{...Filing syste|
00015340  6d 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 77 6f  |m information wo|
00015350  72 64 0a 42 69 74 09 4d  65 61 6e 69 6e 67 0a 23  |rd.Bit.Meaning.#|
00015360  4c 69 6e 65 0a 33 31 09  53 70 65 63 69 61 6c 20  |Line.31.Special |
00015370  66 69 65 6c 64 73 20 73  75 70 70 6f 72 74 65 64  |fields supported|
00015380  0a 33 30 09 53 74 72 65  61 6d 73 20 61 72 65 20  |.30.Streams are |
00015390  69 6e 74 65 72 61 63 74  69 76 65 0a 32 39 09 4e  |interactive.29.N|
000153a0  75 6c 6c 2d 6c 65 6e 67  74 68 20 66 69 6c 65 6e  |ull-length filen|
000153b0  61 6d 65 73 20 73 75 70  70 6f 72 74 65 64 0a 32  |ames supported.2|
000153c0  38 09 46 69 6c 65 20 6d  75 73 74 20 62 65 20 6f  |8.File must be o|
000153d0  70 65 6e 65 64 2e 0a 32  37 09 54 65 6c 6c 20 46  |pened..27.Tell F|
000153e0  53 20 77 68 65 6e 20 66  6c 75 73 68 69 6e 67 2e  |S when flushing.|
000153f0  0a 32 36 09 46 53 20 73  75 70 70 6f 72 74 73 20  |.26.FS supports |
00015400  46 53 45 6e 74 72 79 5f  46 69 6c 65 20 39 0a 32  |FSEntry_File 9.2|
00015410  35 09 46 53 20 73 75 70  70 6f 72 74 73 20 46 53  |5.FS supports FS|
00015420  45 6e 74 72 79 5f 46 69  6c 65 20 32 30 0a 32 34  |Entry_File 20.24|
00015430  09 46 53 20 73 75 70 70  6f 72 74 73 20 46 53 45  |.FS supports FSE|
00015440  6e 74 72 79 5f 46 69 6c  65 20 31 38 0a 31 36 2d  |ntry_File 18.16-|
00015450  32 33 09 52 65 73 65 72  76 65 64 2e 20 5a 65 72  |23.Reserved. Zer|
00015460  6f 2e 0a 38 2d 31 35 09  6e 6f 20 6f 66 20 66 69  |o..8-15.no of fi|
00015470  6c 65 73 2e 20 30 20 69  66 20 6e 6f 6e 65 2e 0a  |les. 0 if none..|
00015480  30 2d 37 09 3c 46 53 20  69 64 65 6e 74 69 66 69  |0-7.<FS identifi|
00015490  63 61 74 69 6f 6e 20 6e  6f 2e 3d 3e 66 73 79 73  |cation no.=>fsys|
000154a0  5f 69 64 65 6e 74 3e 00  44 41 54 41 e5 00 00 00  |_ident>.DATA....|
000154b0  4c 6f 61 64 20 61 6e 64  20 45 78 65 63 20 61 64  |Load and Exec ad|
000154c0  64 72 65 73 73 0a 49 66  20 61 6c 6c 20 31 32 20  |dress.If all 12 |
000154d0  75 70 70 65 72 20 62 69  74 73 20 6f 66 20 74 68  |upper bits of th|
000154e0  65 20 6c 6f 61 64 20 61  64 64 72 65 73 73 20 61  |e load address a|
000154f0  72 65 20 73 65 74 20 3a  0a 0a 20 4c 6f 61 64 20  |re set :.. Load |
00015500  61 64 64 72 09 3a 09 46  46 46 74 74 74 63 63 09  |addr.:.FFFtttcc.|
00015510  74 74 74 20 69 73 20 66  69 6c 65 74 79 70 65 0a  |ttt is filetype.|
00015520  20 45 78 65 63 20 61 64  64 72 09 3a 09 64 64 64  | Exec addr.:.ddd|
00015530  64 64 64 64 64 09 63 63  64 64 64 64 64 64 64 64  |ddddd.ccdddddddd|
00015540  20 69 73 20 64 61 74 65  0a 0a 6f 74 68 65 72 77  | is date..otherw|
00015550  69 73 65 20 6c 6f 61 64  20 61 6e 64 20 65 78 65  |ise load and exe|
00015560  63 20 61 64 64 72 65 73  73 20 61 72 65 20 65 78  |c address are ex|
00015570  61 63 74 6c 79 20 77 68  61 74 20 74 68 65 79 20  |actly what they |
00015580  63 6c 61 69 6d 20 74 6f  20 62 65 2e 0a 00 00 00  |claim to be.....|
00015590  44 41 54 41 23 01 00 00  46 69 6c 65 20 41 74 74  |DATA#...File Att|
000155a0  72 69 62 75 74 65 73 0a  42 69 74 09 4d 65 61 6e  |ributes.Bit.Mean|
000155b0  69 6e 67 20 77 68 65 6e  20 73 65 74 0a 23 4c 69  |ing when set.#Li|
000155c0  6e 65 0a 30 09 52 65 61  64 20 61 63 63 65 73 73  |ne.0.Read access|
000155d0  20 66 6f 72 20 79 6f 75  0a 31 09 57 72 69 74 65  | for you.1.Write|
000155e0  20 61 63 63 65 73 73 20  66 6f 72 20 79 6f 75 0a  | access for you.|
000155f0  32 09 2d 0a 33 09 4c 6f  63 6b 65 64 0a 34 09 52  |2.-.3.Locked.4.R|
00015600  65 61 64 20 61 63 63 65  73 73 20 66 6f 72 20 6f  |ead access for o|
00015610  74 68 65 72 73 0a 35 09  57 72 69 74 65 20 61 63  |thers.5.Write ac|
00015620  63 65 73 73 20 66 6f 72  20 6f 74 68 65 72 73 0a  |cess for others.|
00015630  36 09 48 69 64 64 65 6e  20 28 46 69 6c 65 72 2b  |6.Hidden (Filer+|
00015640  29 0a 37 09 41 70 70 6c  69 63 61 74 69 6f 6e 20  |).7.Application |
00015650  28 46 69 6c 65 72 2b 29  0a 0a 49 66 20 62 6f 74  |(Filer+)..If bot|
00015660  68 20 36 20 26 20 37 20  73 65 74 20 74 68 65 6e  |h 6 & 7 set then|
00015670  20 66 69 6c 65 20 69 73  20 73 75 70 65 72 20 68  | file is super h|
00015680  69 64 64 65 6e 2e 20 54  68 65 20 74 6f 70 20 32  |idden. The top 2|
00015690  34 20 62 69 74 73 20 61  72 65 20 66 69 6c 69 6e  |4 bits are filin|
000156a0  67 20 73 79 73 74 65 6d  20 64 65 70 65 6e 64 61  |g system dependa|
000156b0  6e 74 2e 00 44 41 54 41  99 01 00 00 4f 62 6a 65  |nt..DATA....Obje|
000156c0  63 74 20 74 79 70 65 73  0a 54 79 70 65 09 4d 65  |ct types.Type.Me|
000156d0  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 30 09 4f 62  |aning.#Line.0.Ob|
000156e0  6a 65 63 74 20 6e 6f 74  20 66 6f 75 6e 64 0a 31  |ject not found.1|
000156f0  09 46 69 6c 65 0a 32 09  44 69 72 65 63 74 6f 72  |.File.2.Director|
00015700  79 0a 33 09 49 6d 61 67  65 0a 0a 49 6d 61 67 65  |y.3.Image..Image|
00015710  20 66 69 6c 65 73 20 6f  6e 6c 79 20 65 78 69 73  | files only exis|
00015720  74 20 75 6e 64 65 72 20  52 4f 33 2e 20 54 68 65  |t under RO3. The|
00015730  79 20 61 72 65 20 74 79  70 65 64 20 66 69 6c 65  |y are typed file|
00015740  73 20 77 68 69 63 68 20  63 61 6e 20 62 65 20 61  |s which can be a|
00015750  63 63 65 73 73 65 64 20  61 73 20 6e 6f 72 6d 61  |ccessed as norma|
00015760  6c 20 64 69 72 65 63 74  6f 72 69 65 73 2c 20 61  |l directories, a|
00015770  6e 64 20 74 68 65 72 65  66 6f 72 65 20 68 61 76  |nd therefore hav|
00015780  65 20 71 75 61 6c 69 74  69 65 73 20 6f 66 20 62  |e qualities of b|
00015790  6f 74 68 20 66 69 6c 65  73 20 61 6e 64 20 64 69  |oth files and di|
000157a0  72 65 63 74 6f 72 69 65  73 2e 20 49 6d 61 67 65  |rectories. Image|
000157b0  73 20 6d 61 79 20 62 65  20 6c 6f 63 6b 65 64 20  |s may be locked |
000157c0  74 6f 20 70 72 65 76 65  6e 74 20 6d 6f 64 69 66  |to prevent modif|
000157d0  69 63 61 74 69 6f 6e 20  6f 66 20 74 68 65 69 72  |ication of their|
000157e0  20 65 6e 74 69 72 65 20  63 6f 6e 74 65 6e 74 73  | entire contents|
000157f0  2c 20 61 6e 64 20 64 65  6c 65 74 69 6f 6e 20 77  |, and deletion w|
00015800  69 6c 6c 20 64 65 6c 65  74 65 20 74 68 65 20 77  |ill delete the w|
00015810  68 6f 6c 65 20 74 72 65  65 20 77 69 74 68 6f 75  |hole tree withou|
00015820  74 20 63 68 65 63 6b 69  6e 67 20 66 6f 72 20 6c  |t checking for l|
00015830  6f 63 6b 65 64 20 66 69  6c 65 73 20 77 69 74 68  |ocked files with|
00015840  69 6e 20 74 68 65 20 74  72 65 65 2e 0a 00 00 00  |in the tree.....|
00015850  44 49 52 24 2c 00 00 00  2c 00 00 00 7c 58 01 00  |DIR$,...,...|X..|
00015860  46 fd ff ff 15 46 c7 13  81 01 00 00 13 00 00 00  |F....F..........|
00015870  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00015880  81 01 00 00 47 44 72 61  77 0a 23 50 61 72 65 6e  |....GDraw.#Paren|
00015890  74 20 21 52 6f 6f 74 0a  23 50 72 65 66 69 78 20  |t !Root.#Prefix |
000158a0  47 44 72 61 77 5f 0a 23  54 61 62 6c 65 20 43 6f  |GDraw_.#Table Co|
000158b0  6c 75 6d 6e 73 20 32 0a  50 72 6f 63 65 73 73 50  |lumns 2.ProcessP|
000158c0  61 74 68 0a 50 72 6f 63  65 73 73 50 61 74 68 46  |ath.ProcessPathF|
000158d0  50 0a 46 69 6c 6c 0a 46  69 6c 6c 46 50 0a 53 74  |P.Fill.FillFP.St|
000158e0  72 6f 6b 65 0a 53 74 72  6f 6b 65 46 50 0a 53 74  |roke.StrokeFP.St|
000158f0  72 6f 6b 65 50 61 74 68  0a 53 74 72 6f 6b 65 50  |rokePath.StrokeP|
00015900  61 74 68 46 50 0a 46 6c  61 74 74 65 6e 50 61 74  |athFP.FlattenPat|
00015910  68 0a 46 6c 61 74 74 65  6e 50 61 74 68 46 50 0a  |h.FlattenPathFP.|
00015920  54 72 61 6e 73 66 6f 72  6d 50 61 74 68 0a 54 72  |TransformPath.Tr|
00015930  61 6e 73 66 6f 72 6d 50  61 74 68 46 50 0a 50 72  |ansformPathFP.Pr|
00015940  6f 63 65 73 73 43 6c 69  70 50 61 74 68 0a 50 72  |ocessClipPath.Pr|
00015950  6f 63 65 73 73 43 6c 69  70 50 61 74 68 46 50 0a  |ocessClipPathFP.|
00015960  43 6c 69 70 50 61 74 68  0a 43 6c 69 70 50 61 74  |ClipPath.ClipPat|
00015970  68 46 50 0a 43 6c 69 70  50 61 74 68 54 6f 50 61  |hFP.ClipPathToPa|
00015980  74 68 0a 43 6c 69 70 50  61 74 68 54 6f 50 61 74  |th.ClipPathToPat|
00015990  68 46 50 0a 43 6c 65 61  72 43 6c 69 70 52 65 67  |hFP.ClearClipReg|
000159a0  69 6f 6e 0a 53 65 74 43  6c 69 70 52 65 67 69 6f  |ion.SetClipRegio|
000159b0  6e 0a 53 65 74 46 69 6c  6c 53 74 79 6c 65 0a 46  |n.SetFillStyle.F|
000159c0  69 6c 6c 52 65 67 69 6f  6e 0a 53 65 74 50 72 69  |illRegion.SetPri|
000159d0  6e 74 46 6c 61 67 0a 52  65 61 64 46 69 6c 6c 53  |ntFlag.ReadFillS|
000159e0  74 79 6c 65 0a 47 65 74  43 6c 69 70 52 65 67 69  |tyle.GetClipRegi|
000159f0  6f 6e 0a 23 45 6e 64 54  61 62 6c 65 0a 00 00 00  |on.#EndTable....|
00015a00  44 49 52 24 2c 00 00 00  2c 00 00 00 2c 5a 01 00  |DIR$,...,...,Z..|
00015a10  46 fd ff ff b8 06 72 18  83 00 00 00 13 00 00 00  |F.....r.........|
00015a20  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00015a30  83 00 00 00 47 53 70 72  69 74 65 45 78 74 65 6e  |....GSpriteExten|
00015a40  64 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |d.#Parent !Root.|
00015a50  23 50 72 65 66 69 78 20  47 53 70 72 69 74 65 45  |#Prefix GSpriteE|
00015a60  78 74 65 6e 64 5f 0a 23  54 61 62 6c 65 20 43 6f  |xtend_.#Table Co|
00015a70  6c 75 6d 6e 73 20 31 0a  50 6c 6f 74 53 70 72 69  |lumns 1.PlotSpri|
00015a80  74 65 0a 53 77 69 74 63  68 4f 75 74 70 75 74 54  |te.SwitchOutputT|
00015a90  6f 53 70 72 69 74 65 0a  52 65 61 64 56 61 72 69  |oSprite.ReadVari|
00015aa0  61 62 6c 65 0a 23 45 6e  64 54 61 62 6c 65 0a 00  |able.#EndTable..|
00015ab0  44 49 52 24 2c 00 00 00  2c 00 00 00 dc 5a 01 00  |DIR$,...,....Z..|
00015ac0  46 fd ff ff 39 ed dc 14  3b 00 00 00 13 00 00 00  |F...9...;.......|
00015ad0  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00015ae0  3b 00 00 00 48 65 6c 69  78 42 61 73 69 63 0a 23  |;...HelixBasic.#|
00015af0  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
00015b00  65 66 69 78 20 48 65 6c  69 78 42 61 73 69 63 5f  |efix HelixBasic_|
00015b10  0a 53 65 74 75 70 0a 00  44 49 52 24 e8 00 00 00  |.Setup..DIR$....|
00015b20  e8 00 00 00 00 5c 01 00  46 fd ff ff 65 cb 2d b9  |.....\..F...e.-.|
00015b30  69 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |i...........!Roo|
00015b40  74 00 00 00 6c 5c 01 00  45 ff ff ff 30 f0 e4 ff  |t...l\..E...0...|
00015b50  de 00 00 00 13 00 00 00  00 00 00 00 4c 45 44 73  |............LEDs|
00015b60  00 00 00 00 4c 5d 01 00  45 ff ff ff c7 eb e4 ff  |....L]..E.......|
00015b70  f8 00 00 00 13 00 00 00  00 00 00 00 4f 66 66 00  |............Off.|
00015b80  44 5e 01 00 46 ff ff ff  22 b5 2d b9 d0 00 00 00  |D^..F...".-.....|
00015b90  13 00 00 00 00 00 00 00  4f 6e 00 00 14 5f 01 00  |........On..._..|
00015ba0  45 ff ff ff 13 e4 e4 ff  ca 00 00 00 13 00 00 00  |E...............|
00015bb0  00 00 00 00 50 65 72 63  65 6e 74 61 67 65 00 00  |....Percentage..|
00015bc0  e0 5f 01 00 45 ff ff ff  05 fe e4 ff 9d 00 00 00  |._..E...........|
00015bd0  13 00 00 00 00 00 00 00  53 6d 61 73 68 00 00 00  |........Smash...|
00015be0  80 60 01 00 46 ff ff ff  61 bb 2d b9 0c 01 00 00  |.`..F...a.-.....|
00015bf0  13 00 00 00 00 00 00 00  53 74 61 72 74 00 00 00  |........Start...|
00015c00  44 41 54 41 69 00 00 00  48 6f 75 72 67 6c 61 73  |DATAi...Hourglas|
00015c10  73 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |s.#Parent !Root.|
00015c20  23 50 72 65 66 69 78 20  48 6f 75 72 67 6c 61 73  |#Prefix Hourglas|
00015c30  73 5f 0a 43 6f 6c 6f 75  72 73 0a 3c 4c 45 44 73  |s_.Colours.<LEDs|
00015c40  3e 0a 3c 4f 66 66 3e 0a  3c 4f 6e 3e 0a 3c 50 65  |>.<Off>.<On>.<Pe|
00015c50  72 63 65 6e 74 61 67 65  3e 0a 3c 53 6d 61 73 68  |rcentage>.<Smash|
00015c60  3e 0a 3c 53 74 61 72 74  3e 00 00 00 44 41 54 41  |>.<Start>...DATA|
00015c70  de 00 00 00 48 6f 75 72  67 6c 61 73 73 5f 4c 45  |....Hourglass_LE|
00015c80  44 73 20 20 28 26 34 30  36 43 35 29 0a 23 50 61  |Ds  (&406C5).#Pa|
00015c90  72 65 6e 74 20 48 6f 75  72 67 6c 61 73 73 5f 0a  |rent Hourglass_.|
00015ca0  3d 3e 09 52 30 20 3d 20  45 4f 52 20 77 6f 72 64  |=>.R0 = EOR word|
00015cb0  0a 09 52 31 20 3d 20 41  4e 44 20 77 6f 72 64 0a  |..R1 = AND word.|
00015cc0  0a 5c 3c 3d 09 52 30 20  3d 20 6f 6c 64 20 4c 45  |.\<=.R0 = old LE|
00015cd0  44 20 77 6f 72 64 0a 0a  54 68 69 73 20 53 57 49  |D word..This SWI|
00015ce0  20 63 6f 6e 74 72 6f 6c  73 20 74 68 65 20 61 70  | controls the ap|
00015cf0  70 65 61 72 61 6e 63 65  20 6f 66 20 74 77 6f 20  |pearance of two |
00015d00  4c 45 44 73 2e 20 42 69  74 20 30 20 63 6f 6e 74  |LEDs. Bit 0 cont|
00015d10  72 6f 6c 73 20 74 68 65  20 4c 45 44 20 61 62 6f  |rols the LED abo|
00015d20  76 65 20 74 68 65 20 68  6f 75 72 67 6c 61 73 73  |ve the hourglass|
00015d30  2c 20 61 6e 64 20 62 69  74 20 31 20 74 68 65 20  |, and bit 1 the |
00015d40  6f 6e 65 20 62 65 6c 6f  77 2e 00 00 44 41 54 41  |one below...DATA|
00015d50  f8 00 00 00 48 6f 75 72  67 6c 61 73 73 5f 4f 66  |....Hourglass_Of|
00015d60  66 20 20 28 26 34 30 36  43 31 29 0a 23 50 61 72  |f  (&406C1).#Par|
00015d70  65 6e 74 20 48 6f 75 72  67 6c 61 73 73 5f 0a 4e  |ent Hourglass_.N|
00015d80  6f 20 70 61 72 6d 73 0a  0a 54 68 69 73 20 64 65  |o parms..This de|
00015d90  63 72 65 61 73 65 73 20  74 68 65 20 63 6f 75 6e  |creases the coun|
00015da0  74 20 6f 66 20 74 69 6d  65 73 20 74 68 65 20 68  |t of times the h|
00015db0  6f 75 72 67 6c 61 73 73  20 68 61 73 20 62 65 65  |ourglass has bee|
00015dc0  6e 20 74 75 72 6e 65 64  20 6f 6e 20 77 69 74 68  |n turned on with|
00015dd0  20 3c 48 6f 75 72 67 6c  61 73 73 5f 4f 6e 3e 20  | <Hourglass_On> |
00015de0  6f 72 20 3c 48 6f 75 72  67 6c 61 73 73 5f 53 74  |or <Hourglass_St|
00015df0  61 72 74 3e 2c 20 61 6e  64 20 74 75 72 6e 73 20  |art>, and turns |
00015e00  69 74 20 6f 66 66 20 77  68 65 6e 20 69 74 20 72  |it off when it r|
00015e10  65 61 63 68 65 73 20 7a  65 72 6f 2e 20 54 6f 20  |eaches zero. To |
00015e20  66 6f 72 63 65 20 69 74  20 6f 66 66 2c 20 75 73  |force it off, us|
00015e30  65 20 3c 48 6f 75 72 67  6c 61 73 73 5f 53 6d 61  |e <Hourglass_Sma|
00015e40  73 68 3e 2e 44 41 54 41  d0 00 00 00 48 6f 75 72  |sh>.DATA....Hour|
00015e50  67 6c 61 73 73 5f 4f 6e  20 20 28 26 34 30 36 43  |glass_On  (&406C|
00015e60  30 29 0a 23 50 61 72 65  6e 74 20 48 6f 75 72 67  |0).#Parent Hourg|
00015e70  6c 61 73 73 5f 0a 4e 6f  20 70 61 72 6d 73 0a 0a  |lass_.No parms..|
00015e80  54 68 69 73 20 73 68 65  64 75 6c 65 73 20 74 68  |This shedules th|
00015e90  65 20 68 6f 75 72 67 6c  61 73 73 20 74 6f 20 61  |e hourglass to a|
00015ea0  70 70 65 61 72 20 61 66  74 65 72 20 31 2f 33 20  |ppear after 1/3 |
00015eb0  73 65 63 6f 6e 64 2e 20  54 6f 20 74 75 72 6e 20  |second. To turn |
00015ec0  6f 66 66 20 61 67 61 69  6e 2c 20 75 73 65 20 3c  |off again, use <|
00015ed0  48 6f 75 72 67 6c 61 73  73 5f 4f 66 66 3e 2e 20  |Hourglass_Off>. |
00015ee0  54 6f 20 64 65 63 69 64  65 20 74 68 65 20 64 65  |To decide the de|
00015ef0  6c 61 79 20 79 6f 75 72  73 65 6c 66 2c 20 75 73  |lay yourself, us|
00015f00  65 20 3c 48 6f 75 72 67  6c 61 73 73 5f 53 74 61  |e <Hourglass_Sta|
00015f10  72 74 3e 2e 44 41 54 41  ca 00 00 00 48 6f 75 72  |rt>.DATA....Hour|
00015f20  67 6c 61 73 73 5f 50 65  72 63 65 6e 74 61 67 65  |glass_Percentage|
00015f30  20 20 28 26 34 30 36 43  34 29 0a 23 50 61 72 65  |  (&406C4).#Pare|
00015f40  6e 74 20 48 6f 75 72 67  6c 61 73 73 5f 0a 3d 3e  |nt Hourglass_.=>|
00015f50  20 52 30 20 3d 20 70 65  72 63 65 6e 74 61 67 65  | R0 = percentage|
00015f60  0a 0a 54 68 69 73 20 53  57 49 20 64 69 73 70 6c  |..This SWI displ|
00015f70  61 79 73 20 61 20 70 65  72 63 65 6e 74 61 67 65  |ays a percentage|
00015f80  20 62 65 6c 6f 77 20 74  68 65 20 68 6f 75 72 67  | below the hourg|
00015f90  6c 61 73 73 20 69 66 20  52 30 20 69 73 20 69 6e  |lass if R0 is in|
00015fa0  20 74 68 65 20 72 61 6e  67 65 20 30 20 74 6f 20  | the range 0 to |
00015fb0  39 39 2c 20 6f 74 68 65  72 77 69 73 65 20 69 74  |99, otherwise it|
00015fc0  20 74 75 72 6e 73 20 70  65 72 63 65 6e 74 61 67  | turns percentag|
00015fd0  65 20 64 69 73 70 6c 61  79 20 6f 66 66 2e 00 00  |e display off...|
00015fe0  44 41 54 41 9d 00 00 00  48 6f 75 72 67 6c 61 73  |DATA....Hourglas|
00015ff0  73 5f 53 6d 61 73 68 20  20 28 26 34 30 36 43 32  |s_Smash  (&406C2|
00016000  29 0a 23 50 61 72 65 6e  74 20 48 6f 75 72 67 6c  |).#Parent Hourgl|
00016010  61 73 73 5f 0a 4e 6f 20  70 61 72 6d 73 0a 0a 54  |ass_.No parms..T|
00016020  68 69 73 20 53 57 49 20  74 75 72 6e 73 20 74 68  |his SWI turns th|
00016030  65 20 68 6f 75 72 67 6c  61 73 73 20 6f 66 66 20  |e hourglass off |
00016040  69 6d 6d 65 64 69 61 74  65 6c 79 2e 20 4e 6f 72  |immediately. Nor|
00016050  6d 61 6c 6c 79 20 79 6f  75 20 73 68 6f 75 6c 64  |mally you should|
00016060  20 75 73 65 20 3c 48 6f  75 72 67 6c 61 73 73 5f  | use <Hourglass_|
00016070  4f 66 66 3e 20 69 6e 73  74 65 61 64 2e 00 00 00  |Off> instead....|
00016080  44 41 54 41 0c 01 00 00  48 6f 75 72 67 6c 61 73  |DATA....Hourglas|
00016090  73 5f 53 74 61 72 74 20  20 28 26 34 30 36 43 33  |s_Start  (&406C3|
000160a0  29 0a 23 50 61 72 65 6e  74 20 48 6f 75 72 67 6c  |).#Parent Hourgl|
000160b0  61 73 73 5f 0a 3d 3e 20  52 30 20 3d 20 63 65 6e  |ass_.=> R0 = cen|
000160c0  74 69 20 73 65 63 6f 6e  64 73 20 62 65 66 6f 72  |ti seconds befor|
000160d0  65 20 73 74 61 72 74 75  70 0a 0a 54 68 69 73 20  |e startup..This |
000160e0  53 57 49 20 73 68 65 64  75 6c 65 73 20 74 68 65  |SWI shedules the|
000160f0  20 68 6f 75 72 67 6c 61  73 73 20 74 6f 20 61 70  | hourglass to ap|
00016100  70 65 61 72 20 61 66 74  65 72 20 74 68 65 20 67  |pear after the g|
00016110  69 76 65 6e 20 64 65 6c  61 79 2e 20 54 6f 20 74  |iven delay. To t|
00016120  75 72 6e 20 6f 66 66 20  61 67 61 69 6e 2c 20 75  |urn off again, u|
00016130  73 65 20 3c 48 6f 75 72  67 6c 61 73 73 5f 4f 66  |se <Hourglass_Of|
00016140  66 3e 2e 20 41 20 64 65  6c 61 79 20 6f 66 20 30  |f>. A delay of 0|
00016150  20 77 69 6c 6c 20 73 75  70 70 72 65 73 73 20 74  | will suppress t|
00016160  68 65 20 68 6f 75 72 67  6c 61 73 73 20 75 6e 74  |he hourglass unt|
00016170  69 6c 20 79 6f 75 20 63  61 6c 6c 20 3c 48 6f 75  |il you call <Hou|
00016180  72 67 6c 61 73 73 5f 4f  66 66 3e 2e 44 49 52 24  |rglass_Off>.DIR$|
00016190  2c 00 00 00 2c 00 00 00  b8 61 01 00 46 fd ff ff  |,...,....a..F...|
000161a0  92 4d c7 13 ca 00 00 00  13 00 00 00 00 00 00 00  |.M..............|
000161b0  21 52 6f 6f 74 00 00 00  44 41 54 41 ca 00 00 00  |!Root...DATA....|
000161c0  48 79 70 68 65 6e 61 74  6f 72 0a 23 50 61 72 65  |Hyphenator.#Pare|
000161d0  6e 74 20 21 52 6f 6f 74  0a 23 50 72 65 66 69 78  |nt !Root.#Prefix|
000161e0  20 48 79 70 68 65 6e 61  74 6f 72 5f 0a 23 54 61  | Hyphenator_.#Ta|
000161f0  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 52 65  |ble Columns 2.Re|
00016200  73 65 74 44 69 63 74 69  6f 6e 61 72 79 0a 43 72  |setDictionary.Cr|
00016210  65 61 74 65 44 69 63 74  69 6f 6e 61 72 79 0a 43  |eateDictionary.C|
00016220  6f 70 79 44 69 63 74 69  6f 6e 61 72 79 0a 45 6e  |opyDictionary.En|
00016230  71 75 69 72 65 44 69 63  74 69 6f 6e 61 72 79 0a  |quireDictionary.|
00016240  46 69 6e 64 57 6f 72 64  0a 41 64 64 57 6f 72 64  |FindWord.AddWord|
00016250  0a 52 65 6d 6f 76 65 57  6f 72 64 0a 48 79 70 68  |.RemoveWord.Hyph|
00016260  65 6e 61 74 65 0a 47 65  74 57 6f 72 64 73 0a 45  |enate.GetWords.E|
00016270  6e 75 6d 57 6f 72 64 0a  23 45 6e 64 54 61 62 6c  |numWord.#EndTabl|
00016280  65 0a 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |e...DIR$,...,...|
00016290  b0 62 01 00 46 fd ff ff  0c ce dc 14 4d 00 00 00  |.b..F.......M...|
000162a0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000162b0  44 41 54 41 4d 00 00 00  49 63 6f 6e 62 61 72 0a  |DATAM...Iconbar.|
000162c0  23 50 61 72 65 6e 74 20  21 52 6f 6f 74 0a 23 50  |#Parent !Root.#P|
000162d0  72 65 66 69 78 20 49 63  6f 6e 62 61 72 5f 0a 43  |refix Iconbar_.C|
000162e0  6c 61 73 73 53 57 49 0a  50 6f 73 74 46 69 6c 74  |lassSWI.PostFilt|
000162f0  65 72 0a 50 72 65 46 69  6c 74 65 72 0a 00 00 00  |er.PreFilter....|
00016300  44 49 52 24 2c 00 00 00  2c 00 00 00 2c 63 01 00  |DIR$,...,...,c..|
00016310  46 fd ff ff dc 5d 56 f5  21 00 00 00 13 00 00 00  |F....]V.!.......|
00016320  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00016330  21 00 00 00 49 49 43 0a  23 50 61 72 65 6e 74 20  |!...IIC.#Parent |
00016340  21 52 6f 6f 74 0a 43 6f  6e 74 72 6f 6c 00 00 00  |!Root.Control...|
00016350  44 49 52 24 2c 00 00 00  2c 00 00 00 7c 63 01 00  |DIR$,...,...|c..|
00016360  46 fd ff ff 50 4d c7 13  f6 00 00 00 13 00 00 00  |F...PM..........|
00016370  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00016380  f6 00 00 00 49 6d 61 67  65 45 78 74 65 6e 64 0a  |....ImageExtend.|
00016390  23 50 61 72 65 6e 74 20  21 52 6f 6f 74 0a 23 50  |#Parent !Root.#P|
000163a0  72 65 66 69 78 20 49 6d  61 67 65 45 78 74 65 6e  |refix ImageExten|
000163b0  64 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |d_.#Table Column|
000163c0  73 20 32 0a 49 6e 66 6f  0a 50 75 74 53 70 72 69  |s 2.Info.PutSpri|
000163d0  74 65 54 72 61 6e 73 66  6f 72 6d 65 64 0a 50 75  |teTransformed.Pu|
000163e0  74 53 70 72 69 74 65 54  6f 42 75 66 66 65 72 54  |tSpriteToBufferT|
000163f0  72 61 6e 73 66 6f 72 6d  65 64 0a 50 75 74 53 74  |ransformed.PutSt|
00016400  72 69 6e 67 54 72 61 6e  73 66 6f 72 6d 65 64 0a  |ringTransformed.|
00016410  47 65 74 42 42 6f 78 0a  47 65 74 49 6d 61 67 65  |GetBBox.GetImage|
00016420  42 42 6f 78 0a 4d 61 6b  65 4d 61 74 72 69 78 0a  |BBox.MakeMatrix.|
00016430  4d 61 6b 65 48 61 6c 66  74 6f 6e 65 54 69 6c 65  |MakeHalftoneTile|
00016440  0a 41 64 64 4b 65 72 6e  65 6c 54 6f 4d 61 74 72  |.AddKernelToMatr|
00016450  69 78 0a 4d 61 6b 65 53  69 6d 70 6c 65 53 63 72  |ix.MakeSimpleScr|
00016460  65 65 6e 54 69 6c 65 0a  23 45 6e 64 54 61 62 6c  |eenTile.#EndTabl|
00016470  65 0a 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |e...DIR$,...,...|
00016480  a0 64 01 00 46 fd ff ff  2e 43 c7 13 94 00 00 00  |.d..F....C......|
00016490  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000164a0  44 41 54 41 94 00 00 00  49 6d 70 75 6c 73 65 0a  |DATA....Impulse.|
000164b0  23 50 61 72 65 6e 74 20  21 52 6f 6f 74 0a 23 50  |#Parent !Root.#P|
000164c0  72 65 66 69 78 20 49 6d  70 75 6c 73 65 5f 0a 23  |refix Impulse_.#|
000164d0  54 61 62 6c 65 20 43 6f  6c 75 6d 6e 73 20 32 0a  |Table Columns 2.|
000164e0  49 6e 69 74 69 61 6c 69  73 65 0a 44 65 63 6f 64  |Initialise.Decod|
000164f0  65 0a 53 65 6e 64 4d 65  73 73 61 67 65 0a 54 72  |e.SendMessage.Tr|
00016500  61 6e 73 6d 69 74 44 61  74 61 0a 46 65 74 63 68  |ansmitData.Fetch|
00016510  44 61 74 61 0a 43 6c 6f  73 65 44 6f 77 6e 0a 44  |Data.CloseDown.D|
00016520  65 66 65 72 52 65 70 6c  79 0a 23 45 6e 64 54 61  |eferReply.#EndTa|
00016530  62 6c 65 0a 44 49 52 24  2c 00 00 00 2c 00 00 00  |ble.DIR$,...,...|
00016540  60 65 01 00 46 fd ff ff  0a 4e c7 13 d9 00 00 00  |`e..F....N......|
00016550  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00016560  44 41 54 41 d9 00 00 00  49 6e 74 65 72 66 61 63  |DATA....Interfac|
00016570  65 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |e.#Parent !Root.|
00016580  23 50 72 65 66 69 78 20  49 6e 74 65 72 66 61 63  |#Prefix Interfac|
00016590  65 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |e_.#Table Column|
000165a0  73 20 32 0a 53 6c 61 62  42 75 74 74 6f 6e 0a 52  |s 2.SlabButton.R|
000165b0  65 6e 64 65 72 33 64 57  69 6e 64 6f 77 0a 49 6e  |ender3dWindow.In|
000165c0  69 74 69 61 6c 69 73 65  0a 43 6c 6f 73 65 44 6f  |itialise.CloseDo|
000165d0  77 6e 0a 53 65 74 57 6f  72 6b 61 72 65 61 50 6f  |wn.SetWorkareaPo|
000165e0  69 6e 74 65 72 0a 52 65  6d 6f 76 65 57 6f 72 6b  |inter.RemoveWork|
000165f0  61 72 65 61 50 6f 69 6e  74 65 72 0a 50 6f 6c 6c  |areaPointer.Poll|
00016600  0a 53 65 6e 64 48 65 6c  70 0a 50 72 65 50 72 6f  |.SendHelp.PrePro|
00016610  63 65 73 73 4b 65 79 0a  50 6c 6f 74 33 64 49 63  |cessKey.Plot3dIc|
00016620  6f 6e 0a 42 6f 75 6e 64  69 6e 67 42 6f 78 0a 23  |on.BoundingBox.#|
00016630  45 6e 64 54 61 62 6c 65  0a 00 00 00 44 49 52 24  |EndTable....DIR$|
00016640  4c 00 00 00 4c 00 00 00  88 66 01 00 46 fd ff ff  |L...L....f..F...|
00016650  a5 09 81 3b 75 00 00 00  13 00 00 00 00 00 00 00  |...;u...........|
00016660  21 52 6f 6f 74 00 00 00  00 67 01 00 46 ff ff ff  |!Root....g..F...|
00016670  24 ab 67 db 08 02 00 00  13 00 00 00 00 00 00 00  |$.g.............|
00016680  52 65 61 64 00 00 00 00  44 41 54 41 75 00 00 00  |Read....DATAu...|
00016690  4a 6f 79 73 74 69 63 6b  0a 23 50 61 72 65 6e 74  |Joystick.#Parent|
000166a0  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 4a  | !Root.#Prefix J|
000166b0  6f 79 73 74 69 63 6b 5f  0a 3c 52 65 61 64 3e 0a  |oystick_.<Read>.|
000166c0  0a 54 68 69 73 20 69 73  20 6f 6e 6c 79 20 61 76  |.This is only av|
000166d0  61 69 6c 61 62 6c 65 20  6f 6e 20 6d 61 63 68 69  |ailable on machi|
000166e0  6e 65 73 20 77 69 74 68  20 74 68 65 20 70 72 6f  |nes with the pro|
000166f0  70 65 72 20 68 61 72 64  77 61 72 65 2e 00 00 00  |per hardware....|
00016700  44 41 54 41 08 02 00 00  4a 6f 79 73 74 69 63 6b  |DATA....Joystick|
00016710  5f 52 65 61 64 20 20 28  26 34 33 46 34 30 29 0a  |_Read  (&43F40).|
00016720  23 50 61 72 65 6e 74 20  4a 6f 79 73 74 69 63 6b  |#Parent Joystick|
00016730  5f 0a 3d 3e 09 52 30 20  3d 20 4a 6f 79 73 74 69  |_.=>.R0 = Joysti|
00016740  63 6b 20 6e 75 6d 62 65  72 0a 3c 3d 09 52 30 20  |ck number.<=.R0 |
00016750  3d 20 4a 6f 79 73 74 69  63 6b 20 73 74 61 74 65  |= Joystick state|
00016760  0a 0a 54 68 69 73 20 53  57 49 20 72 65 61 64 73  |..This SWI reads|
00016770  20 74 68 65 20 63 75 72  72 65 6e 74 20 73 74 61  | the current sta|
00016780  74 65 20 6f 66 20 74 68  65 20 6a 6f 79 73 74 69  |te of the joysti|
00016790  63 6b 2e 20 54 68 65 20  72 65 74 75 72 6e 65 64  |ck. The returned|
000167a0  20 73 74 61 74 65 20 69  73 20 69 6e 20 74 68 65  | state is in the|
000167b0  20 66 6f 72 6d 20 26 53  53 48 48 56 56 2e 0a 0a  | form &SSHHVV...|
000167c0  7b 2a 7d 41 6e 61 6c 6f  67 75 65 20 6a 6f 79 73  |{*}Analogue joys|
000167d0  74 69 63 6b 73 7b 2a 7d  0a 23 54 61 62 0a 42 79  |ticks{*}.#Tab.By|
000167e0  74 65 09 56 61 6c 75 65  0a 30 09 53 69 67 6e 65  |te.Value.0.Signe|
000167f0  64 20 59 20 76 61 6c 75  65 20 69 6e 20 74 68 65  |d Y value in the|
00016800  20 72 61 6e 67 65 20 2d  31 32 37 20 74 6f 20 31  | range -127 to 1|
00016810  32 37 0a 31 09 53 69 67  6e 65 64 20 58 20 76 61  |27.1.Signed X va|
00016820  6c 75 65 20 69 6e 20 74  68 65 20 72 61 6e 67 65  |lue in the range|
00016830  20 2d 31 32 37 20 74 6f  20 31 32 37 0a 32 09 53  | -127 to 127.2.S|
00016840  77 69 74 63 68 65 73 20  28 65 67 20 66 69 72 65  |witches (eg fire|
00016850  20 62 75 74 74 6f 6e 73  29 2c 20 75 6e 69 6d 70  | buttons), unimp|
00016860  6c 65 6d 65 6e 74 65 64  20 73 77 69 74 63 68 65  |lemented switche|
00016870  73 20 72 65 74 75 72 6e  20 30 0a 33 09 72 65 73  |s return 0.3.res|
00016880  65 72 76 65 64 0a 0a 7b  2a 7d 44 69 67 69 74 61  |erved..{*}Digita|
00016890  6c 20 6a 6f 79 73 74 69  63 6b 73 7b 2a 7d 0a 23  |l joysticks{*}.#|
000168a0  54 61 62 0a 26 34 30 09  69 6e 64 69 63 61 74 65  |Tab.&40.indicate|
000168b0  73 20 75 70 0a 26 43 30  09 69 6e 64 69 63 61 74  |s up.&C0.indicat|
000168c0  65 73 20 64 6f 77 6e 0a  26 34 30 30 30 09 69 6e  |es down.&4000.in|
000168d0  64 69 63 61 74 65 73 20  72 69 67 68 74 0a 26 43  |dicates right.&C|
000168e0  30 30 30 09 69 6e 64 69  63 61 74 65 73 20 6c 65  |000.indicates le|
000168f0  66 74 0a 26 31 30 30 30  30 09 69 6e 64 69 63 61  |ft.&10000.indica|
00016900  74 65 73 20 66 69 72 65  44 49 52 24 2c 00 00 00  |tes fireDIR$,...|
00016910  2c 00 00 00 34 69 01 00  46 fd ff ff 19 66 ee 13  |,...4i..F....f..|
00016920  16 01 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00016930  74 00 00 00 44 41 54 41  16 01 00 00 4c 61 72 67  |t...DATA....Larg|
00016940  65 72 53 75 70 70 6f 72  74 0a 23 50 61 72 65 6e  |erSupport.#Paren|
00016950  74 20 21 52 6f 6f 74 0a  23 50 72 65 66 69 78 20  |t !Root.#Prefix |
00016960  4c 61 72 67 65 72 53 75  70 70 6f 72 74 5f 0a 23  |LargerSupport_.#|
00016970  54 61 62 6c 65 20 43 6f  6c 75 6d 6e 73 20 32 0a  |Table Columns 2.|
00016980  57 72 69 74 65 53 68 69  66 74 0a 52 65 61 64 46  |WriteShift.ReadF|
00016990  61 73 74 4d 6f 76 65 0a  45 6e 61 62 6c 65 46 69  |astMove.EnableFi|
000169a0  6c 74 65 72 0a 44 69 73  61 62 6c 65 46 69 6c 74  |lter.DisableFilt|
000169b0  65 72 0a 52 65 61 64 57  69 6e 64 6f 77 73 4f 70  |er.ReadWindowsOp|
000169c0  65 6e 65 64 0a 52 65 61  64 50 6f 6c 6c 57 6f 72  |ened.ReadPollWor|
000169d0  64 41 64 64 72 65 73 73  0a 52 65 6f 72 67 61 6e  |dAddress.Reorgan|
000169e0  69 73 65 0a 46 69 6e 64  4c 65 66 74 0a 46 69 6e  |ise.FindLeft.Fin|
000169f0  64 52 69 67 68 74 0a 46  69 6e 64 55 70 0a 46 69  |dRight.FindUp.Fi|
00016a00  6e 64 44 6f 77 6e 0a 46  69 6e 64 4e 6f 6e 65 0a  |ndDown.FindNone.|
00016a10  43 6f 70 79 53 70 72 69  74 65 0a 52 65 61 64 42  |CopySprite.ReadB|
00016a20  61 63 6b 64 72 6f 70 43  6f 6d 6d 61 6e 64 54 61  |ackdropCommandTa|
00016a30  69 6c 0a 52 65 61 64 52  65 67 69 73 74 65 72 0a  |il.ReadRegister.|
00016a40  23 45 6e 64 54 61 62 6c  65 0a 00 00 44 49 52 24  |#EndTable...DIR$|
00016a50  2c 00 00 00 2c 00 00 00  78 6a 01 00 46 fd ff ff  |,...,...xj..F...|
00016a60  9c e4 dc 14 50 00 00 00  13 00 00 00 00 00 00 00  |....P...........|
00016a70  21 52 6f 6f 74 00 00 00  44 41 54 41 50 00 00 00  |!Root...DATAP...|
00016a80  4c 5a 57 42 0a 23 50 61  72 65 6e 74 20 21 52 6f  |LZWB.#Parent !Ro|
00016a90  6f 74 0a 23 50 72 65 66  69 78 20 4c 5a 57 42 5f  |ot.#Prefix LZWB_|
00016aa0  0a 43 6f 6d 70 72 65 73  73 0a 44 65 63 6f 6d 70  |.Compress.Decomp|
00016ab0  72 65 73 73 0a 54 61 73  6b 53 74 61 72 74 0a 54  |ress.TaskStart.T|
00016ac0  61 73 6b 51 75 69 74 0a  44 49 52 24 2c 00 00 00  |askQuit.DIR$,...|
00016ad0  2c 00 00 00 f4 6a 01 00  46 fd ff ff 0f d0 dc 14  |,....j..F.......|
00016ae0  52 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |R...........!Roo|
00016af0  74 00 00 00 44 41 54 41  52 00 00 00 4d 65 6e 75  |t...DATAR...Menu|
00016b00  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
00016b10  50 72 65 66 69 78 20 4d  65 6e 75 5f 0a 43 6c 61  |Prefix Menu_.Cla|
00016b20  73 73 53 57 49 0a 50 6f  73 74 46 69 6c 74 65 72  |ssSWI.PostFilter|
00016b30  0a 50 72 65 46 69 6c 74  65 72 0a 55 70 64 61 74  |.PreFilter.Updat|
00016b40  65 54 72 65 65 0a 00 00  44 49 52 24 1c 01 00 00  |eTree...DIR$....|
00016b50  1c 01 00 00 64 6c 01 00  46 fd ff ff 96 8b 1d 00  |....dl..F.......|
00016b60  9e 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00016b70  74 00 00 00 04 6d 01 00  45 ff ff ff 95 29 e5 ff  |t....m..E....)..|
00016b80  a6 00 00 00 13 00 00 00  00 00 00 00 43 6c 6f 73  |............Clos|
00016b90  65 46 69 6c 65 00 00 00  ac 6d 01 00 46 ff ff ff  |eFile....m..F...|
00016ba0  bd 22 99 a5 f9 00 00 00  13 00 00 00 00 00 00 00  |."..............|
00016bb0  46 69 6c 65 49 6e 66 6f  00 00 00 00 a8 6e 01 00  |FileInfo.....n..|
00016bc0  45 ff ff ff 39 22 e5 ff  af 02 00 00 13 00 00 00  |E...9"..........|
00016bd0  00 00 00 00 4c 6f 6f 6b  75 70 00 00 58 71 01 00  |....Lookup..Xq..|
00016be0  45 ff ff ff 89 50 e5 ff  ba 01 00 00 13 00 00 00  |E....P..........|
00016bf0  00 00 00 00 4d 61 6b 65  4d 65 6e 75 73 00 00 00  |....MakeMenus...|
00016c00  14 73 01 00 45 fd ff ff  4c 48 e5 ff b2 01 00 00  |.s..E...LH......|
00016c10  13 00 00 00 00 00 00 00  6d 65 6e 75 64 65 66 00  |........menudef.|
00016c20  c8 74 01 00 46 ff ff ff  89 7e dc 96 cc 03 00 00  |.t..F....~......|
00016c30  13 00 00 00 00 00 00 00  4f 70 65 6e 46 69 6c 65  |........OpenFile|
00016c40  00 00 00 00 94 78 01 00  45 fd ff ff ec 38 e5 ff  |.....x..E....8..|
00016c50  84 00 00 00 13 00 00 00  00 00 00 00 74 6f 6b 65  |............toke|
00016c60  6e 00 00 00 44 41 54 41  9e 00 00 00 4d 65 73 73  |n...DATA....Mess|
00016c70  61 67 65 54 72 61 6e 73  0a 23 50 61 72 65 6e 74  |ageTrans.#Parent|
00016c80  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 4d  | !Root.#Prefix M|
00016c90  65 73 73 61 67 65 54 72  61 6e 73 5f 0a 3c 43 6c  |essageTrans_.<Cl|
00016ca0  6f 73 65 46 69 6c 65 3e  0a 43 6f 70 79 45 72 72  |oseFile>.CopyErr|
00016cb0  6f 72 0a 45 6e 75 6d 65  72 61 74 65 54 6f 6b 65  |or.EnumerateToke|
00016cc0  6e 73 0a 45 72 72 6f 72  4c 6f 6f 6b 75 70 0a 3c  |ns.ErrorLookup.<|
00016cd0  46 69 6c 65 49 6e 66 6f  3e 0a 47 53 4c 6f 6f 6b  |FileInfo>.GSLook|
00016ce0  75 70 0a 3c 4c 6f 6f 6b  75 70 3e 0a 3c 4d 61 6b  |up.<Lookup>.<Mak|
00016cf0  65 4d 65 6e 75 73 3e 0a  3c 4f 70 65 6e 46 69 6c  |eMenus>.<OpenFil|
00016d00  65 3e 00 00 44 41 54 41  a6 00 00 00 4d 65 73 73  |e>..DATA....Mess|
00016d10  61 67 65 54 72 61 6e 73  5f 43 6c 6f 73 65 46 69  |ageTrans_CloseFi|
00016d20  6c 65 20 20 28 26 34 31  35 30 34 29 0a 23 50 61  |le  (&41504).#Pa|
00016d30  72 65 6e 74 20 4d 65 73  73 61 67 65 54 72 61 6e  |rent MessageTran|
00016d40  73 5f 0a 3d 3e 20 52 30  20 3d 20 34 2d 77 6f 72  |s_.=> R0 = 4-wor|
00016d50  64 20 64 61 74 61 20 73  74 72 75 63 74 75 72 65  |d data structure|
00016d60  0a 0a 54 68 69 73 20 53  57 49 20 63 6c 6f 73 65  |..This SWI close|
00016d70  73 20 74 68 65 20 66 69  6c 65 20 70 72 65 76 69  |s the file previ|
00016d80  6f 75 73 6c 79 20 6f 70  65 6e 65 64 20 77 69 74  |ously opened wit|
00016d90  68 20 3c 4d 65 73 73 61  67 65 54 72 61 6e 73 5f  |h <MessageTrans_|
00016da0  4f 70 65 6e 46 69 6c 65  3e 2e 00 00 44 41 54 41  |OpenFile>...DATA|
00016db0  f9 00 00 00 4d 65 73 73  61 67 65 54 72 61 6e 73  |....MessageTrans|
00016dc0  5f 46 69 6c 65 49 6e 66  6f 20 20 28 26 34 31 35  |_FileInfo  (&415|
00016dd0  30 30 29 0a 23 50 61 72  65 6e 74 20 4d 65 73 73  |00).#Parent Mess|
00016de0  61 67 65 54 72 61 6e 73  5f 0a 3d 3e 09 52 31 20  |ageTrans_.=>.R1 |
00016df0  3d 20 66 69 6c 65 6e 61  6d 65 0a 5c 3c 3d 09 52  |= filename.\<=.R|
00016e00  30 20 3d 20 62 69 74 20  30 20 73 65 74 20 69 66  |0 = bit 0 set if|
00016e10  20 68 65 6c 64 20 69 6e  20 6d 65 6d 6f 72 79 0a  | held in memory.|
00016e20  09 52 32 20 3d 20 73 69  7a 65 20 6f 66 20 62 75  |.R2 = size of bu|
00016e30  66 66 65 72 20 6e 65 65  64 65 64 0a 09 0a 52 65  |ffer needed...Re|
00016e40  74 75 72 6e 73 20 69 6e  66 6f 72 6d 61 74 69 6f  |turns informatio|
00016e50  6e 20 61 62 6f 75 74 20  74 68 65 20 73 69 7a 65  |n about the size|
00016e60  20 72 65 71 75 69 72 65  64 20 74 6f 20 68 6f 6c  | required to hol|
00016e70  64 20 61 20 6d 65 73 73  61 67 65 20 66 69 6c 65  |d a message file|
00016e80  20 62 65 66 6f 72 65 20  3c 4d 65 73 73 61 67 65  | before <Message|
00016e90  54 72 61 6e 73 5f 4f 70  65 6e 46 69 6c 65 3e 20  |Trans_OpenFile> |
00016ea0  75 73 65 64 2e 00 00 00  44 41 54 41 af 02 00 00  |used....DATA....|
00016eb0  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 4c 6f 6f  |MessageTrans_Loo|
00016ec0  6b 75 70 20 20 28 26 34  31 35 30 32 29 0a 23 50  |kup  (&41502).#P|
00016ed0  61 72 65 6e 74 20 4d 65  73 73 61 67 65 54 72 61  |arent MessageTra|
00016ee0  6e 73 5f 0a 3d 3e 09 52  30 20 3d 20 34 2d 77 6f  |ns_.=>.R0 = 4-wo|
00016ef0  72 64 20 64 61 74 61 20  73 74 72 75 63 74 75 72  |rd data structur|
00016f00  65 0a 09 52 31 20 3d 20  3c 54 6f 6b 65 6e 3d 3e  |e..R1 = <Token=>|
00016f10  6d 65 73 73 61 67 65 74  72 61 6e 73 5f 74 6f 6b  |messagetrans_tok|
00016f20  65 6e 3e 0a 09 52 32 20  3d 20 62 75 66 66 65 72  |en>..R2 = buffer|
00016f30  0a 09 52 33 20 3d 20 62  75 66 66 65 72 20 73 69  |..R3 = buffer si|
00016f40  7a 65 0a 09 52 34 20 3d  20 70 61 72 61 6d 65 74  |ze..R4 = paramet|
00016f50  65 72 20 30 20 0a 09 52  35 20 3d 20 70 61 72 61  |er 0 ..R5 = para|
00016f60  6d 65 74 65 72 20 31 20  0a 09 52 36 20 3d 20 70  |meter 1 ..R6 = p|
00016f70  61 72 61 6d 65 74 65 72  20 32 20 0a 09 52 37 20  |arameter 2 ..R7 |
00016f80  3d 20 70 61 72 61 6d 65  74 65 72 20 33 0a 5c 3c  |= parameter 3.\<|
00016f90  3d 09 52 31 20 3d 20 70  74 72 20 74 6f 20 74 6f  |=.R1 = ptr to to|
00016fa0  6b 65 6e 2d 74 65 72 6d  69 6e 61 74 6f 72 0a 09  |ken-terminator..|
00016fb0  52 32 20 3d 20 72 65 73  75 6c 74 20 73 74 72 69  |R2 = result stri|
00016fc0  6e 67 0a 09 52 33 20 3d  20 73 69 7a 65 20 6f 66  |ng..R3 = size of|
00016fd0  20 72 65 73 75 6c 74 0a  0a 54 68 69 73 20 53 57  | result..This SW|
00016fe0  49 20 6c 6f 6f 6b 73 20  75 70 20 74 68 65 20 74  |I looks up the t|
00016ff0  6f 6b 65 6e 20 6f 6e 20  74 68 65 20 6d 65 73 73  |oken on the mess|
00017000  61 67 65 20 66 69 6c 65  2e 20 49 66 20 52 32 20  |age file. If R2 |
00017010  3d 20 30 20 6f 6e 20 65  6e 74 72 79 2c 20 79 6f  |= 0 on entry, yo|
00017020  75 27 6c 6c 20 67 65 74  20 61 20 70 6f 69 6e 74  |u'll get a point|
00017030  65 72 20 74 6f 20 61 20  72 65 61 64 2d 6f 6e 6c  |er to a read-onl|
00017040  79 20 73 74 72 69 6e 67  2c 20 61 6e 64 20 6e 6f  |y string, and no|
00017050  20 70 61 72 61 6d 65 74  65 72 20 73 75 62 73 74  | parameter subst|
00017060  69 74 75 74 69 6f 6e 20  77 69 6c 6c 20 62 65 20  |itution will be |
00017070  64 6f 6e 65 2c 20 61 6c  73 6f 20 74 68 65 20 73  |done, also the s|
00017080  74 72 69 6e 67 20 77 69  6c 6c 20 62 65 20 74 65  |tring will be te|
00017090  72 6d 69 6e 61 74 65 64  20 62 79 20 5c 5c 31 30  |rminated by \\10|
000170a0  2c 20 61 6e 64 20 6e 6f  74 20 5c 5c 30 2e 20 49  |, and not \\0. I|
000170b0  66 20 52 32 20 21 3d 20  30 2c 20 25 30 20 74 6f  |f R2 != 0, %0 to|
000170c0  20 25 33 20 69 6e 20 74  68 65 20 73 74 72 69 6e  | %3 in the strin|
000170d0  67 20 77 69 6c 6c 20 62  65 20 72 65 70 6c 61 63  |g will be replac|
000170e0  65 64 20 62 79 20 74 68  65 20 73 74 72 69 6e 67  |ed by the string|
000170f0  73 20 69 6e 20 52 34 20  74 6f 20 52 37 2e 20 50  |s in R4 to R7. P|
00017100  72 69 6f 72 20 74 6f 20  74 68 69 73 20 63 61 6c  |rior to this cal|
00017110  6c 2c 20 79 6f 75 20 6d  75 73 74 20 68 61 76 65  |l, you must have|
00017120  20 63 61 6c 6c 65 64 20  3c 4d 65 73 73 61 67 65  | called <Message|
00017130  54 72 61 6e 73 5f 4f 70  65 6e 46 69 6c 65 3d 3e  |Trans_OpenFile=>|
00017140  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 4f 70 65  |MessageTrans_Ope|
00017150  6e 46 69 6c 65 3e 2e 00  44 41 54 41 ba 01 00 00  |nFile>..DATA....|
00017160  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 4d 61 6b  |MessageTrans_Mak|
00017170  65 4d 65 6e 75 73 20 20  28 26 34 31 35 30 33 29  |eMenus  (&41503)|
00017180  0a 23 50 61 72 65 6e 74  20 4d 65 73 73 61 67 65  |.#Parent Message|
00017190  54 72 61 6e 73 5f 0a 3d  3e 09 52 30 20 3d 20 44  |Trans_.=>.R0 = D|
000171a0  61 74 61 20 73 74 72 75  63 74 75 72 65 0a 09 52  |ata structure..R|
000171b0  31 20 3d 20 3c 4d 65 6e  75 20 64 65 66 69 6e 69  |1 = <Menu defini|
000171c0  74 69 6f 6e 3d 3e 6d 65  73 73 61 67 65 74 72 61  |tion=>messagetra|
000171d0  6e 73 5f 6d 65 6e 75 64  65 66 3e 0a 09 52 32 20  |ns_menudef>..R2 |
000171e0  3d 20 44 65 73 74 69 6e  61 74 69 6f 6e 20 62 75  |= Destination bu|
000171f0  66 66 65 72 0a 09 52 33  20 3d 20 53 69 7a 65 20  |ffer..R3 = Size |
00017200  6f 66 20 62 75 66 66 65  72 0a 5c 3c 3d 09 52 31  |of buffer.\<=.R1|
00017210  20 3d 20 4d 65 6e 75 20  64 61 74 61 0a 09 52 32  | = Menu data..R2|
00017220  20 3d 20 42 79 74 65 73  20 72 65 6d 61 69 6e 69  | = Bytes remaini|
00017230  6e 67 0a 0a 54 68 69 73  20 53 57 49 20 63 72 65  |ng..This SWI cre|
00017240  61 74 65 73 20 61 20 6d  65 6e 75 20 73 74 72 75  |ates a menu stru|
00017250  63 74 75 72 65 20 66 72  6f 6d 20 61 20 73 6b 65  |cture from a ske|
00017260  6c 65 74 6f 6e 20 6d 65  6e 75 20 6f 66 20 74 6f  |leton menu of to|
00017270  6b 65 6e 73 2e 20 49 66  20 74 68 65 20 6d 65 6e  |kens. If the men|
00017280  75 20 69 74 65 6d 20 69  73 20 77 72 69 74 65 61  |u item is writea|
00017290  62 6c 65 20 61 6e 64 20  69 6e 64 69 72 65 63 74  |ble and indirect|
000172a0  65 64 2c 20 74 68 65 20  63 6f 72 72 65 73 70 6f  |ed, the correspo|
000172b0  6e 64 69 6e 67 20 33 20  77 6f 72 64 73 20 69 6e  |nding 3 words in|
000172c0  20 74 68 65 20 64 65 73  74 69 6e 61 74 69 6f 6e  | the destination|
000172d0  20 62 75 66 66 65 72 20  73 68 6f 75 6c 64 20 62  | buffer should b|
000172e0  65 20 73 65 74 20 74 6f  20 63 6f 72 72 65 63 74  |e set to correct|
000172f0  20 76 61 6c 75 65 73 20  2a 62 65 66 6f 72 65 2a  | values *before*|
00017300  20 63 61 6c 6c 69 6e 67  20 74 68 69 73 20 53 57  | calling this SW|
00017310  49 2e 00 00 44 41 54 41  b2 01 00 00 4d 65 6e 75  |I...DATA....Menu|
00017320  20 64 65 66 69 6e 69 74  69 6f 6e 0a 30 09 54 6f  | definition.0.To|
00017330  6b 65 6e 20 66 6f 72 20  6d 65 6e 75 20 74 69 74  |ken for menu tit|
00017340  6c 65 20 28 20 5c 30 20  66 6f 72 20 6e 6f 20 6d  |le ( \0 for no m|
00017350  6f 72 65 20 29 0a 0a 6e  09 36 20 62 79 74 65 73  |ore )..n.6 bytes|
00017360  20 3a 0a 09 20 20 6d 65  6e 75 20 74 69 74 6c 65  | :..  menu title|
00017370  20 66 6f 72 65 67 72 6f  75 6e 64 20 61 6e 64 20  | foreground and |
00017380  66 72 61 6d 65 20 63 6f  6c 6f 75 72 0a 09 20 20  |frame colour..  |
00017390  6d 65 6e 75 20 74 69 74  6c 65 20 62 61 63 6b 67  |menu title backg|
000173a0  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 0a 09 20 20  |round colour..  |
000173b0  6d 65 6e 75 20 77 6f 72  6b 20 61 72 65 61 20 66  |menu work area f|
000173c0  6f 72 65 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |oreground colour|
000173d0  0a 09 20 20 6d 65 6e 75  20 77 6f 72 6b 20 61 72  |..  menu work ar|
000173e0  65 61 20 62 61 63 6b 67  72 6f 75 6e 64 20 63 6f  |ea background co|
000173f0  6c 6f 75 72 0a 09 20 20  68 65 69 67 68 74 20 6f  |lour..  height o|
00017400  66 20 6d 65 6e 75 20 69  74 65 6d 73 0a 09 20 20  |f menu items..  |
00017410  67 61 70 20 62 65 74 77  65 65 6e 20 69 74 65 6d  |gap between item|
00017420  73 0a 0a 6e 2b 36 09 6d  20 6d 65 6e 75 20 69 74  |s..n+6.m menu it|
00017430  65 6d 73 20 3a 0a 09 20  20 54 6f 6b 65 6e 20 66  |ems :..  Token f|
00017440  6f 72 20 6d 65 6e 75 20  69 74 65 6d 0a 09 20 20  |or menu item..  |
00017450  57 6f 72 64 2d 61 6c 69  67 6e 0a 09 20 20 33 20  |Word-align..  3 |
00017460  57 6f 72 64 73 20 3a 0a  09 20 20 20 20 4d 65 6e  |Words :..    Men|
00017470  75 20 66 6c 61 67 73 20  28 62 69 74 20 37 20 73  |u flags (bit 7 s|
00017480  65 74 20 66 6f 72 20 6c  61 73 74 20 69 74 65 6d  |et for last item|
00017490  29 0a 09 20 20 20 20 4f  66 66 73 65 74 20 74 6f  |)..    Offset to|
000174a0  20 73 75 62 6d 65 6e 75  20 28 20 30 20 66 6f 72  | submenu ( 0 for|
000174b0  20 6e 6f 6e 65 29 0a 09  20 20 20 20 49 63 6f 6e  | none)..    Icon|
000174c0  20 66 6c 61 67 73 00 00  44 41 54 41 cc 03 00 00  | flags..DATA....|
000174d0  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 4f 70 65  |MessageTrans_Ope|
000174e0  6e 46 69 6c 65 20 20 28  26 34 31 35 30 31 29 0a  |nFile  (&41501).|
000174f0  23 50 61 72 65 6e 74 20  4d 65 73 73 61 67 65 54  |#Parent MessageT|
00017500  72 61 6e 73 5f 0a 3d 3e  09 52 30 20 3d 20 34 2d  |rans_.=>.R0 = 4-|
00017510  77 6f 72 64 20 64 61 74  61 20 73 74 72 75 63 74  |word data struct|
00017520  75 72 65 0a 09 52 31 20  3d 20 46 69 6c 65 6e 61  |ure..R1 = Filena|
00017530  6d 65 0a 09 52 32 20 3d  20 42 75 66 66 65 72 20  |me..R2 = Buffer |
00017540  66 6f 72 20 66 69 6c 65  20 64 61 74 61 20 28 30  |for file data (0|
00017550  20 74 6f 20 75 73 65 20  52 4d 41 29 0a 0a 54 68  | to use RMA)..Th|
00017560  69 73 20 53 57 49 20 6f  70 65 6e 73 20 61 20 6d  |is SWI opens a m|
00017570  65 73 73 61 67 65 2d 66  69 6c 65 2e 20 49 66 20  |essage-file. If |
00017580  52 32 20 3d 20 30 2c 20  74 68 65 6e 20 74 68 65  |R2 = 0, then the|
00017590  20 64 61 74 61 2d 73 74  72 75 63 74 75 72 65 20  | data-structure |
000175a0  69 6e 20 52 30 20 61 6e  64 20 74 68 65 20 66 69  |in R0 and the fi|
000175b0  6c 65 6e 61 6d 65 20 69  6e 20 52 31 20 62 6f 74  |lename in R1 bot|
000175c0  68 20 6d 75 73 74 20 62  65 20 69 6e 20 74 68 65  |h must be in the|
000175d0  20 52 4d 41 2e 0a 0a 41  6e 20 61 70 70 6c 69 63  | RMA...An applic|
000175e0  61 74 69 6f 6e 20 6d 61  79 20 64 65 63 69 64 65  |ation may decide|
000175f0  20 74 68 61 74 20 69 74  20 77 6f 75 6c 64 20 6c  | that it would l|
00017600  69 6b 65 20 74 6f 20 62  75 66 66 65 72 20 74 68  |ike to buffer th|
00017610  65 20 66 69 6c 65 20 69  6e 20 69 74 73 20 6f 77  |e file in its ow|
00017620  6e 20 77 6f 72 6b 73 70  61 63 65 20 28 72 61 74  |n workspace (rat|
00017630  68 65 72 20 74 68 61 6e  20 74 68 65 20 52 4d 41  |her than the RMA|
00017640  29 20 69 66 20 69 74 20  6e 65 65 64 73 20 74 6f  |) if it needs to|
00017650  20 62 65 20 6c 6f 61 64  65 64 2c 20 6f 72 20 75  | be loaded, or u|
00017660  73 65 20 74 68 65 20 66  69 6c 65 20 64 69 72 65  |se the file dire|
00017670  63 74 6c 79 20 69 66 20  69 74 20 69 73 20 61 6c  |ctly if it is al|
00017680  72 65 61 64 79 20 69 6e  20 6d 65 6d 6f 72 79 2e  |ready in memory.|
00017690  20 20 54 6f 20 64 6f 20  74 68 69 73 3a 0a 0a 23  |  To do this:..#|
000176a0  66 43 6f 64 65 0a 23 49  6e 64 65 6e 74 20 34 0a  |fCode.#Indent 4.|
000176b0  53 59 53 20 22 4d 65 73  73 61 67 65 54 72 61 6e  |SYS "MessageTran|
000176c0  73 5f 46 69 6c 65 49 6e  66 6f 22 2c 2c 66 69 6c  |s_FileInfo",,fil|
000176d0  65 6e 61 6d 65 24 20 54  4f 20 66 6c 61 67 73 25  |ename$ TO flags%|
000176e0  2c 2c 73 69 7a 65 25 0a  49 46 20 66 6c 61 67 73  |,,size%.IF flags|
000176f0  25 20 41 4e 44 20 31 20  54 48 45 4e 20 62 75 66  |% AND 1 THEN buf|
00017700  66 65 72 25 3d 30 20 45  4c 53 45 20 62 75 66 66  |fer%=0 ELSE buff|
00017710  65 72 25 3d 46 4e 61 6c  6c 6f 63 28 73 69 7a 65  |er%=FNalloc(size|
00017720  25 29 0a 53 59 53 20 22  4f 53 5f 4d 6f 64 75 6c  |%).SYS "OS_Modul|
00017730  65 22 2c 36 2c 2c 2c 31  37 2b 4c 45 4e 66 69 6c  |e",6,,,17+LENfil|
00017740  65 6e 61 6d 65 24 20 54  4f 20 2c 2c 66 69 6c 65  |ename$ TO ,,file|
00017750  64 65 73 63 25 0a 24 28  66 69 6c 65 64 65 73 63  |desc%.$(filedesc|
00017760  25 2b 31 36 29 3d 66 69  6c 65 6e 61 6d 65 24 0a  |%+16)=filename$.|
00017770  53 59 53 20 22 4d 65 73  73 61 67 65 54 72 61 6e  |SYS "MessageTran|
00017780  73 5f 4f 70 65 6e 46 69  6c 65 22 2c 66 69 6c 65  |s_OpenFile",file|
00017790  64 65 73 63 25 2c 66 69  6c 65 64 65 73 63 25 2b  |desc%,filedesc%+|
000177a0  31 36 2c 62 75 66 66 65  72 25 0a 23 66 0a 23 49  |16,buffer%.#f.#I|
000177b0  6e 64 65 6e 74 0a 0a 77  68 65 72 65 20 46 4e 61  |ndent..where FNa|
000177c0  6c 6c 6f 63 28 29 20 61  6c 6c 6f 63 61 74 65 73  |lloc() allocates|
000177d0  20 61 20 62 75 66 66 65  72 20 6f 66 20 61 20 67  | a buffer of a g|
000177e0  69 76 65 6e 20 73 69 7a  65 2c 20 62 79 20 75 73  |iven size, by us|
000177f0  69 6e 67 20 74 68 65 20  3c 57 69 6d 70 5f 53 6c  |ing the <Wimp_Sl|
00017800  6f 74 53 69 7a 65 3e 20  6f 72 20 22 45 4e 44 3d  |otSize> or "END=|
00017810  22 20 63 6f 6d 6d 61 6e  64 2e 20 20 4e 6f 74 65  |" command.  Note|
00017820  20 74 68 61 74 20 69 6e  20 66 61 63 74 20 74 68  | that in fact th|
00017830  65 20 66 69 6c 65 6e 61  6d 65 20 61 6e 64 20 66  |e filename and f|
00017840  69 6c 65 20 64 65 73 63  72 69 70 74 6f 72 20 6f  |ile descriptor o|
00017850  6e 6c 79 20 6e 65 65 64  20 74 6f 20 62 65 20 69  |nly need to be i|
00017860  6e 20 74 68 65 20 52 4d  41 20 69 66 20 52 32 3d  |n the RMA if R2=|
00017870  30 20 6f 6e 20 65 6e 74  72 79 20 74 6f 20 4d 65  |0 on entry to Me|
00017880  73 73 61 67 65 54 72 61  6e 73 5f 4f 70 65 6e 46  |ssageTrans_OpenF|
00017890  69 6c 65 2e 44 41 54 41  84 00 00 00 54 6f 6b 65  |ile.DATA....Toke|
000178a0  6e 0a 54 6f 6b 65 6e 20  69 73 20 74 65 72 6d 69  |n.Token is termi|
000178b0  6e 61 74 65 64 20 62 79  20 61 6e 79 20 63 6f 6e  |nated by any con|
000178c0  74 72 6f 6c 20 63 68 61  72 2c 20 73 70 61 63 65  |trol char, space|
000178d0  2c 20 22 2c 22 20 6f 72  20 22 29 22 2e 0a 49 74  |, "," or ")"..It|
000178e0  20 63 61 6e 20 61 6c 73  6f 20 62 65 20 6f 66 20  | can also be of |
000178f0  74 68 65 20 66 6f 72 6d  20 74 6f 6b 65 6e 3a 64  |the form token:d|
00017900  65 66 61 75 6c 74 20 74  65 72 6d 69 6e 61 74 65  |efault terminate|
00017910  64 20 62 79 20 5c 5c 30  44 49 52 24 2c 00 00 00  |d by \\0DIR$,...|
00017920  2c 00 00 00 44 79 01 00  46 fd ff ff 98 8b 1d 00  |,...Dy..F.......|
00017930  cf 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00017940  74 00 00 00 44 41 54 41  cf 00 00 00 4e 65 74 46  |t...DATA....NetF|
00017950  53 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |S.#Parent !Root.|
00017960  43 6f 6e 76 65 72 74 44  61 74 65 0a 44 6f 46 53  |ConvertDate.DoFS|
00017970  4f 70 0a 44 6f 46 53 4f  70 54 6f 47 69 76 65 6e  |Op.DoFSOpToGiven|
00017980  46 53 0a 45 6e 75 6d 65  72 61 74 65 46 53 43 61  |FS.EnumerateFSCa|
00017990  63 68 65 0a 45 6e 75 6d  65 72 61 74 65 46 53 4c  |che.EnumerateFSL|
000179a0  69 73 74 0a 52 65 61 64  43 75 72 72 65 6e 74 43  |ist.ReadCurrentC|
000179b0  6f 6e 74 65 78 74 0a 52  65 61 64 46 53 4e 61 6d  |ontext.ReadFSNam|
000179c0  65 0a 52 65 61 64 46 53  4e 75 6d 62 65 72 0a 52  |e.ReadFSNumber.R|
000179d0  65 61 64 46 53 54 69 6d  65 6f 75 74 73 0a 53 65  |eadFSTimeouts.Se|
000179e0  74 43 75 72 72 65 6e 74  43 6f 6e 74 65 78 74 0a  |tCurrentContext.|
000179f0  53 65 74 46 53 4e 61 6d  65 0a 53 65 74 46 53 4e  |SetFSName.SetFSN|
00017a00  75 6d 62 65 72 0a 53 65  74 46 53 54 69 6d 65 6f  |umber.SetFSTimeo|
00017a10  75 74 73 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |uts.DIR$,...,...|
00017a20  40 7a 01 00 46 fd ff ff  a0 8b 1d 00 69 00 00 00  |@z..F.......i...|
00017a30  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00017a40  44 41 54 41 69 00 00 00  4e 65 74 50 72 69 6e 74  |DATAi...NetPrint|
00017a50  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 52  |.#Parent !Root.R|
00017a60  65 61 64 50 53 4e 61 6d  65 0a 52 65 61 64 50 53  |eadPSName.ReadPS|
00017a70  4e 75 6d 62 65 72 0a 52  65 61 64 50 53 54 69 6d  |Number.ReadPSTim|
00017a80  65 6f 75 74 73 0a 53 65  74 50 53 4e 61 6d 65 0a  |eouts.SetPSName.|
00017a90  53 65 74 50 53 4e 75 6d  62 65 72 0a 53 65 74 50  |SetPSNumber.SetP|
00017aa0  53 54 69 6d 65 6f 75 74  73 00 00 00 44 41 54 41  |STimeouts...DATA|
00017ab0  47 04 00 00 4e 6f 6e 2d  4f 70 65 72 61 74 69 6e  |G...Non-Operatin|
00017ac0  67 20 53 79 73 74 65 6d  20 53 57 49 27 73 0a 23  |g System SWI's.#|
00017ad0  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 6f  |Parent !Root.#Po|
00017ae0  73 74 66 69 78 20 5f 0a  43 6f 6d 70 75 74 65 72  |stfix _.Computer|
00017af0  20 43 6f 6e 63 65 70 74  73 20 3a 0a 23 49 6e 64  | Concepts :.#Ind|
00017b00  65 6e 74 20 33 0a 23 54  61 62 6c 65 20 43 6f 6c  |ent 3.#Table Col|
00017b10  75 6d 6e 73 20 34 0a 3c  41 42 49 3e 0a 3c 41 42  |umns 4.<ABI>.<AB|
00017b20  43 4c 69 62 3e 0a 3c 41  75 64 69 6f 4d 61 6e 61  |CLib>.<AudioMana|
00017b30  67 65 72 3e 0a 3c 41 57  52 65 6e 64 65 72 3e 0a  |ger>.<AWRender>.|
00017b40  3c 43 6f 6c 6f 75 72 45  78 74 65 6e 64 3e 0a 3c  |<ColourExtend>.<|
00017b50  44 69 74 68 65 72 45 78  74 65 6e 64 3e 0a 3c 44  |DitherExtend>.<D|
00017b60  6f 63 75 6d 65 6e 74 4d  61 6e 61 67 65 72 3e 0a  |ocumentManager>.|
00017b70  3c 46 6f 6e 74 44 72 61  77 3e 0a 3c 47 44 72 61  |<FontDraw>.<GDra|
00017b80  77 3e 0a 3c 47 53 70 72  69 74 65 45 78 74 65 6e  |w>.<GSpriteExten|
00017b90  64 3e 0a 3c 48 79 70 68  65 6e 61 74 6f 72 3e 0a  |d>.<Hyphenator>.|
00017ba0  3c 49 6d 61 67 65 45 78  74 65 6e 64 3e 0a 3c 49  |<ImageExtend>.<I|
00017bb0  6d 70 75 6c 73 65 3e 0a  3c 4f 4c 45 3e 0a 3c 50  |mpulse>.<OLE>.<P|
00017bc0  6f 63 6b 65 74 46 53 3e  0a 3c 50 6f 63 6b 65 74  |ocketFS>.<Pocket|
00017bd0  4c 69 6e 6b 3e 0a 3c 53  70 65 6c 6c 3e 0a 3c 53  |Link>.<Spell>.<S|
00017be0  74 72 65 61 6d 3e 0a 3c  53 74 72 65 61 6d 53 71  |tream>.<StreamSq|
00017bf0  75 61 73 68 3e 0a 3c 57  69 6d 70 4b 65 79 3e 0a  |uash>.<WimpKey>.|
00017c00  23 45 6e 64 54 61 62 6c  65 0a 0a 23 49 6e 64 65  |#EndTable..#Inde|
00017c10  6e 74 20 30 0a 41 63 6f  72 6e 20 75 74 69 6c 69  |nt 0.Acorn utili|
00017c20  74 69 65 73 20 3a 0a 23  49 6e 64 65 6e 74 20 33  |ties :.#Indent 3|
00017c30  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
00017c40  34 0a 3c 43 6f 6c 6f 75  72 44 62 6f 78 3e 0a 3c  |4.<ColourDbox>.<|
00017c50  43 6f 6c 6f 75 72 4d 65  6e 75 3e 0a 3c 43 6f 6d  |ColourMenu>.<Com|
00017c60  70 72 65 73 73 4a 50 45  47 3e 0a 3c 44 43 53 3e  |pressJPEG>.<DCS>|
00017c70  0a 3c 44 44 45 55 74 69  6c 73 3e 0a 3c 44 72 61  |.<DDEUtils>.<Dra|
00017c80  67 41 6e 4f 62 6a 65 63  74 3e 0a 3c 46 69 6c 65  |gAnObject>.<File|
00017c90  49 6e 66 6f 3e 0a 3c 46  6f 6e 74 44 62 6f 78 3e  |Info>.<FontDbox>|
00017ca0  0a 3c 46 6f 6e 74 4d 65  6e 75 3e 0a 3c 46 72 6f  |.<FontMenu>.<Fro|
00017cb0  6e 74 45 6e 64 3e 0a 3c  49 63 6f 6e 62 61 72 3e  |ntEnd>.<Iconbar>|
00017cc0  0a 3c 4d 61 6b 65 50 53  46 6f 6e 74 3e 0a 3c 4d  |.<MakePSFont>.<M|
00017cd0  65 6e 75 3e 0a 3c 50 72  69 6e 74 44 62 6f 78 3e  |enu>.<PrintDbox>|
00017ce0  0a 3c 50 72 6f 67 49 6e  66 6f 3e 0a 3c 52 65 6d  |.<ProgInfo>.<Rem|
00017cf0  6f 74 65 50 72 69 6e 74  65 72 53 75 70 70 6f 72  |otePrinterSuppor|
00017d00  74 3e 0a 3c 52 4f 4d 43  61 63 68 65 3e 0a 3c 53  |t>.<ROMCache>.<S|
00017d10  61 76 65 41 73 3e 0a 3c  53 63 61 6c 65 3e 0a 3c  |aveAs>.<Scale>.<|
00017d20  54 69 6e 79 53 75 70 70  6f 72 74 3e 0a 3c 54 6f  |TinySupport>.<To|
00017d30  6f 6c 62 6f 78 3e 0a 3c  57 69 6e 64 6f 77 3e 0a  |olbox>.<Window>.|
00017d40  23 45 6e 64 54 61 62 6c  65 0a 0a 23 49 6e 64 65  |#EndTable..#Inde|
00017d50  6e 74 20 30 0a 4a 6f 68  6e 20 4b 6f 72 74 69 6e  |nt 0.John Kortin|
00017d60  6b 20 3a 0a 23 49 6e 64  65 6e 74 20 33 0a 23 54  |k :.#Indent 3.#T|
00017d70  61 62 6c 65 20 43 6f 6c  75 6d 6e 73 20 33 0a 3c  |able Columns 3.<|
00017d80  42 6f 72 64 65 72 73 3e  0a 3c 43 72 65 61 74 6f  |Borders>.<Creato|
00017d90  72 3e 0a 3c 46 69 6c 65  42 75 66 66 65 72 3e 0a  |r>.<FileBuffer>.|
00017da0  3c 4c 5a 57 42 3e 0a 3c  4d 61 6b 65 47 49 46 3e  |<LZWB>.<MakeGIF>|
00017db0  0a 3c 54 72 61 6e 73 6c  61 74 6f 72 3e 0a 23 45  |.<Translator>.#E|
00017dc0  6e 64 54 61 62 6c 65 0a  0a 23 49 6e 64 65 6e 74  |ndTable..#Indent|
00017dd0  20 30 0a 4d 69 73 63 65  6c 6c 61 6e 65 6f 75 73  | 0.Miscellaneous|
00017de0  20 3a 0a 23 49 6e 64 65  6e 74 20 33 0a 23 54 61  | :.#Indent 3.#Ta|
00017df0  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 34 0a 3c 41  |ble Columns 4.<A|
00017e00  45 48 3d 3e 41 45 48 4d  6f 64 75 6c 65 3a 21 52  |EH=>AEHModule:!R|
00017e10  6f 6f 74 3e 0a 3c 41 72  63 46 53 3e 0a 3c 41 72  |oot>.<ArcFS>.<Ar|
00017e20  63 46 53 4d 65 6d 4d 61  6e 3e 0a 3c 43 41 49 46  |cFSMemMan>.<CAIF|
00017e30  53 3e 0a 3c 44 69 72 65  63 74 6f 72 3e 0a 3c 44  |S>.<Director>.<D|
00017e40  69 73 73 3e 0a 3c 45 75  63 6c 69 64 3e 0a 3c 47  |iss>.<Euclid>.<G|
00017e50  64 62 6d 3e 0a 3c 48 65  6c 69 78 42 61 73 69 63  |dbm>.<HelixBasic|
00017e60  3e 0a 3c 49 6e 74 65 72  66 61 63 65 3e 0a 3c 4c  |>.<Interface>.<L|
00017e70  61 72 67 65 72 53 75 70  70 6f 72 74 3e 0a 3c 4c  |argerSupport>.<L|
00017e80  69 6e 65 45 64 69 74 6f  72 3e 0a 3c 4e 65 74 4d  |ineEditor>.<NetM|
00017e90  6f 6e 69 74 6f 72 3e 0a  3c 51 54 4d 3e 0a 3c 52  |onitor>.<QTM>.<R|
00017ea0  65 61 64 4d 61 69 6c 3e  0a 3c 53 70 63 68 3e 0a  |eadMail>.<Spch>.|
00017eb0  3c 54 72 61 63 6b 65 72  3e 0a 3c 56 50 72 6f 74  |<Tracker>.<VProt|
00017ec0  65 63 74 3e 0a 3c 57 69  6d 70 45 78 74 3d 3e 57  |ect>.<WimpExt=>W|
00017ed0  69 6d 70 45 78 74 3a 21  52 6f 6f 74 3e 0a 3c 5a  |impExt:!Root>.<Z|
00017ee0  61 70 52 65 64 72 61 77  3e 0a 23 45 6e 64 54 61  |apRedraw>.#EndTa|
00017ef0  62 6c 65 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |ble.DIR$,...,...|
00017f00  20 7f 01 00 46 fd ff ff  03 ef 98 a5 3f 01 00 00  | ...F.......?...|
00017f10  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00017f20  44 41 54 41 3f 01 00 00  4f 4c 45 0a 23 50 61 72  |DATA?...OLE.#Par|
00017f30  65 6e 74 20 21 52 6f 6f  74 0a 23 50 72 65 66 69  |ent !Root.#Prefi|
00017f40  78 20 4f 4c 45 5f 0a 23  54 61 62 6c 65 20 43 6f  |x OLE_.#Table Co|
00017f50  6c 75 6d 6e 73 32 0a 56  65 72 73 69 6f 6e 0a 4c  |lumns2.Version.L|
00017f60  69 6e 6b 46 69 6c 65 0a  44 65 4c 69 6e 6b 46 69  |inkFile.DeLinkFi|
00017f70  6c 65 0a 46 69 6c 65 53  74 61 74 75 73 0a 49 6e  |le.FileStatus.In|
00017f80  76 61 6c 69 64 61 74 65  0a 53 69 6d 75 6c 61 74  |validate.Simulat|
00017f90  65 53 65 73 73 69 6f 6e  0a 23 45 6e 64 54 61 62  |eSession.#EndTab|
00017fa0  6c 65 0a 0a 4d 65 73 73  61 67 65 73 20 3a 0a 23  |le..Messages :.#|
00017fb0  57 72 61 70 20 6f 66 66  0a 23 49 6e 64 65 6e 74  |Wrap off.#Indent|
00017fc0  20 32 0a 3c 38 30 45 31  45 20 4f 4c 45 5f 46 69  | 2.<80E1E OLE_Fi|
00017fd0  6c 65 43 68 61 6e 67 65  64 3d 3e 77 69 6d 70 5f  |leChanged=>wimp_|
00017fe0  75 6d 38 30 45 31 45 3e  0a 3c 38 30 45 32 31 20  |um80E1E>.<80E21 |
00017ff0  4f 4c 45 5f 4f 70 65 6e  53 65 73 73 69 6f 6e 3d  |OLE_OpenSession=|
00018000  3e 77 69 6d 70 5f 75 6d  38 30 45 32 31 3e 0a 3c  |>wimp_um80E21>.<|
00018010  38 30 45 32 32 20 4f 4c  45 5f 4f 70 65 6e 53 65  |80E22 OLE_OpenSe|
00018020  73 73 69 6f 6e 41 63 6b  3d 3e 77 69 6d 70 5f 75  |ssionAck=>wimp_u|
00018030  6d 38 30 45 32 32 3e 0a  3c 38 30 45 32 33 20 4f  |m80E22>.<80E23 O|
00018040  4c 45 5f 43 6c 6f 73 65  53 65 73 73 69 6f 6e 3d  |LE_CloseSession=|
00018050  3e 77 69 6d 70 5f 75 6d  38 30 45 32 33 3e 0a 00  |>wimp_um80E23>..|
00018060  44 49 52 24 f8 0e 00 00  f8 0e 00 00 58 8f 01 00  |DIR$........X...|
00018070  47 fd ff ff 03 40 28 0a  34 06 00 00 13 00 00 00  |G....@(.4.......|
00018080  00 00 00 00 21 72 6f 6f  74 00 00 00 8c 95 01 00  |....!root.......|
00018090  46 ff ff ff ef 89 7c 8b  91 03 00 00 13 00 00 00  |F.....|.........|
000180a0  00 00 00 00 41 64 64 43  61 6c 6c 42 61 63 6b 00  |....AddCallBack.|
000180b0  20 99 01 00 46 fd ff ff  62 54 8a a5 dd 00 00 00  | ...F...bT......|
000180c0  13 00 00 00 00 00 00 00  61 72 65 61 73 00 00 00  |........areas...|
000180d0  00 9a 01 00 45 ff ff ff  b2 80 e7 ff 9d 00 00 00  |....E...........|
000180e0  13 00 00 00 00 00 00 00  42 47 65 74 00 00 00 00  |........BGet....|
000180f0  a0 9a 01 00 45 ff ff ff  7d 7e e7 ff 03 01 00 00  |....E...}~......|
00018100  13 00 00 00 00 00 00 00  42 69 6e 61 72 79 54 6f  |........BinaryTo|
00018110  44 65 63 69 6d 61 6c 00  a4 9b 01 00 46 ff ff ff  |Decimal.....F...|
00018120  9f d8 cc 14 81 00 00 00  13 00 00 00 00 00 00 00  |................|
00018130  42 50 75 74 00 00 00 00  28 9c 01 00 46 ff ff ff  |BPut....(...F...|
00018140  49 51 e1 f5 92 02 00 00  13 00 00 00 00 00 00 00  |IQ..............|
00018150  43 68 61 6e 67 65 44 79  6e 61 6d 69 63 41 72 65  |ChangeDynamicAre|
00018160  61 00 00 00 bc 9e 01 00  46 ff ff ff 50 f9 f6 3e  |a.......F...P..>|
00018170  1d 03 00 00 13 00 00 00  00 00 00 00 43 6c 61 69  |............Clai|
00018180  6d 00 00 00 dc a1 01 00  45 ff ff ff 76 58 e7 ff  |m.......E...vX..|
00018190  69 01 00 00 13 00 00 00  00 00 00 00 43 6c 61 69  |i...........Clai|
000181a0  6d 53 63 72 65 65 6e 4d  65 6d 6f 72 79 00 00 00  |mScreenMemory...|
000181b0  48 a3 01 00 45 ff ff ff  6f 26 e7 ff 70 01 00 00  |H...E...o&..p...|
000181c0  13 00 00 00 00 00 00 00  43 52 43 00 b8 a4 01 00  |........CRC.....|
000181d0  46 ff ff ff 63 1f 2f 0e  ef 01 00 00 13 00 00 00  |F...c./.........|
000181e0  00 00 00 00 45 6e 74 65  72 4f 53 00 a8 a6 01 00  |....EnterOS.....|
000181f0  46 ff ff ff 18 14 2f 0e  71 01 00 00 13 00 00 00  |F...../.q.......|
00018200  00 00 00 00 45 76 61 6c  75 61 74 65 45 78 70 72  |....EvaluateExpr|
00018210  65 73 73 69 6f 6e 00 00  1c a8 01 00 45 ff ff ff  |ession......E...|
00018220  b9 f4 e6 ff 3b 01 00 00  13 00 00 00 00 00 00 00  |....;...........|
00018230  45 78 69 74 00 00 00 00  58 a9 01 00 45 ff ff ff  |Exit....X...E...|
00018240  c2 89 e7 ff 08 01 00 00  13 00 00 00 00 00 00 00  |................|
00018250  45 78 69 74 41 6e 64 44  69 65 00 00 60 aa 01 00  |ExitAndDie..`...|
00018260  46 ff ff ff c1 e1 de 25  31 02 00 00 13 00 00 00  |F......%1.......|
00018270  00 00 00 00 46 69 6e 64  00 00 00 00 94 ac 01 00  |....Find........|
00018280  46 ff ff ff 48 3f 5c 5a  b8 00 00 00 13 00 00 00  |F...H?\Z........|
00018290  00 00 00 00 47 65 74 45  6e 76 00 00 4c ad 01 00  |....GetEnv..L...|
000182a0  45 ff ff ff cc f0 e6 ff  60 01 00 00 13 00 00 00  |E.......`.......|
000182b0  00 00 00 00 52 65 6c 65  61 73 65 00 ac ae 01 00  |....Release.....|
000182c0  47 ff ff ff 0b 36 0c 0a  bd 00 00 00 13 00 00 00  |G....6..........|
000182d0  00 00 00 00 53 65 74 45  43 46 4f 72 69 67 69 6e  |....SetECFOrigin|
000182e0  00 00 00 00 6c af 01 00  46 ff ff ff 9c f2 ce f2  |....l...F.......|
000182f0  c0 03 00 00 13 00 00 00  00 00 00 00 53 57 49 4e  |............SWIN|
00018300  75 6d 62 65 72 46 72 6f  6d 53 74 72 69 6e 67 00  |umberFromString.|
00018310  2c b3 01 00 46 ff ff ff  8a 0f cf f2 3d 03 00 00  |,...F.......=...|
00018320  13 00 00 00 00 00 00 00  53 57 49 4e 75 6d 62 65  |........SWINumbe|
00018330  72 54 6f 53 74 72 69 6e  67 00 00 00 6c b6 01 00  |rToString...l...|
00018340  46 ff ff ff f5 bb 6b f5  47 01 00 00 13 00 00 00  |F.....k.G.......|
00018350  00 00 00 00 55 70 64 61  74 65 4d 45 4d 43 00 00  |....UpdateMEMC..|
00018360  b4 b7 01 00 46 ff ff ff  9a 04 fd fc eb 01 00 00  |....F...........|
00018370  13 00 00 00 00 00 00 00  56 61 6c 69 64 61 74 65  |........Validate|
00018380  41 64 64 72 65 73 73 00  a0 b9 01 00 46 fd ff ff  |Address.....F...|
00018390  6b a7 5d f5 87 05 00 00  13 00 00 00 00 00 00 00  |k.].............|
000183a0  76 65 63 74 6f 72 63 68  61 69 6e 00 28 bf 01 00  |vectorchain.(...|
000183b0  46 fd ff ff 7b 1a 43 34  ee 05 00 00 13 00 00 00  |F...{.C4........|
000183c0  00 00 00 00 76 65 63 74  6f 72 72 75 6c 65 73 00  |....vectorrules.|
000183d0  18 c5 01 00 46 fd ff ff  56 b4 6c f5 6c 05 00 00  |....F...V.l.l...|
000183e0  13 00 00 00 00 00 00 00  76 65 63 74 6f 72 73 00  |........vectors.|
000183f0  84 ca 01 00 46 ff ff ff  75 9c a6 fa 19 01 00 00  |....F...u.......|
00018400  13 00 00 00 00 00 00 00  67 65 6e 65 72 61 74 65  |........generate|
00018410  65 76 65 6e 74 00 00 00  a0 cb 01 00 46 fd ff ff  |event.......F...|
00018420  8a 0e 61 f5 00 02 00 00  13 00 00 00 00 00 00 00  |..a.............|
00018430  65 76 65 6e 74 76 00 00  a0 cd 01 00 46 ff ff ff  |eventv......F...|
00018440  c7 ff c8 21 c6 01 00 00  13 00 00 00 00 00 00 00  |...!............|
00018450  53 70 72 69 74 65 4f 70  00 00 00 00 68 cf 01 00  |SpriteOp....h...|
00018460  46 ff ff ff 54 c5 63 f5  c3 00 00 00 13 00 00 00  |F...T.c.........|
00018470  00 00 00 00 4d 6f 75 73  65 00 00 00 2c d0 01 00  |....Mouse...,...|
00018480  46 ff ff ff f5 24 5d f5  e6 02 00 00 13 00 00 00  |F....$].........|
00018490  00 00 00 00 43 68 61 6e  67 65 45 6e 76 69 72 6f  |....ChangeEnviro|
000184a0  6e 6d 65 6e 74 00 00 00  14 d3 01 00 46 fd ff ff  |nment.......F...|
000184b0  2a 36 5d f5 34 03 00 00  13 00 00 00 00 00 00 00  |*6].4...........|
000184c0  68 61 6e 64 6c 65 72 73  00 00 00 00 48 d6 01 00  |handlers....H...|
000184d0  46 fd ff ff 56 fd f2 3b  34 01 00 00 13 00 00 00  |F...V..;4.......|
000184e0  00 00 00 00 49 6e 73 56  00 00 00 00 7c d7 01 00  |....InsV....|...|
000184f0  46 fd ff ff 5c 98 61 f5  76 03 00 00 13 00 00 00  |F...\.a.v.......|
00018500  00 00 00 00 65 76 65 6e  74 73 00 00 f4 da 01 00  |....events......|
00018510  46 ff ff ff 23 60 5e f5  c2 01 00 00 13 00 00 00  |F...#`^.........|
00018520  00 00 00 00 43 6f 6e 66  69 72 6d 00 b8 dc 01 00  |....Confirm.....|
00018530  46 ff ff ff a7 53 be 40  08 01 00 00 13 00 00 00  |F....S.@........|
00018540  00 00 00 00 53 65 74 56  61 72 56 61 6c 00 00 00  |....SetVarVal...|
00018550  c0 dd 01 00 46 fd ff ff  b2 48 bb 88 a2 03 00 00  |....F....H......|
00018560  13 00 00 00 00 00 00 00  76 61 72 74 79 70 65 73  |........vartypes|
00018570  00 00 00 00 64 e1 01 00  47 fd ff ff 7d 27 2d 0a  |....d...G...}'-.|
00018580  44 01 00 00 13 01 00 00  00 00 00 00 41 72 67 73  |D...........Args|
00018590  00 00 00 00 48 ec 01 00  47 fd ff ff ac 27 2d 0a  |....H...G....'-.|
000185a0  2c 04 00 00 13 01 00 00  00 00 00 00 42 79 74 65  |,...........Byte|
000185b0  00 00 00 00 48 68 02 00  47 fd ff ff a9 28 2d 0a  |....Hh..G....(-.|
000185c0  98 01 00 00 13 01 00 00  00 00 00 00 46 69 6c 65  |............File|
000185d0  00 00 00 00 ac 81 02 00  47 fd ff ff e4 28 2d 0a  |........G....(-.|
000185e0  10 03 00 00 13 01 00 00  00 00 00 00 46 53 43 6f  |............FSCo|
000185f0  6e 74 72 6f 6c 00 00 00  4c ad 02 00 47 fd ff ff  |ntrol...L...G...|
00018600  53 29 2d 0a 9c 05 00 00  13 01 00 00 00 00 00 00  |S)-.............|
00018610  53 70 72 69 74 65 4f 70  5f 00 00 00 b0 fb 02 00  |SpriteOp_.......|
00018620  47 fd ff ff 1c 2a 2d 0a  c8 02 00 00 13 01 00 00  |G....*-.........|
00018630  00 00 00 00 4d 6f 64 75  6c 65 00 00 00 24 03 00  |....Module...$..|
00018640  47 fd ff ff 7e 2a 2d 0a  c8 00 00 00 13 01 00 00  |G...~*-.........|
00018650  00 00 00 00 43 6f 6e 76  65 72 74 00 a8 2c 03 00  |....Convert..,..|
00018660  47 fd ff ff 96 2a 2d 0a  d4 01 00 00 13 01 00 00  |G....*-.........|
00018670  00 00 00 00 55 70 43 61  6c 6c 00 00 e0 66 03 00  |....UpCall...f..|
00018680  47 fd ff ff 11 2b 2d 0a  0c 01 00 00 13 01 00 00  |G....+-.........|
00018690  00 00 00 00 47 42 50 42  00 00 00 00 00 7e 03 00  |....GBPB.....~..|
000186a0  47 fd ff ff 37 2b 2d 0a  4c 00 00 00 13 01 00 00  |G...7+-.L.......|
000186b0  00 00 00 00 50 6c 6f 74  00 00 00 00 f8 82 03 00  |....Plot........|
000186c0  47 fd ff ff 44 2b 2d 0a  a4 00 00 00 13 01 00 00  |G...D+-.........|
000186d0  00 00 00 00 47 53 00 00  a0 88 03 00 47 fd ff ff  |....GS......G...|
000186e0  5c 2b 2d 0a 70 01 00 00  13 01 00 00 00 00 00 00  |\+-.p...........|
000186f0  48 65 61 70 00 00 00 00  2c 95 03 00 47 fd ff ff  |Heap....,...G...|
00018700  8d 2b 2d 0a 64 02 00 00  13 01 00 00 00 00 00 00  |.+-.d...........|
00018710  52 65 61 64 00 00 00 00  08 c6 03 00 47 fd ff ff  |Read........G...|
00018720  d6 2b 2d 0a 68 01 00 00  13 01 00 00 00 00 00 00  |.+-.h...........|
00018730  57 6f 72 64 00 00 00 00  b0 d4 03 00 47 fd ff ff  |Word........G...|
00018740  06 2c 2d 0a 98 00 00 00  13 01 00 00 00 00 00 00  |.,-.............|
00018750  57 72 69 74 65 00 00 00  ac d8 03 00 46 ff ff ff  |Write.......F...|
00018760  61 ef 5e f5 51 03 00 00  13 00 00 00 00 00 00 00  |a.^.Q...........|
00018770  46 69 6e 64 4d 65 6d 4d  61 70 45 6e 74 72 69 65  |FindMemMapEntrie|
00018780  73 00 00 00 00 dc 03 00  46 fd ff ff 8d d4 5e f5  |s.......F.....^.|
00018790  74 01 00 00 13 00 00 00  00 00 00 00 6d 65 6d 6d  |t...........memm|
000187a0  61 70 72 65 71 75 65 73  74 00 00 00 74 dd 03 00  |aprequest...t...|
000187b0  46 ff ff ff 56 f6 6a f5  63 01 00 00 13 00 00 00  |F...V.j.c.......|
000187c0  00 00 00 00 53 65 74 4d  65 6d 4d 61 70 45 6e 74  |....SetMemMapEnt|
000187d0  72 69 65 73 00 00 00 00  d8 de 03 00 46 ff ff ff  |ries........F...|
000187e0  11 94 6c a1 3c 01 00 00  13 00 00 00 00 00 00 00  |..l.<...........|
000187f0  43 61 6c 6c 41 66 74 65  72 00 00 00 14 e0 03 00  |CallAfter.......|
00018800  46 ff ff ff c6 6d 6c a1  93 00 00 00 13 00 00 00  |F....ml.........|
00018810  00 00 00 00 52 65 6d 6f  76 65 43 61 6c 6c 42 61  |....RemoveCallBa|
00018820  63 6b 00 00 a8 e0 03 00  46 ff ff ff 26 57 6c a1  |ck......F...&Wl.|
00018830  ac 00 00 00 13 00 00 00  00 00 00 00 52 65 6d 6f  |............Remo|
00018840  76 65 54 69 63 6b 65 72  45 76 65 6e 74 00 00 00  |veTickerEvent...|
00018850  54 e1 03 00 46 ff ff ff  7d 9f 6c a1 53 01 00 00  |T...F...}.l.S...|
00018860  13 00 00 00 00 00 00 00  43 61 6c 6c 45 76 65 72  |........CallEver|
00018870  79 00 00 00 a8 e2 03 00  47 fd ff ff 38 2c 2d 0a  |y.......G...8,-.|
00018880  68 01 00 00 13 01 00 00  00 00 00 00 44 79 6e 61  |h...........Dyna|
00018890  6d 69 63 41 72 65 61 00  58 02 04 00 46 ff ff ff  |micArea.X...F...|
000188a0  c1 c9 56 f5 75 00 00 00  13 00 00 00 00 00 00 00  |..V.u...........|
000188b0  41 64 64 54 6f 56 65 63  74 6f 72 00 d0 02 04 00  |AddToVector.....|
000188c0  46 ff ff ff 0f ec 56 f5  2a 02 00 00 13 00 00 00  |F.....V.*.......|
000188d0  00 00 00 00 42 72 65 61  6b 43 74 72 6c 00 00 00  |....BreakCtrl...|
000188e0  fc 04 04 00 46 ff ff ff  cf fc 56 f5 76 01 00 00  |....F.....V.v...|
000188f0  13 00 00 00 00 00 00 00  42 72 65 61 6b 50 74 00  |........BreakPt.|
00018900  74 06 04 00 46 ff ff ff  8f 31 5c f5 b0 01 00 00  |t...F....1\.....|
00018910  13 00 00 00 00 00 00 00  43 61 6c 6c 41 56 65 63  |........CallAVec|
00018920  74 6f 72 00 24 08 04 00  46 ff ff ff aa 82 5c f5  |tor.$...F.....\.|
00018930  4e 02 00 00 13 00 00 00  00 00 00 00 43 61 6c 6c  |N...........Call|
00018940  42 61 63 6b 00 00 00 00  74 0a 04 00 46 ff ff ff  |Back....t...F...|
00018950  9a b0 5c f5 e5 02 00 00  13 00 00 00 00 00 00 00  |..\.............|
00018960  43 68 61 6e 67 65 64 42  6f 78 00 00 5c 0d 04 00  |ChangedBox..\...|
00018970  46 ff ff ff a6 60 5d f5  de 01 00 00 13 00 00 00  |F....`].........|
00018980  00 00 00 00 43 68 61 6e  67 65 52 65 64 69 72 65  |....ChangeRedire|
00018990  63 74 69 6f 6e 00 00 00  3c 0f 04 00 46 ff ff ff  |ction...<...F...|
000189a0  58 81 5d f5 f8 01 00 00  13 00 00 00 00 00 00 00  |X.].............|
000189b0  43 68 65 63 6b 4d 6f 64  65 56 61 6c 69 64 00 00  |CheckModeValid..|
000189c0  34 11 04 00 46 ff ff ff  e9 1f 5e f5 60 07 00 00  |4...F.....^.`...|
000189d0  13 00 00 00 00 00 00 00  43 6c 61 69 6d 44 65 76  |........ClaimDev|
000189e0  69 63 65 56 65 63 74 6f  72 00 00 00 94 18 04 00  |iceVector.......|
000189f0  46 fd ff ff 98 1c 5e f5  7a 02 00 00 13 00 00 00  |F.....^.z.......|
00018a00  00 00 00 00 73 79 73 74  65 6d 64 65 76 69 63 65  |....systemdevice|
00018a10  73 00 00 00 10 1b 04 00  46 ff ff ff 16 46 5e f5  |s.......F....F^.|
00018a20  7b 02 00 00 13 00 00 00  00 00 00 00 43 4c 49 00  |{...........CLI.|
00018a30  8c 1d 04 00 46 ff ff ff  51 74 5e f5 42 02 00 00  |....F...Qt^.B...|
00018a40  13 00 00 00 00 00 00 00  43 6f 6e 74 72 6f 6c 00  |........Control.|
00018a50  d0 1f 04 00 46 ff ff ff  64 99 5e f5 45 03 00 00  |....F...d.^.E...|
00018a60  13 00 00 00 00 00 00 00  44 65 6c 69 6e 6b 41 70  |........DelinkAp|
00018a70  70 6c 69 63 61 74 69 6f  6e 00 00 00 18 23 04 00  |plication....#..|
00018a80  46 ff ff ff 69 8d 60 f5  c3 00 00 00 13 00 00 00  |F...i.`.........|
00018a90  00 00 00 00 47 65 6e 65  72 61 74 65 45 72 72 6f  |....GenerateErro|
00018aa0  72 00 00 00 dc 23 04 00  46 ff ff ff fa f2 63 f5  |r....#..F.....c.|
00018ab0  3a 01 00 00 13 00 00 00  00 00 00 00 49 6e 73 74  |:...........Inst|
00018ac0  61 6c 6c 4b 65 79 48 61  6e 64 6c 65 72 00 00 00  |allKeyHandler...|
00018ad0  18 25 04 00 46 ff ff ff  81 da 0e fb d6 00 00 00  |.%..F...........|
00018ae0  13 00 00 00 00 00 00 00  69 6e 74 6f 66 66 00 00  |........intoff..|
00018af0  f0 25 04 00 46 ff ff ff  d0 4c 10 fb d2 00 00 00  |.%..F....L......|
00018b00  13 00 00 00 00 00 00 00  69 6e 74 6f 6e 00 00 00  |........inton...|
00018b10  c4 26 04 00 46 fd ff ff  1c 0c 64 f5 86 00 00 00  |.&..F.....d.....|
00018b20  13 00 00 00 00 00 00 00  4d 6f 75 73 65 42 75 74  |........MouseBut|
00018b30  74 6f 6e 73 00 00 00 00  4c 27 04 00 46 ff ff ff  |tons....L'..F...|
00018b40  f8 07 64 f5 6c 00 00 00  13 00 00 00 00 00 00 00  |..d.l...........|
00018b50  4e 65 77 4c 69 6e 65 00  b8 27 04 00 46 ff ff ff  |NewLine..'..F...|
00018b60  e5 71 64 f5 af 09 00 00  13 00 00 00 00 00 00 00  |.qd.............|
00018b70  50 72 65 74 74 79 50 72  69 6e 74 00 68 31 04 00  |PrettyPrint.h1..|
00018b80  46 ff ff ff 75 bd a8 fa  14 01 00 00 13 00 00 00  |F...u...........|
00018b90  00 00 00 00 50 72 69 6e  74 43 68 61 72 00 00 00  |....PrintChar...|
00018ba0  7c 32 04 00 46 ff ff ff  f0 7c 69 f5 9f 03 00 00  ||2..F....|i.....|
00018bb0  13 00 00 00 00 00 00 00  52 65 6c 65 61 73 65 44  |........ReleaseD|
00018bc0  65 76 69 63 65 56 65 63  74 6f 72 00 1c 36 04 00  |eviceVector..6..|
00018bd0  46 ff ff ff 05 86 69 f5  0b 01 00 00 13 00 00 00  |F.....i.........|
00018be0  00 00 00 00 52 65 6c 69  6e 6b 41 70 70 6c 69 63  |....RelinkApplic|
00018bf0  61 74 69 6f 6e 00 00 00  28 37 04 00 46 ff ff ff  |ation...(7..F...|
00018c00  b3 9b 69 f5 22 01 00 00  13 00 00 00 00 00 00 00  |..i."...........|
00018c10  52 65 6d 6f 76 65 43 75  72 73 6f 72 73 00 00 00  |RemoveCursors...|
00018c20  4c 38 04 00 46 ff ff ff  0d a8 69 f5 8c 00 00 00  |L8..F.....i.....|
00018c30  13 00 00 00 00 00 00 00  52 65 73 74 6f 72 65 43  |........RestoreC|
00018c40  75 72 73 6f 72 73 00 00  d8 38 04 00 46 fd ff ff  |ursors...8..F...|
00018c50  10 df 69 f5 40 01 00 00  13 00 00 00 00 00 00 00  |..i.@...........|
00018c60  53 65 72 69 61 6c 4f 70  30 00 00 00 18 3a 04 00  |SerialOp0....:..|
00018c70  46 fd ff ff 41 f0 90 e6  4c 0a 00 00 13 00 00 00  |F...A...L.......|
00018c80  00 00 00 00 53 65 72 69  61 6c 4f 70 53 74 61 74  |....SerialOpStat|
00018c90  75 73 00 00 64 44 04 00  46 fd ff ff f1 f3 69 f5  |us..dD..F.....i.|
00018ca0  e6 00 00 00 13 00 00 00  00 00 00 00 53 65 72 69  |............Seri|
00018cb0  61 6c 4f 70 31 00 00 00  4c 45 04 00 46 fd ff ff  |alOp1...LE..F...|
00018cc0  32 67 5d e6 ec 01 00 00  13 00 00 00 00 00 00 00  |2g].............|
00018cd0  53 65 72 69 61 6c 4f 70  46 6f 72 6d 61 74 00 00  |SerialOpFormat..|
00018ce0  38 47 04 00 46 fd ff ff  2c 02 6a f5 a0 01 00 00  |8G..F...,.j.....|
00018cf0  13 00 00 00 00 00 00 00  53 65 72 69 61 6c 4f 70  |........SerialOp|
00018d00  32 00 00 00 d8 48 04 00  46 fd ff ff 7b 0d 6a f5  |2....H..F...{.j.|
00018d10  8f 01 00 00 13 00 00 00  00 00 00 00 53 65 72 69  |............Seri|
00018d20  61 6c 4f 70 33 00 00 00  68 4a 04 00 46 fd ff ff  |alOp3...hJ..F...|
00018d30  f9 7a 0e fb f1 01 00 00  13 00 00 00 00 00 00 00  |.z..............|
00018d40  73 65 72 69 61 6c 6f 70  34 00 00 00 5c 4c 04 00  |serialop4...\L..|
00018d50  46 fd ff ff 87 26 6a f5  9b 00 00 00 13 00 00 00  |F....&j.........|
00018d60  00 00 00 00 53 65 72 69  61 6c 4f 70 35 00 00 00  |....SerialOp5...|
00018d70  f8 4c 04 00 46 fd ff ff  72 2f 6a f5 99 00 00 00  |.L..F...r/j.....|
00018d80  13 00 00 00 00 00 00 00  53 65 72 69 61 6c 4f 70  |........SerialOp|
00018d90  36 00 00 00 94 4d 04 00  46 fd ff ff 20 cf 5d e6  |6....M..F... .].|
00018da0  a1 00 00 00 13 00 00 00  00 00 00 00 53 65 72 69  |............Seri|
00018db0  61 6c 4f 70 53 70 65 65  64 73 00 00 38 4e 04 00  |alOpSpeeds..8N..|
00018dc0  46 ff ff ff c0 bf 6a f5  93 01 00 00 13 00 00 00  |F.....j.........|
00018dd0  00 00 00 00 53 65 74 43  61 6c 6c 42 61 63 6b 00  |....SetCallBack.|
00018de0  cc 4f 04 00 46 ff ff ff  f7 de 6a f5 1a 02 00 00  |.O..F.....j.....|
00018df0  13 00 00 00 00 00 00 00  53 65 74 45 6e 76 00 00  |........SetEnv..|
00018e00  e8 51 04 00 47 ff ff ff  ee f1 e7 02 f2 01 00 00  |.Q..G...........|
00018e10  13 00 00 00 00 00 00 00  53 65 74 43 6f 6c 6f 75  |........SetColou|
00018e20  72 00 00 00 dc 53 04 00  46 fd ff ff 2f 5e 6b f5  |r....S..F.../^k.|
00018e30  83 01 00 00 13 00 00 00  00 00 00 00 73 65 74 63  |............setc|
00018e40  6f 6c 6f 75 72 61 63 74  69 6f 6e 73 00 00 00 00  |olouractions....|
00018e50  60 55 04 00 46 ff ff ff  c2 99 6b f5 b0 07 00 00  |`U..F.....k.....|
00018e60  13 00 00 00 00 00 00 00  53 75 62 73 74 69 74 75  |........Substitu|
00018e70  74 65 41 72 67 73 00 00  10 5d 04 00 46 ff ff ff  |teArgs...]..F...|
00018e80  0c ad 6b f5 28 01 00 00  13 00 00 00 00 00 00 00  |..k.(...........|
00018e90  55 6e 75 73 65 64 53 57  49 00 00 00 38 5e 04 00  |UnusedSWI...8^..|
00018ea0  46 ff ff ff 81 2b 6c f5  b3 00 00 00 13 00 00 00  |F....+l.........|
00018eb0  00 00 00 00 57 72 69 74  65 45 6e 76 00 00 00 00  |....WriteEnv....|
00018ec0  ec 5e 04 00 46 ff ff ff  bf c0 69 f5 8d 02 00 00  |.^..F.....i.....|
00018ed0  13 00 00 00 00 00 00 00  53 65 72 69 61 6c 4f 70  |........SerialOp|
00018ee0  00 00 00 00 7c 61 04 00  47 ff ff ff 37 6d 13 0a  |....|a..G...7m..|
00018ef0  1a 02 00 00 13 00 00 00  00 00 00 00 43 6c 61 69  |............Clai|
00018f00  6d 50 72 6f 63 65 73 73  6f 72 56 65 63 74 6f 72  |mProcessorVector|
00018f10  00 00 00 00 98 63 04 00  47 ff ff ff e9 01 15 0a  |.....c..G.......|
00018f20  94 00 00 00 13 00 00 00  00 00 00 00 52 65 73 65  |............Rese|
00018f30  74 00 00 00 2c 64 04 00  47 ff ff ff b3 18 15 0a  |t...,d..G.......|
00018f40  2d 01 00 00 13 00 00 00  00 00 00 00 53 63 72 65  |-...........Scre|
00018f50  65 6e 4d 6f 64 65 00 00  44 41 54 41 34 06 00 00  |enMode..DATA4...|
00018f60  4f 53 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |OS.#Parent !Root|
00018f70  0a 23 50 72 65 66 69 78  20 4f 53 5f 0a 23 21 54  |.#Prefix OS_.#!T|
00018f80  61 62 6c 65 20 32 36 20  32 30 0a 23 54 61 62 6c  |able 26 20.#Tabl|
00018f90  65 20 43 6f 6c 75 6d 6e  73 20 34 0a 3c 41 64 64  |e Columns 4.<Add|
00018fa0  43 61 6c 6c 42 61 63 6b  3e 0a 3c 41 64 64 54 6f  |CallBack>.<AddTo|
00018fb0  56 65 63 74 6f 72 3e 0a  3c 41 72 67 73 3e 0a 3c  |Vector>.<Args>.<|
00018fc0  42 47 65 74 3e 0a 3c 42  69 6e 61 72 79 54 6f 44  |BGet>.<BinaryToD|
00018fd0  65 63 69 6d 61 6c 3e 0a  3c 42 50 75 74 3e 0a 3c  |ecimal>.<BPut>.<|
00018fe0  42 72 65 61 6b 43 74 72  6c 3e 0a 3c 42 72 65 61  |BreakCtrl>.<Brea|
00018ff0  6b 50 74 3e 0a 3c 42 79  74 65 3e 0a 3c 43 61 6c  |kPt>.<Byte>.<Cal|
00019000  6c 41 66 74 65 72 3e 0a  3c 43 61 6c 6c 41 56 65  |lAfter>.<CallAVe|
00019010  63 74 6f 72 3e 0a 3c 43  61 6c 6c 42 61 63 6b 3e  |ctor>.<CallBack>|
00019020  0a 3c 43 61 6c 6c 45 76  65 72 79 3e 0a 3c 43 68  |.<CallEvery>.<Ch|
00019030  61 6e 67 65 64 42 6f 78  3e 0a 3c 43 68 61 6e 67  |angedBox>.<Chang|
00019040  65 44 79 6e 61 6d 69 63  41 72 65 61 3e 0a 3c 43  |eDynamicArea>.<C|
00019050  68 61 6e 67 65 45 6e 76  69 72 6f 6e 6d 65 6e 74  |hangeEnvironment|
00019060  3e 0a 3c 43 68 61 6e 67  65 52 65 64 69 72 65 63  |>.<ChangeRedirec|
00019070  74 69 6f 6e 3e 0a 3c 43  68 65 63 6b 4d 6f 64 65  |tion>.<CheckMode|
00019080  56 61 6c 69 64 3e 0a 3c  43 6c 61 69 6d 3e 0a 3c  |Valid>.<Claim>.<|
00019090  43 6c 61 69 6d 44 65 76  69 63 65 56 65 63 74 6f  |ClaimDeviceVecto|
000190a0  72 3e 0a 3c 43 6c 61 69  6d 50 72 6f 63 65 73 73  |r>.<ClaimProcess|
000190b0  6f 72 56 65 63 74 6f 72  3e 0a 3c 43 6c 61 69 6d  |orVector>.<Claim|
000190c0  53 63 72 65 65 6e 4d 65  6d 6f 72 79 3e 0a 3c 43  |ScreenMemory>.<C|
000190d0  4c 49 3e 0a 3c 43 6f 6e  66 69 72 6d 3e 0a 3c 43  |LI>.<Confirm>.<C|
000190e0  6f 6e 74 72 6f 6c 3e 0a  3c 43 6f 6e 76 65 72 74  |ontrol>.<Convert|
000190f0  3c 6e 61 6d 65 5c 3e 3c  6e 72 5c 3e 3d 3e 4f 53  |<name\><nr\>=>OS|
00019100  5f 43 6f 6e 76 65 72 74  3e 0a 3c 43 52 43 3e 0a  |_Convert>.<CRC>.|
00019110  3c 44 65 6c 69 6e 6b 41  70 70 6c 69 63 61 74 69  |<DelinkApplicati|
00019120  6f 6e 3e 0a 3c 44 79 6e  61 6d 69 63 41 72 65 61  |on>.<DynamicArea|
00019130  3e 0a 3c 45 6e 74 65 72  4f 53 3e 0a 3c 45 76 61  |>.<EnterOS>.<Eva|
00019140  6c 75 61 74 65 45 78 70  72 65 73 73 69 6f 6e 3e  |luateExpression>|
00019150  0a 3c 45 78 69 74 3e 0a  3c 45 78 69 74 41 6e 64  |.<Exit>.<ExitAnd|
00019160  44 69 65 3e 0a 3c 46 69  6c 65 3e 0a 3c 46 69 6e  |Die>.<File>.<Fin|
00019170  64 3e 0a 3c 46 69 6e 64  4d 65 6d 4d 61 70 45 6e  |d>.<FindMemMapEn|
00019180  74 72 69 65 73 3e 0a 3c  46 53 43 6f 6e 74 72 6f  |tries>.<FSContro|
00019190  6c 3e 0a 3c 47 42 50 42  3e 0a 3c 47 65 6e 65 72  |l>.<GBPB>.<Gener|
000191a0  61 74 65 45 72 72 6f 72  3e 0a 3c 47 65 6e 65 72  |ateError>.<Gener|
000191b0  61 74 65 45 76 65 6e 74  3e 0a 3c 47 65 74 45 6e  |ateEvent>.<GetEn|
000191c0  76 3e 0a 3c 47 53 49 6e  69 74 3e 0a 3c 47 53 52  |v>.<GSInit>.<GSR|
000191d0  65 61 64 3e 0a 3c 47 53  54 72 61 6e 73 3e 0a 3c  |ead>.<GSTrans>.<|
000191e0  48 65 61 70 3e 0a 3c 48  65 61 70 53 6f 72 74 3e  |Heap>.<HeapSort>|
000191f0  0a 3c 49 6e 73 74 61 6c  6c 4b 65 79 48 61 6e 64  |.<InstallKeyHand|
00019200  6c 65 72 3e 0a 3c 49 6e  74 4f 66 66 3e 0a 3c 49  |ler>.<IntOff>.<I|
00019210  6e 74 4f 6e 3e 0a 3c 4d  6f 64 75 6c 65 3e 0a 3c  |ntOn>.<Module>.<|
00019220  4d 6f 75 73 65 3e 0a 3c  4e 65 77 4c 69 6e 65 3e  |Mouse>.<NewLine>|
00019230  0a 3c 50 6c 6f 74 3e 0a  3c 50 72 65 74 74 79 50  |.<Plot>.<PrettyP|
00019240  72 69 6e 74 3e 0a 3c 50  72 69 6e 74 43 68 61 72  |rint>.<PrintChar|
00019250  3e 0a 3c 52 65 61 64 41  72 67 73 3e 0a 3c 52 65  |>.<ReadArgs>.<Re|
00019260  61 64 43 3e 0a 3c 52 65  61 64 44 65 66 61 75 6c  |adC>.<ReadDefaul|
00019270  74 48 61 6e 64 6c 65 72  3e 0a 3c 52 65 61 64 44  |tHandler>.<ReadD|
00019280  79 6e 61 6d 69 63 41 72  65 61 3e 0a 3c 52 65 61  |ynamicArea>.<Rea|
00019290  64 45 73 63 61 70 65 53  74 61 74 65 3e 0a 3c 52  |dEscapeState>.<R|
000192a0  65 61 64 4c 69 6e 65 3e  0a 3c 52 65 61 64 4d 65  |eadLine>.<ReadMe|
000192b0  6d 4d 61 70 45 6e 74 72  69 65 73 3e 0a 3c 52 65  |mMapEntries>.<Re|
000192c0  61 64 4d 65 6d 4d 61 70  49 6e 66 6f 3e 0a 3c 52  |adMemMapInfo>.<R|
000192d0  65 61 64 4d 6f 64 65 56  61 72 69 61 62 6c 65 3e  |eadModeVariable>|
000192e0  0a 3c 52 65 61 64 4d 6f  6e 6f 74 6f 6e 69 63 54  |.<ReadMonotonicT|
000192f0  69 6d 65 3e 0a 3c 52 65  61 64 50 61 6c 65 74 74  |ime>.<ReadPalett|
00019300  65 3e 0a 3c 52 65 61 64  50 6f 69 6e 74 3e 0a 3c  |e>.<ReadPoint>.<|
00019310  52 65 61 64 52 41 4d 46  73 4c 69 6d 69 74 73 3e  |ReadRAMFsLimits>|
00019320  0a 3c 52 65 61 64 53 79  73 49 6e 66 6f 3e 0a 3c  |.<ReadSysInfo>.<|
00019330  52 65 61 64 55 6e 73 69  67 6e 65 64 3e 0a 3c 52  |ReadUnsigned>.<R|
00019340  65 61 64 56 61 72 56 61  6c 3e 0a 3c 52 65 61 64  |eadVarVal>.<Read|
00019350  56 64 75 56 61 72 69 61  62 6c 65 73 3e 0a 3c 52  |VduVariables>.<R|
00019360  65 6c 65 61 73 65 3e 0a  3c 52 65 6c 65 61 73 65  |elease>.<Release|
00019370  44 65 76 69 63 65 56 65  63 74 6f 72 3e 0a 3c 52  |DeviceVector>.<R|
00019380  65 6c 69 6e 6b 41 70 70  6c 69 63 61 74 69 6f 6e  |elinkApplication|
00019390  3e 0a 3c 52 65 6d 6f 76  65 43 61 6c 6c 42 61 63  |>.<RemoveCallBac|
000193a0  6b 3e 0a 3c 52 65 6d 6f  76 65 43 75 72 73 6f 72  |k>.<RemoveCursor|
000193b0  73 3e 0a 3c 52 65 6d 6f  76 65 54 69 63 6b 65 72  |s>.<RemoveTicker|
000193c0  45 76 65 6e 74 3e 0a 3c  52 65 73 65 74 3e 0a 3c  |Event>.<Reset>.<|
000193d0  52 65 73 74 6f 72 65 43  75 72 73 6f 72 73 3e 0a  |RestoreCursors>.|
000193e0  3c 53 63 72 65 65 6e 4d  6f 64 65 3e 0a 3c 53 65  |<ScreenMode>.<Se|
000193f0  72 69 61 6c 4f 70 3e 0a  53 65 72 76 69 63 65 43  |rialOp>.ServiceC|
00019400  61 6c 6c 0a 3c 53 65 74  43 61 6c 6c 42 61 63 6b  |all.<SetCallBack|
00019410  3e 0a 3c 53 65 74 45 43  46 4f 72 69 67 69 6e 3e  |>.<SetECFOrigin>|
00019420  0a 3c 53 65 74 45 6e 76  3e 0a 3c 53 65 74 4d 65  |.<SetEnv>.<SetMe|
00019430  6d 4d 61 70 45 6e 74 72  69 65 73 3e 0a 3c 53 65  |mMapEntries>.<Se|
00019440  74 43 6f 6c 6f 75 72 3e  0a 3c 53 65 74 56 61 72  |tColour>.<SetVar|
00019450  56 61 6c 3e 0a 3c 53 70  72 69 74 65 4f 70 3e 0a  |Val>.<SpriteOp>.|
00019460  3c 53 75 62 73 74 69 74  75 74 65 41 72 67 73 3e  |<SubstituteArgs>|
00019470  0a 3c 53 57 49 4e 75 6d  62 65 72 46 72 6f 6d 53  |.<SWINumberFromS|
00019480  74 72 69 6e 67 3e 0a 3c  53 57 49 4e 75 6d 62 65  |tring>.<SWINumbe|
00019490  72 54 6f 53 74 72 69 6e  67 3e 0a 3c 55 6e 75 73  |rToString>.<Unus|
000194a0  65 64 53 57 49 3e 0a 3c  55 70 43 61 6c 6c 3e 0a  |edSWI>.<UpCall>.|
000194b0  3c 55 70 64 61 74 65 4d  45 4d 43 3e 0a 3c 56 61  |<UpdateMEMC>.<Va|
000194c0  6c 69 64 61 74 65 41 64  64 72 65 73 73 3e 0a 3c  |lidateAddress>.<|
000194d0  57 6f 72 64 3e 0a 3c 57  72 69 74 65 30 3e 0a 3c  |Word>.<Write0>.<|
000194e0  57 72 69 74 65 43 3e 0a  3c 57 72 69 74 65 45 6e  |WriteC>.<WriteEn|
000194f0  76 3e 0a 3c 57 72 69 74  65 49 3e 0a 3c 57 72 69  |v>.<WriteI>.<Wri|
00019500  74 65 4e 3e 0a 3c 57 72  69 74 65 53 3e 0a 23 45  |teN>.<WriteS>.#E|
00019510  6e 64 54 61 62 6c 65 0a  0a 23 49 6e 64 65 6e 74  |ndTable..#Indent|
00019520  20 32 0a 3c 4f 53 5f 42  79 74 65 20 76 61 6c 75  | 2.<OS_Byte valu|
00019530  65 73 3d 3e 4f 53 5f 42  79 74 65 49 6e 64 65 78  |es=>OS_ByteIndex|
00019540  3e 09 3c 43 4d 4f 53 20  52 41 4d 20 62 79 74 65  |>.<CMOS RAM byte|
00019550  73 3d 3e 4f 53 5f 42 79  74 65 43 4d 4f 53 3e 09  |s=>OS_ByteCMOS>.|
00019560  3c 53 65 72 76 69 63 65  20 43 61 6c 6c 73 3d 3e  |<Service Calls=>|
00019570  4f 53 5f 4d 6f 64 75 6c  65 5f 53 65 72 76 69 63  |OS_Module_Servic|
00019580  65 3e 20 3c 56 65 63 74  6f 72 73 3e 44 41 54 41  |e> <Vectors>DATA|
00019590  91 03 00 00 4f 53 5f 41  64 64 43 61 6c 6c 42 61  |....OS_AddCallBa|
000195a0  63 6b 20 20 28 26 35 34  29 0a 23 50 61 72 65 6e  |ck  (&54).#Paren|
000195b0  74 20 4f 53 5f 0a 3d 3e  09 52 30 20 3d 20 61 64  |t OS_.=>.R0 = ad|
000195c0  64 72 65 73 73 20 74 6f  20 63 61 6c 6c 0a 09 52  |dress to call..R|
000195d0  31 20 3d 20 76 61 6c 75  65 20 6f 66 20 52 31 32  |1 = value of R12|
000195e0  20 74 6f 20 62 65 20 63  61 6c 6c 65 64 20 77 69  | to be called wi|
000195f0  74 68 0a 0a 5c 3c 3d 09  52 30 20 3d 20 70 72 65  |th..\<=.R0 = pre|
00019600  73 65 72 76 65 64 0a 09  52 31 20 3d 20 70 72 65  |served..R1 = pre|
00019610  73 65 72 76 65 64 0a 20  20 20 20 20 20 20 20 20  |served.         |
00019620  20 20 20 20 20 20 20 20  0a 41 20 74 72 61 6e 73  |        .A trans|
00019630  69 65 6e 74 20 63 61 6c  6c 62 61 63 6b 20 69 73  |ient callback is|
00019640  20 70 6c 61 63 65 64 20  6f 6e 20 61 20 6c 69 73  | placed on a lis|
00019650  74 20 6f 66 20 74 61 73  6b 73 20 77 68 6f 20 77  |t of tasks who w|
00019660  61 6e 74 20 74 6f 20 62  65 20 63 61 6c 6c 65 64  |ant to be called|
00019670  20 61 73 20 73 6f 6f 6e  20 61 73 20 52 49 53 43  | as soon as RISC|
00019680  20 4f 53 20 69 73 20 6e  6f 74 20 62 75 73 79 2e  | OS is not busy.|
00019690  20 41 6e 64 20 74 68 69  73 20 53 57 49 20 77 69  | And this SWI wi|
000196a0  6c 6c 20 70 6c 61 63 65  20 61 20 74 72 61 6e 73  |ll place a trans|
000196b0  69 65 6e 74 20 72 6f 75  74 69 6e 65 20 6f 6e 20  |ient routine on |
000196c0  74 68 61 74 20 6c 69 73  74 2e 20 49 74 20 69 73  |that list. It is|
000196d0  20 75 73 75 61 6c 6c 79  20 75 73 65 64 20 62 79  | usually used by|
000196e0  20 61 6e 20 69 6e 74 65  72 72 75 70 74 20 72 6f  | an interrupt ro|
000196f0  75 74 69 6e 65 20 74 68  61 74 20 6e 65 65 64 73  |utine that needs|
00019700  20 74 6f 20 64 6f 20 63  6f 6d 70 6c 65 78 20 70  | to do complex p|
00019710  72 6f 63 65 73 73 69 6e  67 20 74 68 61 74 20 77  |rocessing that w|
00019720  6f 75 6c 64 20 74 61 6b  65 20 74 6f 6f 20 6c 6f  |ould take too lo|
00019730  6e 67 20 69 6e 20 61 6e  20 69 6e 74 65 72 72 75  |ng in an interru|
00019740  70 74 2c 20 6f 72 20 74  68 61 74 20 6e 65 65 64  |pt, or that need|
00019750  73 20 74 6f 20 63 61 6c  6c 20 61 20 6e 6f 6e 2d  |s to call a non-|
00019760  72 65 2d 65 6e 74 72 61  6e 74 20 53 57 49 2e 20  |re-entrant SWI. |
00019770  4f 53 5f 41 64 64 43 61  6c 6c 42 61 63 6b 20 74  |OS_AddCallBack t|
00019780  65 6c 6c 73 20 52 49 53  43 20 4f 53 20 74 68 61  |ells RISC OS tha|
00019790  74 20 74 68 65 20 69 6e  74 65 72 72 75 70 74 20  |t the interrupt |
000197a0  72 6f 75 74 69 6e 65 20  77 69 73 68 65 73 20 74  |routine wishes t|
000197b0  6f 20 62 65 20 27 63 61  6c 6c 65 64 20 62 61 63  |o be 'called bac|
000197c0  6b 27 2e 20 54 68 69 73  20 63 61 6e 20 68 61 70  |k'. This can hap|
000197d0  70 65 6e 20 77 68 65 6e  20 52 49 53 43 20 4f 53  |pen when RISC OS|
000197e0  20 69 73 20 62 65 69 6e  67 20 74 68 72 65 61 64  | is being thread|
000197f0  65 64 20 6f 75 74 20 6f  66 20 2d 20 74 68 61 74  |ed out of - that|
00019800  20 69 73 2c 20 77 68 65  6e 20 69 74 20 65 6e 74  | is, when it ent|
00019810  65 72 73 20 55 73 65 72  20 6d 6f 64 65 20 77 69  |ers User mode wi|
00019820  74 68 20 69 6e 74 65 72  72 75 70 74 73 20 65 6e  |th interrupts en|
00019830  61 62 6c 65 64 2e 20 49  74 20 63 61 6e 20 61 6c  |abled. It can al|
00019840  73 6f 20 68 61 70 70 65  6e 20 77 68 65 6e 20 52  |so happen when R|
00019850  4f 20 69 73 20 69 64 6c  69 6e 67 2c 20 66 6f 72  |O is idling, for|
00019860  20 65 78 61 6d 70 6c 65  2c 20 77 68 69 6c 65 20  | example, while |
00019870  69 74 20 69 73 20 77 61  69 74 69 6e 67 20 69 6e  |it is waiting in|
00019880  20 4f 53 5f 52 65 61 64  43 2e 0a 0a 54 72 61 6e  | OS_ReadC...Tran|
00019890  73 69 65 6e 74 20 43 61  6c 6c 42 61 63 6b 73 20  |sient CallBacks |
000198a0  63 61 6e 20 73 61 66 65  6c 79 20 62 65 20 75 73  |can safely be us|
000198b0  65 64 20 62 79 20 6d 61  6e 79 20 63 6c 69 65 6e  |ed by many clien|
000198c0  74 73 2e 0a 0a 41 20 72  6f 75 74 69 6e 65 20 63  |ts...A routine c|
000198d0  61 6c 6c 65 64 20 62 79  20 74 68 69 73 20 6d 65  |alled by this me|
000198e0  63 68 61 6e 69 73 6d 20  6d 75 73 74 20 70 72 65  |chanism must pre|
000198f0  73 65 72 76 65 20 41 4c  4c 20 72 65 67 69 73 74  |serve ALL regist|
00019900  65 72 73 20 61 6e 64 20  72 65 74 75 72 6e 20 62  |ers and return b|
00019910  79 20 4d 4f 56 20 50 43  2c 52 31 34 2e 00 00 00  |y MOV PC,R14....|
00019920  44 41 54 41 dd 00 00 00  44 79 6e 61 6d 69 63 20  |DATA....Dynamic |
00019930  61 72 65 61 73 0a 41 72  65 61 09 43 6f 6e 74 65  |areas.Area.Conte|
00019940  6e 74 73 0a 23 4c 69 6e  65 0a 30 09 53 79 73 74  |nts.#Line.0.Syst|
00019950  65 6d 20 48 65 61 70 0a  31 09 52 4d 41 0a 32 09  |em Heap.1.RMA.2.|
00019960  53 63 72 65 65 6e 20 41  72 65 61 0a 33 09 53 70  |Screen Area.3.Sp|
00019970  72 69 74 65 20 41 72 65  61 0a 34 09 46 6f 6e 74  |rite Area.4.Font|
00019980  20 43 61 63 68 65 0a 35  09 52 41 4d 20 46 69 6c  | Cache.5.RAM Fil|
00019990  69 6e 67 20 53 79 73 74  65 6d 0a 36 09 46 72 65  |ing System.6.Fre|
000199a0  65 20 70 6f 6f 6c 20 28  52 49 53 43 20 4f 53 20  |e pool (RISC OS |
000199b0  33 2e 36 29 0a 0a 32 35  36 2b 09 55 73 65 72 20  |3.6)..256+.User |
000199c0  64 79 6e 61 6d 69 63 20  61 72 65 61 0a 0a 53 65  |dynamic area..Se|
000199d0  65 20 3c 6d 65 6d 6f 72  79 20 6d 61 70 3d 3e 4d  |e <memory map=>M|
000199e0  61 63 68 69 6e 65 3a 4c  6f 67 69 63 61 6c 3e 20  |achine:Logical> |
000199f0  66 6f 72 20 6c 6f 63 61  74 69 6f 6e 2e 00 00 00  |for location....|
00019a00  44 41 54 41 9d 00 00 00  4f 53 5f 42 47 65 74 20  |DATA....OS_BGet |
00019a10  20 28 26 30 41 29 0a 23  50 61 72 65 6e 74 20 4f  | (&0A).#Parent O|
00019a20  53 5f 0a 3d 3e 09 52 31  20 3d 20 66 69 6c 65 20  |S_.=>.R1 = file |
00019a30  68 61 6e 64 6c 65 0a 0a  5c 3c 3d 09 52 30 20 3d  |handle..\<=.R0 =|
00019a40  20 62 79 74 65 0a 09 43  20 63 6c 65 61 72 20 69  | byte..C clear i|
00019a50  66 20 62 79 74 65 20 72  65 61 64 2e 0a 0a 54 68  |f byte read...Th|
00019a60  69 73 20 53 57 49 20 72  65 61 64 73 20 61 20 62  |is SWI reads a b|
00019a70  79 74 65 20 66 72 6f 6d  20 74 68 65 20 63 75 72  |yte from the cur|
00019a80  72 65 6e 74 20 73 65 71  75 65 6e 74 69 61 6c 20  |rent sequential |
00019a90  66 69 6c 65 20 70 6f 69  6e 74 65 72 2e 00 00 00  |file pointer....|
00019aa0  44 41 54 41 03 01 00 00  4f 53 5f 42 69 6e 61 72  |DATA....OS_Binar|
00019ab0  79 54 6f 44 65 63 69 6d  61 6c 20 20 28 26 32 38  |yToDecimal  (&28|
00019ac0  29 0a 3d 3e 09 52 30 20  3d 20 69 6e 74 65 67 65  |).=>.R0 = intege|
00019ad0  72 0a 09 52 31 20 3d 20  62 75 66 66 65 72 0a 09  |r..R1 = buffer..|
00019ae0  52 32 20 3d 20 73 69 7a  65 20 6f 66 20 62 75 66  |R2 = size of buf|
00019af0  66 65 72 0a 5c 3c 3d 09  52 32 20 3d 20 6c 65 6e  |fer.\<=.R2 = len|
00019b00  67 74 68 20 6f 66 20 73  74 72 69 6e 67 0a 0a 54  |gth of string..T|
00019b10  68 69 73 20 53 57 49 20  63 6f 6e 76 65 72 74 73  |his SWI converts|
00019b20  20 61 20 33 32 20 62 69  74 20 69 6e 74 65 67 65  | a 32 bit intege|
00019b30  72 20 74 6f 20 61 20 73  74 72 69 6e 67 2e 20 57  |r to a string. W|
00019b40  68 79 20 77 65 20 68 61  76 65 20 74 68 69 73 20  |hy we have this |
00019b50  63 61 6c 6c 2c 20 69 73  20 61 20 62 69 74 20 75  |call, is a bit u|
00019b60  6e 63 6c 65 61 72 2c 20  61 73 20 3c 4f 53 5f 43  |nclear, as <OS_C|
00019b70  6f 6e 76 65 72 74 49 6e  74 65 67 65 72 34 3d 3e  |onvertInteger4=>|
00019b80  4f 53 5f 43 6f 6e 76 65  72 74 3e 20 73 68 6f 75  |OS_Convert> shou|
00019b90  6c 64 20 64 6f 20 74 68  65 20 73 61 6d 65 2e 2e  |ld do the same..|
00019ba0  20 20 20 00 44 41 54 41  81 00 00 00 4f 53 5f 42  |   .DATA....OS_B|
00019bb0  50 75 74 20 20 28 26 30  42 29 0a 23 50 61 72 65  |Put  (&0B).#Pare|
00019bc0  6e 74 20 4f 53 5f 0a 3d  3e 09 52 30 20 3d 20 62  |nt OS_.=>.R0 = b|
00019bd0  79 74 65 0a 09 52 31 20  3d 20 66 69 6c 65 20 68  |yte..R1 = file h|
00019be0  61 6e 64 6c 65 0a 0a 54  68 69 73 20 53 57 49 20  |andle..This SWI |
00019bf0  77 72 69 74 65 73 20 61  20 62 79 74 65 20 74 6f  |writes a byte to|
00019c00  20 74 68 65 20 63 75 72  72 65 6e 74 20 73 65 71  | the current seq|
00019c10  75 65 6e 74 69 61 6c 20  66 69 6c 65 20 70 6f 69  |uential file poi|
00019c20  6e 74 65 72 2e 00 00 00  44 41 54 41 92 02 00 00  |nter....DATA....|
00019c30  4f 53 5f 43 68 61 6e 67  65 44 79 6e 61 6d 69 63  |OS_ChangeDynamic|
00019c40  41 72 65 61 20 20 28 26  32 41 29 0a 23 50 61 72  |Area  (&2A).#Par|
00019c50  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
00019c60  3c 41 72 65 61 3d 3e 4f  53 5f 41 72 65 61 73 3e  |<Area=>OS_Areas>|
00019c70  20 74 6f 20 61 6c 74 65  72 0a 09 52 31 20 3d 09  | to alter..R1 =.|
00019c80  41 6d 6f 75 6e 74 20 74  6f 20 6d 6f 76 65 20 69  |Amount to move i|
00019c90  6e 20 62 79 74 65 73 20  28 73 69 67 6e 65 64 20  |n bytes (signed |
00019ca0  69 6e 74 65 67 65 72 29  0a 0a 5c 3c 3d 09 52 30  |integer)..\<=.R0|
00019cb0  20 70 72 65 73 65 72 76  65 64 0a 09 52 31 20 3d  | preserved..R1 =|
00019cc0  09 61 6d 6f 75 6e 74 20  74 68 65 20 61 72 65 61  |.amount the area|
00019cd0  20 68 61 73 20 63 68 61  6e 67 65 64 20 62 79 20  | has changed by |
00019ce0  28 7b 2a 7d 75 6e 73 69  67 6e 65 64 7b 2a 7d 29  |({*}unsigned{*})|
00019cf0  0a 0a 4c 65 74 20 79 6f  75 20 65 6e 6c 61 72 67  |..Let you enlarg|
00019d00  65 20 28 72 31 20 70 6f  73 69 74 69 76 65 29 20  |e (r1 positive) |
00019d10  6f 72 20 73 68 72 69 6e  6b 20 28 72 31 20 6e 65  |or shrink (r1 ne|
00019d20  67 61 74 69 76 65 29 20  74 68 65 20 73 65 6c 65  |gative) the sele|
00019d30  63 74 65 64 20 61 72 65  61 2e 0a 0a 49 66 20 79  |cted area...If y|
00019d40  6f 75 20 6e 65 65 64 20  74 6f 20 72 65 6c 65 61  |ou need to relea|
00019d50  73 65 20 61 73 20 6d 75  63 68 20 73 70 61 63 65  |se as much space|
00019d60  20 61 73 20 70 6f 73 73  69 62 6c 65 20 66 72 6f  | as possible fro|
00019d70  6d 20 61 6e 20 61 72 65  61 2c 20 74 72 79 20 74  |m an area, try t|
00019d80  6f 20 72 65 64 75 63 65  20 69 74 73 20 73 69 7a  |o reduce its siz|
00019d90  65 20 62 79 20 31 36 20  4d 42 79 74 65 73 2e 0a  |e by 16 MBytes..|
00019da0  0a 4e 6f 74 65 2c 20 74  68 61 74 20 6e 6f 72 6d  |.Note, that norm|
00019db0  61 6c 6c 79 20 74 68 69  73 20 63 61 6e 6e 6f 74  |ally this cannot|
00019dc0  20 62 65 20 75 73 65 64  20 77 68 69 6c 65 20 74  | be used while t|
00019dd0  68 65 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 77  |he application w|
00019de0  6f 72 6b 20 61 72 65 61  20 69 73 20 62 65 69 6e  |ork area is bein|
00019df0  67 20 75 73 65 64 3b 20  6d 61 69 6e 20 70 75 72  |g used; main pur|
00019e00  70 6f 73 65 20 69 73 20  66 6f 72 20 74 68 65 20  |pose is for the |
00019e10  2a 4f 53 2c 20 6d 6f 64  75 6c 65 73 20 61 6e 64  |*OS, modules and|
00019e20  20 75 74 69 6c 69 74 69  65 73 2e 20 54 68 69 73  | utilities. This|
00019e30  20 53 57 49 20 64 6f 65  73 20 61 6e 20 75 70 63  | SWI does an upc|
00019e40  61 6c 6c 2c 20 69 66 20  74 68 65 20 75 70 63 61  |all, if the upca|
00019e50  6c 6c 20 69 73 20 63 6c  61 69 6d 65 64 20 77 68  |ll is claimed wh|
00019e60  65 6e 20 61 6e 20 61 70  70 6c 69 63 61 74 69 6f  |en an applicatio|
00019e70  6e 20 69 73 20 72 75 6e  6e 69 6e 67 20 69 6e 20  |n is running in |
00019e80  74 68 65 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |the application |
00019e90  77 6f 72 6b 73 70 61 63  65 2c 20 74 68 65 20 6d  |workspace, the m|
00019ea0  65 6d 6f 72 79 20 6d 6f  76 65 6d 65 6e 74 20 69  |emory movement i|
00019eb0  73 20 61 6c 6c 6f 77 65  64 2e 00 00 44 41 54 41  |s allowed...DATA|
00019ec0  1d 03 00 00 4f 53 5f 43  6c 61 69 6d 20 20 28 26  |....OS_Claim  (&|
00019ed0  31 46 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |1F).#Parent OS_.|
00019ee0  3d 3e 09 52 30 20 3d 20  3c 76 65 63 74 6f 72 20  |=>.R0 = <vector |
00019ef0  6e 75 6d 62 65 72 3d 3e  6f 73 5f 76 65 63 74 6f  |number=>os_vecto|
00019f00  72 73 3e 0a 09 52 31 20  3d 20 61 64 64 72 65 73  |rs>..R1 = addres|
00019f10  73 20 6f 66 20 63 6c 61  69 6d 69 6e 67 20 72 6f  |s of claiming ro|
00019f20  75 74 69 6e 65 0a 09 52  32 20 3d 20 76 61 6c 75  |utine..R2 = valu|
00019f30  65 20 74 6f 20 62 65 20  70 61 73 73 65 64 20 69  |e to be passed i|
00019f40  6e 20 52 31 32 20 77 68  65 6e 20 74 68 65 20 72  |n R12 when the r|
00019f50  6f 75 74 69 6e 65 20 69  73 20 63 61 6c 6c 65 64  |outine is called|
00019f60  2e 0a 0a 5c 3c 3d 09 52  30 2d 52 32 20 70 72 65  |...\<=.R0-R2 pre|
00019f70  73 65 72 76 65 64 0a 20  20 20 20 20 20 20 20 20  |served.         |
00019f80  20 20 20 20 20 20 20 20  0a 54 68 69 73 20 63 61  |        .This ca|
00019f90  6c 6c 20 61 64 64 73 20  74 68 65 20 3c 72 6f 75  |ll adds the <rou|
00019fa0  74 69 6e 65 3d 3e 6f 73  5f 76 65 63 74 6f 72 72  |tine=>os_vectorr|
00019fb0  75 6c 65 73 3e 20 77 68  6f 73 65 20 61 64 64 72  |ules> whose addr|
00019fc0  65 73 73 20 69 73 20 67  69 76 65 6e 20 69 6e 20  |ess is given in |
00019fd0  52 31 20 74 6f 20 74 68  65 20 3c 6c 69 73 74 3d  |R1 to the <list=|
00019fe0  3e 6f 73 5f 76 65 63 74  6f 72 63 68 61 69 6e 3e  |>os_vectorchain>|
00019ff0  20 6f 66 20 72 6f 75 74  69 6e 65 73 20 63 6c 61  | of routines cla|
0001a000  69 6d 69 6e 67 20 74 68  65 20 76 65 63 74 6f 72  |iming the vector|
0001a010  2e 20 54 68 69 73 20 62  65 63 6f 6d 65 73 20 74  |. This becomes t|
0001a020  68 65 20 66 69 72 73 74  20 72 6f 75 74 69 6e 65  |he first routine|
0001a030  20 74 6f 20 62 65 20 75  73 65 64 20 77 68 65 6e  | to be used when|
0001a040  20 74 68 65 20 76 65 63  74 6f 72 20 69 73 20 63  | the vector is c|
0001a050  61 6c 6c 65 64 2e 0a 0a  41 6e 79 20 65 61 72 6c  |alled...Any earl|
0001a060  69 65 72 20 69 6e 73 74  61 6e 63 65 73 20 6f 66  |ier instances of|
0001a070  20 74 68 65 20 73 61 6d  65 20 72 6f 75 74 69 6e  | the same routin|
0001a080  65 20 61 72 65 20 72 65  6d 6f 76 65 64 2e 20 52  |e are removed. R|
0001a090  6f 75 74 69 6e 65 73 20  61 72 65 20 64 65 66 69  |outines are defi|
0001a0a0  6e 65 64 20 74 6f 20 62  65 20 74 68 65 20 73 61  |ned to be the sa|
0001a0b0  6d 65 20 69 66 20 74 68  65 20 76 61 6c 75 65 73  |me if the values|
0001a0c0  20 70 61 73 73 65 64 20  69 6e 20 52 30 2c 20 52  | passed in R0, R|
0001a0d0  31 20 61 6e 64 20 52 32  20 61 72 65 20 69 64 65  |1 and R2 are ide|
0001a0e0  6e 74 69 63 61 6c 2e 0a  0a 54 68 65 20 52 32 20  |ntical...The R2 |
0001a0f0  76 61 6c 75 65 20 65 6e  61 62 6c 65 73 20 74 68  |value enables th|
0001a100  65 20 72 6f 75 74 69 6e  65 20 74 6f 20 68 61 76  |e routine to hav|
0001a110  65 20 61 20 77 6f 72 6b  73 70 61 63 65 20 70 6f  |e a workspace po|
0001a120  69 6e 74 65 72 20 73 65  74 20 75 70 20 69 6e 20  |inter set up in |
0001a130  52 31 32 20 77 68 65 6e  20 69 74 20 69 73 20 63  |R12 when it is c|
0001a140  61 6c 6c 65 64 2e 20 49  66 20 74 68 65 20 72 6f  |alled. If the ro|
0001a150  75 74 69 6e 65 20 75 73  69 6e 67 20 74 68 65 20  |utine using the |
0001a160  76 65 63 74 6f 72 20 69  73 20 69 6e 20 61 20 6d  |vector is in a m|
0001a170  6f 64 75 6c 65 20 28 61  73 20 77 69 6c 6c 20 6f  |odule (as will o|
0001a180  66 74 65 6e 20 62 65 20  74 68 65 20 63 61 73 65  |ften be the case|
0001a190  29 2c 20 74 68 69 73 20  70 6f 69 6e 74 65 72 20  |), this pointer |
0001a1a0  77 69 6c 6c 20 75 73 75  61 6c 6c 79 20 62 65 20  |will usually be |
0001a1b0  74 68 65 20 73 61 6d 65  20 61 73 20 69 74 73 20  |the same as its |
0001a1c0  6d 6f 64 75 6c 65 20 77  6f 72 6b 73 70 61 63 65  |module workspace|
0001a1d0  20 70 6f 69 6e 74 65 72  2e 00 00 00 44 41 54 41  | pointer....DATA|
0001a1e0  69 01 00 00 4f 53 5f 43  6c 61 69 6d 53 63 72 65  |i...OS_ClaimScre|
0001a1f0  65 6e 4d 65 6d 6f 72 79  20 20 28 26 34 31 29 0a  |enMemory  (&41).|
0001a200  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0001a210  30 20 3d 20 31 20 66 6f  72 20 63 6c 61 69 6d 2c  |0 = 1 for claim,|
0001a220  20 30 20 66 6f 72 20 72  65 6c 65 61 73 65 0a 09  | 0 for release..|
0001a230  52 31 20 3d 20 62 79 74  65 73 20 72 65 71 75 69  |R1 = bytes requi|
0001a240  72 65 64 0a 0a 5c 3c 3d  09 43 20 73 65 74 20 3a  |red..\<=.C set :|
0001a250  20 6d 65 6d 6f 72 79 20  6e 6f 74 20 63 6c 61 69  | memory not clai|
0001a260  6d 65 64 0a 09 52 31 20  3d 20 62 79 74 65 73 20  |med..R1 = bytes |
0001a270  61 76 61 69 6c 61 62 6c  65 0a 09 43 20 63 6c 65  |available..C cle|
0001a280  61 72 20 3a 20 6d 65 6d  6f 72 79 20 63 6c 61 69  |ar : memory clai|
0001a290  6d 65 64 0a 09 52 31 20  3d 20 62 79 74 65 73 20  |med..R1 = bytes |
0001a2a0  61 76 61 69 6c 61 62 6c  65 0a 09 52 32 20 3d 20  |available..R2 = |
0001a2b0  73 74 61 72 74 20 61 64  64 72 65 73 73 0a 0a 43  |start address..C|
0001a2c0  61 6e 20 6f 6e 6c 79 20  62 65 20 63 6c 61 69 6d  |an only be claim|
0001a2d0  65 64 20 69 66 20 6e 6f  20 6f 74 68 65 72 20 62  |ed if no other b|
0001a2e0  61 6e 6b 20 74 68 61 6e  20 31 20 68 61 73 20 62  |ank than 1 has b|
0001a2f0  65 65 6e 20 75 73 65 64  2e 20 57 68 69 6c 65 20  |een used. While |
0001a300  63 6c 61 69 6d 65 64 20  79 6f 75 20 6d 75 73 74  |claimed you must|
0001a310  20 6e 6f 74 20 63 61 75  73 65 20 73 63 72 65 65  | not cause scree|
0001a320  6e 20 74 6f 20 73 63 72  6f 6c 6c 2e 0a 0a 4e 6f  |n to scroll...No|
0001a330  74 20 76 65 72 79 20 75  73 65 66 75 6c 2c 20 69  |t very useful, i|
0001a340  73 20 69 74 3f 00 00 00  44 41 54 41 70 01 00 00  |s it?...DATAp...|
0001a350  4f 53 5f 43 52 43 20 20  28 26 35 42 29 0a 23 50  |OS_CRC  (&5B).#P|
0001a360  61 72 65 6e 74 20 4f 53  5f 0a 3d 3e 09 52 30 20  |arent OS_.=>.R0 |
0001a370  3d 20 43 52 43 20 63 6f  6e 74 69 6e 75 61 74 69  |= CRC continuati|
0001a380  6f 6e 20 76 61 6c 75 65  2c 20 6f 72 20 30 0a 09  |on value, or 0..|
0001a390  52 31 20 3d 20 53 74 61  72 74 20 6f 66 20 62 6c  |R1 = Start of bl|
0001a3a0  6f 63 6b 0a 09 52 32 20  3d 20 45 6e 64 20 6f 66  |ock..R2 = End of|
0001a3b0  20 62 6c 6f 63 6b 0a 09  52 33 20 3d 20 49 6e 63  | block..R3 = Inc|
0001a3c0  72 65 6d 65 6e 74 0a 0a  5c 3c 3d 09 52 30 20 3d  |rement..\<=.R0 =|
0001a3d0  20 43 52 43 20 76 61 6c  75 65 0a 0a 43 61 6c 63  | CRC value..Calc|
0001a3e0  75 6c 61 74 65 20 74 68  65 20 43 79 63 6c 69 63  |ulate the Cyclic|
0001a3f0  2d 52 65 64 75 6e 64 61  6e 63 79 20 43 68 65 63  |-Redundancy Chec|
0001a400  6b 20 66 6f 72 20 61 20  62 6c 6f 63 6b 20 6f 66  |k for a block of|
0001a410  20 64 61 74 61 2e 0a 0a  23 74 61 62 0a 4e 6f 74  | data...#tab.Not|
0001a420  65 3a 09 54 68 65 20 53  57 49 20 61 64 64 73 20  |e:.The SWI adds |
0001a430  52 33 20 74 6f 20 52 31  20 75 6e 74 69 6c 20 69  |R3 to R1 until i|
0001a440  74 20 65 71 75 61 6c 73  20 52 32 2c 20 69 65 20  |t equals R2, ie |
0001a450  69 66 20 52 31 20 6e 65  76 65 72 20 65 71 75 61  |if R1 never equa|
0001a460  6c 73 20 52 32 20 79 6f  75 20 68 61 76 65 20 61  |ls R2 you have a|
0001a470  6e 20 69 6e 66 69 6e 69  74 65 20 6c 6f 6f 70 2e  |n infinite loop.|
0001a480  0a 4e 6f 74 65 32 3a 09  54 68 65 20 62 79 74 65  |.Note2:.The byte|
0001a490  20 61 74 20 52 32 20 69  73 20 6e 6f 74 20 69 6e  | at R2 is not in|
0001a4a0  63 6c 75 64 65 64 20 69  6e 20 74 68 65 20 43 52  |cluded in the CR|
0001a4b0  43 20 76 61 6c 75 65 2e  44 41 54 41 ef 01 00 00  |C value.DATA....|
0001a4c0  4f 53 5f 45 6e 74 65 72  4f 53 20 20 28 26 31 36  |OS_EnterOS  (&16|
0001a4d0  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 5c 3c  |).#Parent OS_.\<|
0001a4e0  3d 09 52 31 33 20 3d 20  53 56 43 20 52 31 33 0a  |=.R13 = SVC R13.|
0001a4f0  09 52 31 34 20 3d 20 53  56 43 20 52 31 34 0a 0a  |.R14 = SVC R14..|
0001a500  54 68 69 73 20 53 57 49  20 73 65 74 73 20 74 68  |This SWI sets th|
0001a510  65 20 70 72 6f 63 65 73  73 6f 72 20 74 6f 20 53  |e processor to S|
0001a520  75 70 65 72 76 69 73 6f  72 20 6d 6f 64 65 2e 20  |upervisor mode. |
0001a530  49 6e 74 65 72 72 75 70  74 20 61 6e 64 20 46 61  |Interrupt and Fa|
0001a540  73 74 20 49 6e 74 65 72  72 75 70 74 20 73 74 61  |st Interrupt sta|
0001a550  74 75 73 20 69 73 20 75  6e 61 6c 74 65 72 65 64  |tus is unaltered|
0001a560  2e 0a 0a 23 74 61 62 0a  54 6f 20 72 65 74 75 72  |...#tab.To retur|
0001a570  6e 20 74 6f 20 55 73 65  72 4d 6f 64 65 3a 0a 20  |n to UserMode:. |
0001a580  20 20 54 45 51 50 20 20  50 43 2c 23 30 09 09 3b  |  TEQP  PC,#0..;|
0001a590  09 53 65 74 20 55 73 65  72 6d 6f 64 65 2c 20 65  |.Set Usermode, e|
0001a5a0  6e 61 62 6c 65 20 69 6e  74 65 72 72 75 70 73 0a  |nable interrups.|
0001a5b0  20 20 20 4d 4f 56 20 20  20 52 30 2c 52 30 09 09  |   MOV   R0,R0..|
0001a5c0  3b 09 41 6e 79 74 68 69  6e 67 20 74 68 61 74 20  |;.Anything that |
0001a5d0  64 6f 65 73 6e 27 74 20  75 73 65 20 38 2d 31 34  |doesn't use 8-14|
0001a5e0  0a 6f 72 0a 20 20 20 42  49 43 20 20 20 52 31 34  |.or.   BIC   R14|
0001a5f0  2c 50 43 2c 23 25 31 31  09 3b 09 4f 6e 6c 79 20  |,PC,#%11.;.Only |
0001a600  73 65 74 73 20 75 73 65  72 6d 6f 64 65 2e 0a 20  |sets usermode.. |
0001a610  20 20 54 45 51 50 20 20  52 31 34 2c 23 30 09 09  |  TEQP  R14,#0..|
0001a620  3b 09 49 6e 74 65 72 72  75 70 74 73 20 26 20 66  |;.Interrupts & f|
0001a630  6c 61 67 73 0a 20 20 20  4d 4f 56 20 20 20 52 30  |lags.   MOV   R0|
0001a640  2c 52 30 09 09 3b 09 61  72 65 20 6e 6f 74 20 61  |,R0..;.are not a|
0001a650  66 66 65 63 74 65 64 2e  0a 0a 23 74 61 62 0a 4e  |ffected...#tab.N|
0001a660  6f 74 65 3a 09 53 57 49  20 63 61 6c 6c 73 20 77  |ote:.SWI calls w|
0001a670  68 69 6c 65 20 69 6e 20  53 56 43 2c 20 77 69 6c  |hile in SVC, wil|
0001a680  6c 20 61 6c 74 65 72 20  52 31 34 2c 20 61 6e 64  |l alter R14, and|
0001a690  20 77 69 6c 6c 20 75 73  65 20 52 31 33 20 61 73  | will use R13 as|
0001a6a0  20 73 74 61 63 6b 2e 00  44 41 54 41 71 01 00 00  | stack..DATAq...|
0001a6b0  4f 53 5f 45 76 61 6c 75  61 74 65 45 78 70 72 65  |OS_EvaluateExpre|
0001a6c0  73 73 69 6f 6e 20 20 28  26 32 44 29 0a 23 50 61  |ssion  (&2D).#Pa|
0001a6d0  72 65 6e 74 20 4f 53 5f  0a 3d 3e 09 52 30 20 3d  |rent OS_.=>.R0 =|
0001a6e0  20 73 74 72 69 6e 67 0a  09 52 31 20 3d 20 62 75  | string..R1 = bu|
0001a6f0  66 66 65 72 0a 09 52 32  20 3d 20 6c 65 6e 67 74  |ffer..R2 = lengt|
0001a700  68 20 6f 66 20 62 75 66  66 65 72 0a 0a 5c 3c 3d  |h of buffer..\<=|
0001a710  09 52 31 20 3d 20 30 20  69 66 20 69 6e 74 65 67  |.R1 = 0 if integ|
0001a720  65 72 20 72 65 74 75 72  6e 65 64 2c 20 65 6c 73  |er returned, els|
0001a730  65 20 70 72 65 73 65 72  76 65 64 0a 09 52 32 20  |e preserved..R2 |
0001a740  3d 20 69 6e 74 65 67 65  72 20 69 66 20 52 31 3d  |= integer if R1=|
0001a750  30 2c 20 65 6c 73 65 20  6c 65 6e 67 74 68 20 6f  |0, else length o|
0001a760  66 20 73 74 72 69 6e 67  0a 0a 54 68 69 73 20 53  |f string..This S|
0001a770  57 49 20 74 61 6b 65 73  20 61 20 73 74 72 69 6e  |WI takes a strin|
0001a780  67 2c 20 65 76 61 6c 75  61 74 65 73 20 69 74 2c  |g, evaluates it,|
0001a790  20 61 6e 64 20 70 6c 61  63 65 73 20 72 65 73 75  | and places resu|
0001a7a0  6c 74 20 69 6e 20 67 69  76 65 6e 20 62 75 66 66  |lt in given buff|
0001a7b0  65 72 2e 20 54 79 70 65  20 6f 66 20 74 68 65 20  |er. Type of the |
0001a7c0  72 65 73 75 6c 74 20 69  73 20 67 69 76 65 6e 20  |result is given |
0001a7d0  69 6e 20 52 31 20 3a 0a  0a 09 30 09 49 6e 74 65  |in R1 :...0.Inte|
0001a7e0  67 65 72 20 72 65 74 75  72 6e 65 64 20 69 6e 20  |ger returned in |
0001a7f0  52 32 0a 09 4e 6f 74 20  30 09 50 6f 69 6e 74 65  |R2..Not 0.Pointe|
0001a800  72 20 74 6f 20 73 74 72  69 6e 67 2c 20 6c 65 6e  |r to string, len|
0001a810  67 74 68 20 69 6e 20 52  32 00 00 00 44 41 54 41  |gth in R2...DATA|
0001a820  3b 01 00 00 4f 53 5f 45  78 69 74 20 20 28 26 31  |;...OS_Exit  (&1|
0001a830  31 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 3d  |1).#Parent OS_.=|
0001a840  3e 09 52 30 20 3d 20 50  6f 69 6e 74 65 72 20 74  |>.R0 = Pointer t|
0001a850  6f 20 65 72 72 6f 72 20  62 6c 6f 63 6b 0a 09 52  |o error block..R|
0001a860  31 20 3d 20 22 41 42 45  58 22 20 28 26 35 38 34  |1 = "ABEX" (&584|
0001a870  35 34 32 34 31 29 20 49  66 20 52 65 74 75 72 6e  |54241) If Return|
0001a880  20 63 6f 64 65 0a 09 52  32 20 3d 20 52 65 74 75  | code..R2 = Retu|
0001a890  72 6e 20 63 6f 64 65 0a  20 20 20 0a 5c 3c 3d 09  |rn code.   .\<=.|
0001a8a0  4e 65 76 65 72 20 72 65  74 75 72 6e 73 0a 0a 54  |Never returns..T|
0001a8b0  68 69 73 20 53 57 49 20  70 61 73 73 65 73 20 63  |his SWI passes c|
0001a8c0  6f 6e 74 72 6f 6c 20 6f  76 65 72 20 74 6f 20 74  |ontrol over to t|
0001a8d0  68 65 20 6d 6f 73 74 20  72 65 63 65 6e 74 20 65  |he most recent e|
0001a8e0  78 69 74 20 68 61 6e 64  6c 65 72 2e 0a 0a 49 66  |xit handler...If|
0001a8f0  20 52 31 20 3d 20 22 41  42 45 58 22 2c 20 61 6e  | R1 = "ABEX", an|
0001a900  64 20 30 20 5c 3c 3d 20  52 32 20 5c 3c 3d 20 53  |d 0 \<= R2 \<= S|
0001a910  79 73 24 52 43 4c 69 6d  69 74 2c 20 74 68 65 6e  |ys$RCLimit, then|
0001a920  20 53 79 73 24 52 65 74  75 72 6e 43 6f 64 65 20  | Sys$ReturnCode |
0001a930  69 73 20 73 65 74 20 74  6f 20 52 32 2e 0a 0a 53  |is set to R2...S|
0001a940  65 65 20 61 6c 73 6f 20  3c 4f 53 5f 45 78 69 74  |ee also <OS_Exit|
0001a950  41 6e 64 44 69 65 3e 00  44 41 54 41 08 01 00 00  |AndDie>.DATA....|
0001a960  4f 53 5f 45 78 69 74 41  6e 64 44 69 65 20 20 28  |OS_ExitAndDie  (|
0001a970  26 35 30 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&50).#Parent OS_|
0001a980  0a 3d 3e 09 52 30 20 3d  20 50 6f 69 6e 74 65 72  |.=>.R0 = Pointer|
0001a990  20 74 6f 20 65 72 72 6f  72 20 62 6c 6f 63 6b 0a  | to error block.|
0001a9a0  09 52 31 20 3d 20 22 41  42 45 58 22 20 28 26 35  |.R1 = "ABEX" (&5|
0001a9b0  38 34 35 34 32 34 31 29  20 49 66 20 52 65 74 75  |8454241) If Retu|
0001a9c0  72 6e 20 63 6f 64 65 0a  09 52 32 20 3d 20 52 65  |rn code..R2 = Re|
0001a9d0  74 75 72 6e 20 63 6f 64  65 0a 09 52 33 20 3d 20  |turn code..R3 = |
0001a9e0  50 6f 69 6e 74 65 72 20  74 6f 20 6d 6f 64 75 6c  |Pointer to modul|
0001a9f0  65 20 6e 61 6d 65 0a 0a  5c 3c 3d 09 4e 65 76 65  |e name..\<=.Neve|
0001aa00  72 20 72 65 74 75 72 6e  73 0a 0a 54 68 69 73 20  |r returns..This |
0001aa10  53 57 49 20 64 6f 65 73  20 65 78 61 63 74 6c 79  |SWI does exactly|
0001aa20  20 77 68 61 74 20 3c 4f  53 5f 45 78 69 74 3e 20  | what <OS_Exit> |
0001aa30  64 6f 65 73 2c 20 62 75  74 20 69 6e 20 61 64 64  |does, but in add|
0001aa40  69 74 69 6f 6e 20 69 74  20 6b 69 6c 6c 73 20 74  |ition it kills t|
0001aa50  68 65 20 6d 6f 64 75 6c  65 20 69 6e 20 52 33 2e  |he module in R3.|
0001aa60  44 41 54 41 31 02 00 00  4f 53 5f 46 69 6e 64 20  |DATA1...OS_Find |
0001aa70  20 28 26 30 44 29 0a 23  50 61 72 65 6e 74 20 4f  | (&0D).#Parent O|
0001aa80  53 5f 0a 3d 3e 09 52 30  20 3d 20 72 65 61 73 6f  |S_.=>.R0 = reaso|
0001aa90  6e 20 63 6f 64 65 0a 09  28 52 31 20 3d 20 66 69  |n code..(R1 = fi|
0001aaa0  6c 65 6e 61 6d 65 29 0a  09 28 52 32 20 3d 20 70  |lename)..(R2 = p|
0001aab0  61 74 68 6e 61 6d 65 29  0a 0a 5c 3c 3d 09 28 52  |athname)..\<=.(R|
0001aac0  30 20 3d 20 66 69 6c 65  20 68 61 6e 64 6c 65 29  |0 = file handle)|
0001aad0  0a 0a 54 68 69 73 20 53  57 49 20 6f 70 65 6e 73  |..This SWI opens|
0001aae0  20 61 6e 64 20 63 6c 6f  73 65 73 20 66 69 6c 65  | and closes file|
0001aaf0  73 0a 0a 23 74 61 62 0a  52 30 09 41 63 74 69 6f  |s..#tab.R0.Actio|
0001ab00  6e 0a 23 4c 69 6e 65 0a  26 30 30 09 43 6c 6f 73  |n.#Line.&00.Clos|
0001ab10  65 73 20 66 69 6c 65 20  52 31 20 28 61 6c 6c 20  |es file R1 (all |
0001ab20  69 66 20 52 31 20 3d 20  30 29 0a 26 34 78 09 4f  |if R1 = 0).&4x.O|
0001ab30  70 65 6e 20 65 78 69 73  74 69 6e 67 20 66 69 6c  |pen existing fil|
0001ab40  65 20 77 69 74 68 20 72  65 61 64 2d 6f 6e 6c 79  |e with read-only|
0001ab50  20 61 63 63 65 73 73 0a  26 38 78 09 43 72 65 61  | access.&8x.Crea|
0001ab60  74 65 20 65 6d 70 74 79  20 66 69 6c 65 20 77 69  |te empty file wi|
0001ab70  74 68 20 72 65 61 64 2f  77 72 69 74 65 20 61 63  |th read/write ac|
0001ab80  63 65 73 73 0a 26 43 78  09 4f 70 65 6e 20 65 78  |cess.&Cx.Open ex|
0001ab90  69 73 74 69 6e 67 20 66  69 6c 65 20 77 69 74 68  |isting file with|
0001aba0  20 72 65 61 64 2f 77 72  69 74 65 20 61 63 63 65  | read/write acce|
0001abb0  73 73 0a 0a 23 74 61 62  0a 42 69 74 73 20 6f 66  |ss..#tab.Bits of|
0001abc0  20 78 3a 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  | x:.Meaning.#Lin|
0001abd0  65 0a 30 2d 31 09 50 61  74 68 20 75 73 65 64 0a  |e.0-1.Path used.|
0001abe0  09 20 20 30 20 3a 20 46  69 6c 65 24 50 61 74 68  |.  0 : File$Path|
0001abf0  0a 09 20 20 31 20 3a 20  53 74 72 69 6e 67 20 70  |..  1 : String p|
0001ac00  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 52 32 0a  |ointed to by R2.|
0001ac10  09 20 20 32 20 3a 20 56  61 72 69 61 62 6c 65 20  |.  2 : Variable |
0001ac20  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 52 32  |pointed to by R2|
0001ac30  0a 09 20 20 33 20 3a 20  4e 6f 6e 65 0a 32 09 49  |..  3 : None.2.I|
0001ac40  66 20 31 20 74 68 65 6e  20 65 72 72 6f 72 20 69  |f 1 then error i|
0001ac50  66 20 6f 70 65 6e 20 65  78 69 73 74 69 6e 67 20  |f open existing |
0001ac60  64 69 72 0a 33 09 49 66  20 31 20 74 68 65 6e 20  |dir.3.If 1 then |
0001ac70  65 72 72 6f 72 20 69 66  20 66 69 6c 65 20 64 6f  |error if file do|
0001ac80  65 73 6e 27 74 20 65 78  69 73 74 0a 34 2d 35 09  |esn't exist.4-5.|
0001ac90  30 00 00 00 44 41 54 41  b8 00 00 00 4f 53 5f 47  |0...DATA....OS_G|
0001aca0  65 74 45 6e 76 20 20 28  26 31 30 29 0a 23 50 61  |etEnv  (&10).#Pa|
0001acb0  72 65 6e 74 20 4f 53 5f  0a 5c 3c 3d 09 52 30 20  |rent OS_.\<=.R0 |
0001acc0  3d 09 41 64 64 72 65 73  73 20 6f 66 20 2a 63 6f  |=.Address of *co|
0001acd0  6d 6d 61 6e 64 0a 09 52  31 20 3d 09 52 41 4d 20  |mmand..R1 =.RAM |
0001ace0  6c 69 6d 69 74 0a 09 52  32 20 3d 09 50 74 72 20  |limit..R2 =.Ptr |
0001acf0  74 6f 20 35 2d 62 79 74  65 20 74 69 6d 65 20 6f  |to 5-byte time o|
0001ad00  66 20 70 72 6f 67 20 73  74 61 72 74 0a 0a 54 68  |f prog start..Th|
0001ad10  65 20 76 61 6c 75 65 73  20 72 65 74 75 72 6e 65  |e values returne|
0001ad20  64 20 62 79 20 74 68 69  73 20 53 57 49 2c 20 63  |d by this SWI, c|
0001ad30  61 6e 20 62 65 20 73 65  74 20 77 69 74 68 20 3c  |an be set with <|
0001ad40  4f 53 5f 57 72 69 74 65  45 6e 76 3e 44 41 54 41  |OS_WriteEnv>DATA|
0001ad50  60 01 00 00 4f 53 5f 52  65 6c 65 61 73 65 20 20  |`...OS_Release  |
0001ad60  28 26 32 30 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&20).#Parent OS|
0001ad70  5f 0a 3d 3e 09 52 30 20  3d 20 3c 76 65 63 74 6f  |_.=>.R0 = <vecto|
0001ad80  72 3d 3e 6f 73 5f 76 65  63 74 6f 72 73 3e 20 6e  |r=>os_vectors> n|
0001ad90  75 6d 62 65 72 0a 09 52  31 20 3d 20 61 64 64 72  |umber..R1 = addr|
0001ada0  65 73 73 20 6f 66 20 72  65 6c 65 61 73 69 6e 67  |ess of releasing|
0001adb0  20 72 6f 75 74 69 6e 65  0a 09 52 32 20 3d 20 76  | routine..R2 = v|
0001adc0  61 6c 75 65 20 67 69 76  65 6e 20 69 6e 20 52 32  |alue given in R2|
0001add0  20 77 68 65 6e 20 63 6c  61 69 6d 65 64 2e 0a 0a  | when claimed...|
0001ade0  5c 3c 3d 09 52 30 2d 52  32 20 70 72 65 73 65 72  |\<=.R0-R2 preser|
0001adf0  76 65 64 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ved.            |
0001ae00  20 20 20 20 20 0a 54 68  69 73 20 72 65 6d 6f 76  |     .This remov|
0001ae10  65 73 20 74 68 65 20 72  6f 75 74 69 6e 65 2c 20  |es the routine, |
0001ae20  77 68 69 63 68 20 69 73  20 69 64 65 6e 74 69 66  |which is identif|
0001ae30  69 65 64 20 62 79 20 62  6f 74 68 20 69 74 73 20  |ied by both its |
0001ae40  61 64 64 72 65 73 73 20  61 6e 64 20 77 6f 72 6b  |address and work|
0001ae50  73 70 61 63 65 20 70 6f  69 6e 74 65 72 2c 20 66  |space pointer, f|
0001ae60  72 6f 6d 20 74 68 65 20  6c 69 73 74 20 66 6f 72  |rom the list for|
0001ae70  20 74 68 65 20 73 70 65  63 69 66 69 65 64 20 76  | the specified v|
0001ae80  65 63 74 6f 72 2e 20 54  68 65 20 72 6f 75 74 69  |ector. The routi|
0001ae90  6e 65 20 77 69 6c 6c 20  6e 6f 20 6c 6f 6e 67 65  |ne will no longe|
0001aea0  72 20 62 65 20 63 61 6c  6c 65 64 2e 44 41 54 41  |r be called.DATA|
0001aeb0  bd 00 00 00 4f 53 5f 53  65 74 45 43 46 4f 72 69  |....OS_SetECFOri|
0001aec0  67 69 6e 20 20 28 26 35  36 29 0a 23 50 61 72 65  |gin  (&56).#Pare|
0001aed0  6e 74 20 4f 53 5f 0a 3d  3e 09 52 30 20 3d 09 78  |nt OS_.=>.R0 =.x|
0001aee0  0a 09 52 31 20 3d 09 79  0a 0a 54 68 69 73 20 53  |..R1 =.y..This S|
0001aef0  57 49 20 73 65 74 73 20  74 68 65 20 70 6f 69 6e  |WI sets the poin|
0001af00  74 20 77 69 74 68 20 77  68 69 63 68 20 74 6f 20  |t with which to |
0001af10  61 6c 69 67 6e 20 74 68  65 20 62 6f 74 74 6f 6d  |align the bottom|
0001af20  20 6c 65 66 74 20 6f 66  20 45 43 46 20 70 61 74  | left of ECF pat|
0001af30  74 65 72 6e 73 20 77 69  74 68 2e 0a 0a 59 6f 75  |terns with...You|
0001af40  20 63 61 6e 20 61 6c 73  6f 20 75 73 65 20 3c 56  | can also use <V|
0001af50  44 55 20 32 33 2c 31 37  2c 36 3d 3e 56 44 55 3a  |DU 23,17,6=>VDU:|
0001af60  32 33 2c 31 37 2c 36 3e  2e 00 00 00 44 41 54 41  |23,17,6>....DATA|
0001af70  c0 03 00 00 4f 53 5f 53  57 49 4e 75 6d 62 65 72  |....OS_SWINumber|
0001af80  46 72 6f 6d 53 74 72 69  6e 67 20 20 28 26 33 39  |FromString  (&39|
0001af90  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3d 3e  |).#Parent OS_.=>|
0001afa0  09 52 31 20 3d 20 70 6f  69 6e 74 65 72 20 74 6f  |.R1 = pointer to|
0001afb0  20 6e 61 6d 65 20 28 74  65 72 6d 69 6e 61 74 65  | name (terminate|
0001afc0  64 20 62 79 20 61 20 5c  3c 3d 20 33 32 20 63 68  |d by a \<= 32 ch|
0001afd0  61 72 29 0a 0a 5c 3c 3d  09 52 30 20 3d 20 53 57  |ar)..\<=.R0 = SW|
0001afe0  49 20 6e 75 6d 62 65 72  0a 09 52 31 20 3d 20 70  |I number..R1 = p|
0001aff0  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 63  |reserved..This c|
0001b000  61 6c 6c 20 63 6f 6e 76  65 72 74 73 20 61 20 53  |all converts a S|
0001b010  57 49 20 6e 61 6d 65 20  73 74 72 69 6e 67 20 74  |WI name string t|
0001b020  6f 20 61 20 53 57 49 20  6e 75 6d 62 65 72 2e 0a  |o a SWI number..|
0001b030  41 6e 20 65 72 72 6f 72  20 69 73 20 67 69 76 65  |An error is give|
0001b040  6e 20 69 66 20 74 68 65  20 53 57 49 20 6e 61 6d  |n if the SWI nam|
0001b050  65 20 69 73 20 6e 6f 74  20 72 65 63 6f 67 6e 69  |e is not recogni|
0001b060  7a 65 64 2e 0a 0a 23 74  61 62 0a 54 68 65 20 63  |zed...#tab.The c|
0001b070  6f 6e 76 65 72 73 69 6f  6e 20 69 73 20 61 73 20  |onversion is as |
0001b080  66 6f 6c 6c 6f 77 73 3a  0a 8f 09 41 20 6c 65 61  |follows:...A lea|
0001b090  64 69 6e 67 20 58 20 69  73 20 73 74 72 69 70 70  |ding X is stripp|
0001b0a0  65 64 2e 20 49 66 20 70  72 65 73 65 6e 74 2c 20  |ed. If present, |
0001b0b0  69 74 20 77 69 6c 6c 20  63 61 75 73 65 20 26 32  |it will cause &2|
0001b0c0  30 30 30 30 20 74 6f 20  62 65 20 61 64 64 65 64  |0000 to be added|
0001b0d0  20 74 6f 20 74 68 65 20  6e 75 6d 62 65 72 20 72  | to the number r|
0001b0e0  65 74 75 72 6e 65 64 20  28 62 69 74 20 31 37 29  |eturned (bit 17)|
0001b0f0  2e 0a 8f 09 53 79 73 74  65 6d 20 6e 61 6d 65 73  |....System names|
0001b100  20 61 72 65 20 63 68 65  63 6b 65 64 20 66 6f 72  | are checked for|
0001b110  2e 20 4e 6f 74 65 20 74  68 61 74 20 74 68 65 20  |. Note that the |
0001b120  63 6f 6e 76 65 72 73 69  6f 6e 20 6f 66 20 53 57  |conversion of SW|
0001b130  49 73 20 69 73 6e 27 74  20 76 65 72 79 20 62 69  |Is isn't very bi|
0001b140  64 69 72 65 63 74 69 6f  6e 61 6c 3a 20 74 68 65  |directional: the|
0001b150  20 6e 61 6d 65 20 4f 53  5f 57 72 69 74 65 49 2b  | name OS_WriteI+|
0001b160  22 20 22 20 63 61 6e 20  62 65 20 70 72 6f 64 75  |" " can be produ|
0001b170  63 65 64 2c 20 62 75 74  20 6f 6e 6c 79 20 4f 53  |ced, but only OS|
0001b180  5f 57 72 69 74 65 49 20  69 73 20 72 65 63 6f 67  |_WriteI is recog|
0001b190  6e 69 7a 65 64 2e 0a 8f  09 4d 6f 64 75 6c 65 73  |nized....Modules|
0001b1a0  20 61 72 65 20 73 63 61  6e 6e 65 64 2e 20 49 66  | are scanned. If|
0001b1b0  20 74 68 65 20 6d 6f 64  75 6c 65 20 70 72 65 66  | the module pref|
0001b1c0  69 78 20 6d 61 74 63 68  65 73 20 74 68 65 20 6f  |ix matches the o|
0001b1d0  6e 65 20 67 69 76 65 6e  2c 20 61 6e 64 20 74 68  |ne given, and th|
0001b1e0  65 20 73 75 66 66 69 78  20 74 6f 20 74 68 65 20  |e suffix to the |
0001b1f0  6e 61 6d 65 20 69 73 20  61 20 6e 75 6d 62 65 72  |name is a number|
0001b200  2c 20 74 68 65 6e 20 74  68 61 74 20 6e 75 6d 62  |, then that numb|
0001b210  65 72 20 69 73 20 61 64  64 65 64 20 74 6f 20 74  |er is added to t|
0001b220  68 65 20 6d 6f 64 75 6c  65 27 73 20 53 57 49 20  |he module's SWI |
0001b230  27 63 68 75 6e 6b 27 20  62 61 73 65 2c 20 61 6e  |'chunk' base, an|
0001b240  64 20 74 68 65 20 73 75  6d 20 72 65 74 75 72 6e  |d the sum return|
0001b250  65 64 2e 20 46 6f 72 20  65 78 61 6d 70 6c 65 2c  |ed. For example,|
0001b260  20 57 69 6d 70 5f 26 32  33 20 72 65 74 75 72 6e  | Wimp_&23 return|
0001b270  73 20 26 34 30 30 45 33  2c 20 61 73 20 74 68 65  |s &400E3, as the|
0001b280  20 57 69 6d 70 27 73 20  63 68 75 6e 6b 20 6e 75  | Wimp's chunk nu|
0001b290  6d 62 65 72 20 69 73 20  26 34 30 30 43 30 2e 0a  |mber is &400C0..|
0001b2a0  8f 09 49 66 20 74 68 65  20 73 75 66 66 69 78 20  |..If the suffix |
0001b2b0  69 73 20 61 20 6e 61 6d  65 2c 20 61 6e 64 20 74  |is a name, and t|
0001b2c0  68 69 73 20 63 61 6e 20  62 65 20 6d 61 74 63 68  |his can be match|
0001b2d0  65 64 20 62 79 20 74 68  65 20 6d 6f 64 75 6c 65  |ed by the module|
0001b2e0  2c 20 74 68 65 20 61 70  70 72 6f 70 72 69 61 74  |, the appropriat|
0001b2f0  65 20 6e 75 6d 62 65 72  20 69 73 20 72 65 74 75  |e number is retu|
0001b300  72 6e 65 64 2e 20 46 6f  72 20 65 78 61 6d 70 6c  |rned. For exampl|
0001b310  65 2c 20 57 69 6d 70 5f  50 6f 6c 6c 20 72 65 74  |e, Wimp_Poll ret|
0001b320  75 72 6e 73 20 26 34 30  30 43 37 2e 44 41 54 41  |urns &400C7.DATA|
0001b330  3d 03 00 00 4f 53 5f 53  57 49 4e 75 6d 62 65 72  |=...OS_SWINumber|
0001b340  54 6f 53 74 72 69 6e 67  20 20 28 26 33 38 29 0a  |ToString  (&38).|
0001b350  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0001b360  30 20 3d 20 53 57 49 20  4e 75 6d 62 65 72 0a 09  |0 = SWI Number..|
0001b370  52 31 20 3d 20 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 = pointer to |
0001b380  62 75 66 66 65 72 0a 09  52 32 20 3d 20 62 75 66  |buffer..R2 = buf|
0001b390  66 65 72 20 6c 65 6e 67  74 68 0a 0a 5c 3c 3d 09  |fer length..\<=.|
0001b3a0  52 30 2c 52 31 20 70 72  65 73 65 72 76 65 64 0a  |R0,R1 preserved.|
0001b3b0  09 52 32 20 3d 20 6c 65  6e 67 74 68 20 6f 66 20  |.R2 = length of |
0001b3c0  73 74 72 69 6e 67 20 69  6e 20 62 75 66 66 65 72  |string in buffer|
0001b3d0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 63 6f 6e 76  |..This call conv|
0001b3e0  65 72 74 73 20 61 20 53  57 49 20 6e 75 6d 62 65  |erts a SWI numbe|
0001b3f0  72 20 74 6f 20 61 20 73  74 72 69 6e 67 20 63 6f  |r to a string co|
0001b400  6e 74 61 69 6e 69 6e 67  20 69 74 73 20 53 57 49  |ntaining its SWI|
0001b410  20 6e 61 6d 65 2e 20 54  68 65 20 72 65 74 75 72  | name. The retur|
0001b420  6e 65 64 20 73 74 72 69  6e 67 20 69 73 20 6e 75  |ned string is nu|
0001b430  6c 6c 2d 74 65 72 6d 69  6e 61 74 65 64 2c 20 61  |ll-terminated, a|
0001b440  6e 64 20 73 74 61 72 74  73 20 77 69 74 68 20 61  |nd starts with a|
0001b450  6e 20 58 20 69 66 20 74  68 65 20 53 57 49 20 6e  |n X if the SWI n|
0001b460  75 6d 62 65 72 20 68 61  73 20 62 69 74 20 31 37  |umber has bit 17|
0001b470  20 73 65 74 2e 0a 0a 53  57 49 20 6e 75 6d 62 65  | set...SWI numbe|
0001b480  72 73 20 5c 3c 20 26 32  30 30 20 68 61 76 65 20  |rs \< &200 have |
0001b490  61 6e 20 27 4f 53 5f 27  20 70 72 65 66 69 78 20  |an 'OS_' prefix |
0001b4a0  74 6f 20 74 68 65 20 6d  61 69 6e 20 70 61 72 74  |to the main part|
0001b4b0  2c 20 61 6e 64 20 61 20  53 57 49 2d 64 65 70 65  |, and a SWI-depe|
0001b4c0  6e 64 65 6e 74 20 65 6e  64 20 73 65 63 74 69 6f  |ndent end sectio|
0001b4d0  6e 20 28 77 68 69 63 68  20 69 73 20 27 55 6e 64  |n (which is 'Und|
0001b4e0  65 66 69 6e 65 64 27 20  66 6f 72 20 75 6e 6b 6f  |efined' for unko|
0001b4f0  77 6e 20 4f 53 20 53 57  49 73 29 2e 0a 0a 53 57  |wn OS SWIs)...SW|
0001b500  49 20 6e 75 6d 62 65 72  73 20 69 6e 20 74 68 65  |I numbers in the|
0001b510  20 72 61 6e 67 65 20 26  31 30 30 20 74 6f 20 26  | range &100 to &|
0001b520  31 46 46 20 61 72 65 20  63 6f 6e 76 65 72 74 65  |1FF are converte|
0001b530  64 20 69 6e 20 74 68 65  20 66 6f 72 6d 20 4f 53  |d in the form OS|
0001b540  5f 57 72 69 74 65 49 2b  22 41 22 2c 20 6f 72 20  |_WriteI+"A", or |
0001b550  4f 53 5f 57 72 69 74 65  49 2b 32 33 20 69 66 20  |OS_WriteI+23 if |
0001b560  74 68 65 20 63 68 61 72  61 63 74 65 72 20 69 73  |the character is|
0001b570  20 6e 6f 74 20 61 20 70  72 69 6e 74 61 62 6c 65  | not a printable|
0001b580  20 6f 6e 65 2e 0a 0a 53  57 49 20 6e 75 6d 62 65  | one...SWI numbe|
0001b590  72 73 20 3e 3d 20 26 32  30 30 20 61 72 65 20 6c  |rs >= &200 are l|
0001b5a0  6f 6f 6b 65 64 20 66 6f  72 20 69 6e 20 6d 6f 64  |ooked for in mod|
0001b5b0  75 6c 65 73 2e 20 49 66  20 61 20 73 75 69 74 61  |ules. If a suita|
0001b5c0  62 6c 65 20 6e 61 6d 65  20 69 73 20 66 6f 75 6e  |ble name is foun|
0001b5d0  64 2c 20 69 74 20 69 73  20 67 69 76 65 6e 20 69  |d, it is given i|
0001b5e0  6e 20 74 68 65 20 66 6f  72 6d 20 6d 6f 64 75 6c  |n the form modul|
0001b5f0  65 5f 6e 61 6d 65 20 6f  72 20 6d 6f 64 75 6c 65  |e_name or module|
0001b600  5f 6e 75 6d 62 65 72 2c  20 65 67 2e 20 57 69 6d  |_number, eg. Wim|
0001b610  70 5f 49 6e 69 74 69 61  6c 69 73 65 2c 20 57 69  |p_Initialise, Wi|
0001b620  6d 70 5f 33 32 2e 20 49  66 20 6e 6f 20 6e 61 6d  |mp_32. If no nam|
0001b630  65 20 69 73 20 66 6f 75  6e 64 20 69 6e 20 74 68  |e is found in th|
0001b640  65 20 6d 6f 64 75 6c 65  73 2c 20 74 68 65 20 73  |e modules, the s|
0001b650  74 72 69 6e 67 20 27 55  73 65 72 27 20 69 73 20  |tring 'User' is |
0001b660  72 65 74 75 72 6e 65 64  2e 00 00 00 44 41 54 41  |returned....DATA|
0001b670  47 01 00 00 4f 53 5f 55  70 64 61 74 65 4d 45 4d  |G...OS_UpdateMEM|
0001b680  43 20 20 28 26 31 41 29  0a 23 50 61 72 65 6e 74  |C  (&1A).#Parent|
0001b690  20 4f 53 5f 0a 3d 3e 09  52 30 20 3d 20 4e 65 77  | OS_.=>.R0 = New|
0001b6a0  20 62 69 74 73 0a 09 52  31 20 3d 20 4d 61 73 6b  | bits..R1 = Mask|
0001b6b0  0a 0a 3c 3d 09 52 30 20  3d 09 4f 6c 64 20 72 65  |..<=.R0 =.Old re|
0001b6c0  67 69 73 74 65 72 20 76  61 6c 75 65 0a 0a 54 68  |gister value..Th|
0001b6d0  69 73 20 53 57 49 20 70  72 6f 67 72 61 6d 73 20  |is SWI programs |
0001b6e0  69 6e 64 69 76 69 64 75  61 6c 20 62 69 74 73 20  |individual bits |
0001b6f0  69 6e 20 74 68 65 20 3c  4d 45 4d 43 20 63 6f 6e  |in the <MEMC con|
0001b700  74 72 6f 6c 20 72 65 67  69 73 74 65 72 3d 3e 4d  |trol register=>M|
0001b710  61 63 68 69 6e 65 3a 4d  45 4d 43 31 3e 2e 20 53  |achine:MEMC1>. S|
0001b720  69 6e 63 65 20 74 68 65  20 4d 45 4d 43 20 69 73  |ince the MEMC is|
0001b730  20 77 72 69 74 65 2d 6f  6e 6c 79 2c 20 74 68 69  | write-only, thi|
0001b740  73 20 69 73 20 64 6f 6e  65 20 76 69 61 20 61 20  |s is done via a |
0001b750  73 6f 66 74 77 61 72 65  20 63 6f 70 79 2c 20 6d  |software copy, m|
0001b760  61 69 6e 74 61 69 6e 65  64 20 62 79 20 74 68 65  |aintained by the|
0001b770  20 4f 53 2e 0a 0a 52 65  67 20 3d 20 28 52 65 67  | OS...Reg = (Reg|
0001b780  43 6f 70 79 20 41 4e 44  20 4e 4f 54 20 52 31 29  |Copy AND NOT R1)|
0001b790  20 4f 52 20 28 52 30 20  41 4e 44 20 52 31 29 0a  | OR (R0 AND R1).|
0001b7a0  0a 54 6f 20 72 65 61 64  3a 20 52 30 2c 52 31 20  |.To read: R0,R1 |
0001b7b0  3d 20 30 00 44 41 54 41  eb 01 00 00 4f 53 5f 56  |= 0.DATA....OS_V|
0001b7c0  61 6c 69 64 61 74 65 41  64 64 72 65 73 73 20 20  |alidateAddress  |
0001b7d0  28 26 33 41 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&3A).#Parent OS|
0001b7e0  5f 0a 3d 3e 09 52 30 20  3d 09 6d 69 6e 69 6d 75  |_.=>.R0 =.minimu|
0001b7f0  6d 20 61 64 64 72 65 73  73 0a 09 52 31 20 3d 09  |m address..R1 =.|
0001b800  6d 61 78 69 6d 75 6d 20  61 64 64 72 65 73 73 0a  |maximum address.|
0001b810  0a 3c 3d 09 52 30 2c 52  31 20 70 72 65 73 65 72  |.<=.R0,R1 preser|
0001b820  76 65 64 0a 09 43 20 66  6c 61 67 20 69 73 20 63  |ved..C flag is c|
0001b830  6c 65 61 72 20 69 66 20  74 68 65 20 72 61 6e 67  |lear if the rang|
0001b840  65 20 69 73 20 4f 4b 2c  20 73 65 74 20 6f 74 68  |e is OK, set oth|
0001b850  65 72 77 69 73 65 0a 0a  53 57 49 20 63 68 65 63  |erwise..SWI chec|
0001b860  6b 73 20 74 68 65 20 61  64 64 72 65 73 73 20 72  |ks the address r|
0001b870  61 6e 67 65 20 62 65 74  77 65 65 6e 20 52 30 20  |ange between R0 |
0001b880  61 6e 64 20 52 31 2d 31  20 74 6f 20 73 65 65 20  |and R1-1 to see |
0001b890  69 66 20 74 68 65 20 73  70 65 63 69 66 69 65 64  |if the specified|
0001b8a0  20 72 61 6e 67 65 20 6c  69 65 73 20 69 6e 20 3c  | range lies in <|
0001b8b0  6c 6f 67 69 63 61 6c 20  52 41 4d 3d 3e 4d 61 63  |logical RAM=>Mac|
0001b8c0  68 69 6e 65 3a 4c 6f 67  69 63 61 6c 3e 20 61 6e  |hine:Logical> an|
0001b8d0  64 20 68 61 73 20 61 20  6d 61 70 70 69 6e 67 20  |d has a mapping |
0001b8e0  69 6e 74 6f 20 70 68 79  73 69 63 61 6c 20 52 41  |into physical RA|
0001b8f0  4d 2e 0a 0a 4e 6f 74 65  3a 20 54 68 69 73 20 64  |M...Note: This d|
0001b900  6f 65 73 20 2f 6e 6f 74  2f 20 63 68 65 63 6b 20  |oes /not/ check |
0001b910  74 68 61 74 20 74 68 65  20 6d 65 6d 6f 72 79 20  |that the memory |
0001b920  61 63 74 75 61 6c 6c 79  20 65 78 69 73 74 73 2c  |actually exists,|
0001b930  20 6f 6e 6c 79 20 74 68  61 74 20 69 74 20 6f 75  | only that it ou|
0001b940  67 68 74 20 74 6f 20 65  78 69 73 74 2e 20 49 66  |ght to exist. If|
0001b950  20 79 6f 75 20 68 61 76  65 20 75 73 65 64 20 3c  | you have used <|
0001b960  4f 53 5f 53 65 74 4d 65  6d 4d 61 70 45 6e 74 72  |OS_SetMemMapEntr|
0001b970  69 65 73 3e 2c 20 74 68  65 6e 20 74 68 69 73 20  |ies>, then this |
0001b980  63 61 6c 6c 20 77 69 6c  6c 20 6e 6f 74 20 77 6f  |call will not wo|
0001b990  72 6b 20 61 73 20 65 78  70 65 63 74 65 64 2e 00  |rk as expected..|
0001b9a0  44 41 54 41 87 05 00 00  53 6f 66 74 77 61 72 65  |DATA....Software|
0001b9b0  20 56 65 63 74 6f 72 73  20 43 68 61 69 6e 0a 57  | Vectors Chain.W|
0001b9c0  68 65 6e 20 4f 53 5f 43  6c 61 69 6d 20 61 64 64  |hen OS_Claim add|
0001b9d0  73 20 61 20 72 6f 75 74  69 6e 65 20 74 6f 20 61  |s a routine to a|
0001b9e0  20 76 65 63 74 6f 72 2c  20 69 74 20 61 75 74 6f  | vector, it auto|
0001b9f0  6d 61 74 69 63 61 6c 6c  79 20 72 65 6d 6f 76 65  |matically remove|
0001ba00  73 20 61 6e 79 20 65 61  72 6c 69 65 72 20 69 6e  |s any earlier in|
0001ba10  73 74 61 6e 63 65 73 20  6f 66 20 74 68 65 20 73  |stances of the s|
0001ba20  61 6d 65 20 72 6f 75 74  69 6e 65 20 66 72 6f 6d  |ame routine from|
0001ba30  20 74 68 65 20 63 68 61  69 6e 2e 20 49 66 20 79  | the chain. If y|
0001ba40  6f 75 20 64 6f 6e 27 74  20 77 61 6e 74 20 74 68  |ou don't want th|
0001ba50  69 73 20 74 6f 20 68 61  70 70 65 6e 2c 20 75 73  |is to happen, us|
0001ba60  65 20 3c 4f 53 5f 41 64  64 54 6f 56 65 63 74 6f  |e <OS_AddToVecto|
0001ba70  72 3e 20 69 6e 73 74 65  61 64 2e 20 54 68 65 20  |r> instead. The |
0001ba80  72 6f 75 74 69 6e 65 73  20 61 72 65 20 63 61 6c  |routines are cal|
0001ba90  6c 65 64 20 69 6e 20 72  65 76 65 72 73 65 20 6f  |led in reverse o|
0001baa0  72 64 65 72 20 74 6f 20  74 68 65 20 6f 72 64 65  |rder to the orde|
0001bab0  72 20 69 6e 20 77 68 69  63 68 20 74 68 65 79 20  |r in which they |
0001bac0  63 61 6c 6c 65 64 20 3c  4f 53 5f 43 6c 61 69 6d  |called <OS_Claim|
0001bad0  3e 2e 0a 0a 4c 65 74 27  73 20 67 69 76 65 20 61  |>...Let's give a|
0001bae0  20 73 6d 61 6c 6c 20 65  78 61 6d 70 6c 65 20 66  | small example f|
0001baf0  6f 72 20 79 6f 75 20 74  6f 20 69 6d 61 67 69 6e  |or you to imagin|
0001bb00  65 20 68 6f 77 20 74 68  69 73 20 77 6f 72 6b 73  |e how this works|
0001bb10  20 72 6f 75 67 68 6c 79  20 28 64 6f 6e 27 74 20  | roughly (don't |
0001bb20  63 6f 75 6e 74 20 6f 6e  20 63 6f 72 72 65 63 74  |count on correct|
0001bb30  20 70 72 65 73 65 6e 74  61 74 69 6f 6e 2c 20 6d  | presentation, m|
0001bb40  79 20 28 45 70 69 63 27  73 29 20 6f 77 6e 20 6b  |y (Epic's) own k|
0001bb50  6e 6f 77 6c 65 64 67 65  20 6f 66 20 74 68 65 20  |nowledge of the |
0001bb60  4f 53 20 69 73 20 6e 6f  74 20 31 30 30 25 2c 20  |OS is not 100%, |
0001bb70  79 65 74 2e 2e 2e 20 3b  2d 29 0a 0a 41 20 70 72  |yet... ;-)..A pr|
0001bb80  6f 67 72 61 6d 20 64 6f  65 73 20 61 6e 20 53 57  |ogram does an SW|
0001bb90  49 20 22 58 59 5a 22 20  28 77 68 69 63 68 20 68  |I "XYZ" (which h|
0001bba0  61 73 20 62 65 65 6e 20  63 6c 61 69 6d 65 64 29  |as been claimed)|
0001bbb0  0a 0a 52 49 53 43 20 4f  53 20 68 61 73 20 61 20  |..RISC OS has a |
0001bbc0  6c 69 73 74 20 66 6f 72  20 74 68 69 73 20 76 65  |list for this ve|
0001bbd0  63 74 6f 72 2c 20 77 68  69 63 68 20 63 6f 75 6c  |ctor, which coul|
0001bbe0  64 20 62 65 20 65 78 70  6c 61 69 6e 65 64 20 6c  |d be explained l|
0001bbf0  69 6b 65 20 74 68 69 73  3a 0a 53 57 49 20 22 58  |ike this:.SWI "X|
0001bc00  59 5a 22 20 67 6f 65 73  20 68 65 72 65 3a 09 53  |YZ" goes here:.S|
0001bc10  54 4d 46 44 20 52 31 33  21 2c 5c 7b 52 31 34 7d  |TMFD R13!,\{R14}|
0001bc20  0a 09 09 09 42 4c 20 4c  61 73 74 5f 43 6c 69 65  |....BL Last_Clie|
0001bc30  6e 74 0a 09 09 09 42 4c  20 2e 2e 2e 0a 09 09 09  |nt....BL .......|
0001bc40  42 4c 20 43 6c 69 65 6e  74 5f 23 31 0a 09 09 09  |BL Client_#1....|
0001bc50  42 4c 20 52 4f 4d 2d 52  6f 75 74 69 6e 65 0a 09  |BL ROM-Routine..|
0001bc60  09 09 4c 44 4d 46 44 20  52 31 33 21 2c 5c 7b 50  |..LDMFD R13!,\{P|
0001bc70  43 7d 0a 0a 59 6f 75 72  20 6f 77 6e 20 72 6f 75  |C}..Your own rou|
0001bc80  74 69 6e 65 20 63 61 6e  20 64 6f 20 6f 6e 65 20  |tine can do one |
0001bc90  6f 66 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |of the following|
0001bca0  3a 0a 23 54 61 62 0a 8f  09 52 65 70 6c 61 63 65  |:.#Tab...Replace|
0001bcb0  20 74 68 65 20 6f 72 69  67 69 6e 61 6c 20 72 6f  | the original ro|
0001bcc0  75 74 69 6e 65 2c 20 70  61 73 73 69 6e 67 20 63  |utine, passing c|
0001bcd0  6f 6e 74 72 6f 6c 20 64  69 72 65 63 74 6c 79 20  |ontrol directly |
0001bce0  62 61 63 6b 20 74 6f 20  74 68 65 20 63 61 6c 6c  |back to the call|
0001bcf0  65 72 3a 20 42 79 20 3c  69 6e 74 65 72 63 65 70  |er: By <intercep|
0001bd00  74 69 6e 67 3d 3e 6f 73  5f 76 65 63 74 6f 72 72  |ting=>os_vectorr|
0001bd10  75 6c 65 73 3e 2e 0a 8f  09 44 6f 20 73 6f 6d 65  |ules>....Do some|
0001bd20  20 70 72 6f 63 65 73 73  69 6e 67 20 62 65 66 6f  | processing befo|
0001bd30  72 65 20 63 61 6c 6c 69  6e 67 20 74 68 65 20 73  |re calling the s|
0001bd40  74 61 6e 64 61 72 64 20  72 6f 75 74 69 6e 65 2c  |tandard routine,|
0001bd50  20 77 68 69 63 68 20 74  68 65 6e 20 70 61 73 73  | which then pass|
0001bd60  65 73 20 63 6f 6e 74 72  6f 6c 20 62 61 63 6b 20  |es control back |
0001bd70  74 6f 20 74 68 65 20 63  61 6c 6c 65 72 3a 20 42  |to the caller: B|
0001bd80  79 20 3c 70 61 73 73 69  6e 67 3d 3e 6f 73 5f 76  |y <passing=>os_v|
0001bd90  65 63 74 6f 72 72 75 6c  65 73 3e 20 6f 6e 20 74  |ectorrules> on t|
0001bda0  68 65 20 63 61 6c 6c 2e  0a 8f 09 43 61 6c 6c 20  |he call....Call |
0001bdb0  74 68 65 20 73 74 61 6e  64 61 72 64 20 72 6f 75  |the standard rou|
0001bdc0  74 69 6e 65 2c 20 70 72  6f 63 65 73 73 20 73 6f  |tine, process so|
0001bdd0  6d 65 20 6f 66 20 74 68  65 20 72 65 73 75 6c 74  |me of the result|
0001bde0  73 20 69 74 20 72 65 74  75 72 6e 73 2c 20 61 6e  |s it returns, an|
0001bdf0  64 20 74 68 65 6e 20 70  61 73 73 20 63 6f 6e 74  |d then pass cont|
0001be00  72 6f 6c 20 62 61 63 6b  20 74 6f 20 74 68 65 20  |rol back to the |
0001be10  63 61 6c 6c 65 72 3b 20  62 79 20 61 20 62 69 74  |caller; by a bit|
0001be20  20 6d 6f 72 65 20 73 6f  70 68 69 73 74 69 63 61  | more sophistica|
0001be30  74 65 64 20 73 74 61 63  6b 20 70 75 73 68 69 6e  |ted stack pushin|
0001be40  67 2e 20 46 6f 72 20 65  78 61 6d 70 6c 65 2c 20  |g. For example, |
0001be50  70 75 73 68 20 74 68 65  20 61 64 64 72 65 73 73  |push the address|
0001be60  20 6f 66 20 74 68 65 20  70 61 72 74 20 6f 66 20  | of the part of |
0001be70  79 6f 75 72 20 72 6f 75  74 69 6e 65 20 77 68 69  |your routine whi|
0001be80  63 68 20 77 69 6c 6c 20  64 6f 20 74 68 65 20 70  |ch will do the p|
0001be90  6f 73 74 2d 70 72 6f 63  65 73 73 69 6e 67 20 6f  |ost-processing o|
0001bea0  6e 20 74 68 65 20 73 74  61 63 6b 2c 20 74 68 65  |n the stack, the|
0001beb0  6e 20 70 61 73 73 20 6f  6e 20 74 68 65 20 63 61  |n pass on the ca|
0001bec0  6c 6c 2e 20 57 68 65 6e  20 74 68 65 20 6e 65 78  |ll. When the nex|
0001bed0  74 20 28 6f 72 20 74 68  65 20 52 49 53 43 20 4f  |t (or the RISC O|
0001bee0  53 29 20 72 6f 75 74 69  6e 65 20 6f 6e 20 74 68  |S) routine on th|
0001bef0  65 20 63 68 61 69 6e 20  68 61 73 20 66 69 6e 69  |e chain has fini|
0001bf00  73 68 65 64 2c 20 74 68  69 73 20 70 6f 73 74 2d  |shed, this post-|
0001bf10  72 6f 75 74 69 6e 65 20  77 69 6c 6c 20 62 65 20  |routine will be |
0001bf20  63 61 6c 6c 65 64 2e 00  44 41 54 41 ee 05 00 00  |called..DATA....|
0001bf30  53 6f 66 74 77 61 72 65  20 56 65 63 74 6f 72 73  |Software Vectors|
0001bf40  20 52 75 6c 65 73 0a 49  66 20 79 6f 75 20 77 72  | Rules.If you wr|
0001bf50  69 74 65 20 61 20 72 6f  75 74 69 6e 65 20 74 68  |ite a routine th|
0001bf60  61 74 20 75 73 65 73 20  61 20 76 65 63 74 6f 72  |at uses a vector|
0001bf70  2c 20 69 74 20 6d 75 73  74 20 6f 62 65 79 20 74  |, it must obey t|
0001bf80  68 65 20 73 61 6d 65 20  65 6e 74 72 79 20 61 6e  |he same entry an|
0001bf90  64 20 65 78 69 74 20 63  6f 6e 64 69 74 69 6f 6e  |d exit condition|
0001bfa0  73 20 61 73 20 74 68 65  20 63 6f 72 72 65 73 70  |s as the corresp|
0001bfb0  6f 6e 64 69 6e 67 20 52  49 53 43 20 4f 53 20 72  |onding RISC OS r|
0001bfc0  6f 75 74 69 6e 65 2e 20  46 6f 72 20 65 78 61 6d  |outine. For exam|
0001bfd0  70 6c 65 2c 20 61 20 72  6f 75 74 69 6e 65 20 6f  |ple, a routine o|
0001bfe0  6e 20 57 72 63 68 56 20  6d 75 73 74 20 70 72 65  |n WrchV must pre|
0001bff0  73 65 72 76 65 20 61 6c  6c 20 72 65 67 69 73 74  |serve all regist|
0001c000  65 72 73 2c 20 6a 75 73  74 20 61 73 20 74 68 65  |ers, just as the|
0001c010  20 53 57 49 20 4f 53 5f  57 72 69 74 65 43 20 64  | SWI OS_WriteC d|
0001c020  6f 65 73 21 0a 0a 54 68  65 20 70 72 6f 63 65 73  |oes!..The proces|
0001c030  73 6f 72 20 6d 6f 64 65  20 69 6e 20 77 68 69 63  |sor mode in whic|
0001c040  68 20 79 6f 75 72 20 72  6f 75 74 69 6e 65 20 69  |h your routine i|
0001c050  73 20 65 6e 74 65 72 65  64 20 64 65 70 65 6e 64  |s entered depend|
0001c060  73 20 6f 6e 3a 0a 2a 09  52 6f 75 74 69 6e 65 73  |s on:.*.Routines|
0001c070  20 76 65 63 74 6f 72 65  64 20 74 68 72 6f 75 67  | vectored throug|
0001c080  68 20 49 72 71 56 20 28  56 65 63 74 6f 72 20 26  |h IrqV (Vector &|
0001c090  30 32 29 20 61 72 65 20  61 6c 77 61 79 73 20 65  |02) are always e|
0001c0a0  78 65 63 75 74 65 64 20  69 6e 20 49 52 51 20 6d  |xecuted in IRQ m|
0001c0b0  6f 64 65 2e 0a 2a 09 52  6f 75 74 69 6e 65 73 20  |ode..*.Routines |
0001c0c0  76 65 63 74 6f 72 65 64  20 74 68 72 6f 75 67 68  |vectored through|
0001c0d0  20 45 76 65 6e 74 56 2c  20 49 6e 73 56 2c 20 52  | EventV, InsV, R|
0001c0e0  65 6d 56 2c 20 43 6e 70  56 20 28 56 65 63 74 6f  |emV, CnpV (Vecto|
0001c0f0  72 73 20 26 31 30 20 74  6f 20 26 31 36 29 20 61  |rs &10 to &16) a|
0001c100  6e 64 20 54 69 63 6b 65  72 56 20 28 26 31 43 29  |nd TickerV (&1C)|
0001c110  20 61 72 65 20 67 65 6e  65 72 61 6c 6c 79 20 65  | are generally e|
0001c120  78 65 63 74 75 65 64 20  69 6e 20 49 52 51 20 6d  |xectued in IRQ m|
0001c130  6f 64 65 2c 20 62 75 74  20 6d 61 79 20 62 65 20  |ode, but may be |
0001c140  65 78 65 63 75 74 65 64  20 69 6e 20 53 56 43 20  |executed in SVC |
0001c150  6d 6f 64 65 20 69 66 20  63 61 6c 6c 65 64 20 75  |mode if called u|
0001c160  73 69 6e 67 20 4f 53 5f  43 61 6c 6c 41 56 65 63  |sing OS_CallAVec|
0001c170  74 6f 72 2c 20 61 6e 64  20 69 6e 20 63 65 72 74  |tor, and in cert|
0001c180  61 69 6e 20 75 6e 73 70  65 63 69 66 69 65 64 20  |ain unspecified |
0001c190  63 69 72 63 75 6d 73 74  61 6e 63 65 73 2e 0a 2a  |circumstances..*|
0001c1a0  09 61 6c 6c 20 6f 74 68  65 72 20 72 6f 75 74 69  |.all other routi|
0001c1b0  6e 65 73 20 61 72 65 20  65 78 65 63 75 74 65 64  |nes are executed|
0001c1c0  20 69 6e 20 53 56 43 20  6d 6f 64 65 2e 0a 0a 46  | in SVC mode...F|
0001c1d0  6f 72 20 74 68 65 20 53  56 43 20 6d 6f 64 65 20  |or the SVC mode |
0001c1e0  79 6f 75 27 76 65 20 74  6f 20 62 65 20 63 61 72  |you've to be car|
0001c1f0  65 66 75 6c 6c 79 20 77  69 74 68 20 63 61 6c 6c  |efully with call|
0001c200  69 6e 67 20 61 20 53 57  49 2c 20 62 65 63 61 75  |ing a SWI, becau|
0001c210  73 65 20 6f 66 20 63 6f  72 72 75 70 74 69 6e 67  |se of corrupting|
0001c220  20 74 68 65 20 72 65 74  75 72 6e 20 61 64 64 72  | the return addr|
0001c230  65 73 73 20 68 65 6c 64  20 69 6e 20 73 76 63 5f  |ess held in svc_|
0001c240  52 31 34 2e 20 46 6f 72  20 74 68 65 20 76 65 63  |R14. For the vec|
0001c250  74 6f 72 73 20 65 78 65  63 74 75 65 64 20 69 6e  |tors exectued in|
0001c260  20 49 52 51 20 6d 6f 64  65 20 69 74 27 73 20 76  | IRQ mode it's v|
0001c270  69 74 61 6c 20 74 6f 20  6b 6e 6f 77 20 61 6c 6c  |ital to know all|
0001c280  20 64 65 74 61 69 6c 73  20 61 62 6f 75 74 20 22  | details about "|
0001c290  49 6e 74 65 72 72 75 70  74 73 20 61 6e 64 20 68  |Interrupts and h|
0001c2a0  61 6e 64 6c 69 6e 67 20  74 68 65 6d 22 2e 0a 0a  |andling them"...|
0001c2b0  45 72 72 6f 72 73 20 61  72 65 20 72 65 70 6f 72  |Errors are repor|
0001c2c0  74 65 64 20 77 69 74 68  20 72 65 74 75 72 6e 69  |ted with returni|
0001c2d0  6e 67 20 74 68 65 20 56  20 66 6c 61 67 20 73 65  |ng the V flag se|
0001c2e0  74 2c 20 61 6e 64 20 73  74 6f 72 69 6e 67 20 61  |t, and storing a|
0001c2f0  6e 20 65 72 72 6f 72 20  70 6f 69 6e 74 65 72 20  |n error pointer |
0001c300  69 6e 20 52 30 2e 20 54  68 65 20 72 6f 75 74 69  |in R0. The routi|
0001c310  6e 65 20 6d 75 73 74 20  74 68 65 72 65 66 6f 72  |ne must therefor|
0001c320  65 20 6e 6f 74 20 70 61  73 73 20 6f 6e 20 74 68  |e not pass on th|
0001c330  65 20 63 61 6c 6c 2c 20  61 73 20 52 30 20 68 61  |e call, as R0 ha|
0001c340  73 20 62 65 65 6e 20 63  68 61 6e 67 65 64 21 20  |s been changed! |
0001c350  50 6c 65 61 73 65 20 6e  6f 74 65 20 74 68 61 74  |Please note that|
0001c360  20 74 68 69 73 20 63 61  6e 27 74 20 62 65 20 64  | this can't be d|
0001c370  6f 6e 65 20 77 69 74 68  20 61 6c 6c 20 76 65 63  |one with all vec|
0001c380  74 6f 72 73 2c 20 73 6f  6d 65 20 6f 66 20 74 68  |tors, some of th|
0001c390  65 6d 20 28 74 68 6f 73  65 20 69 6e 76 6f 6c 76  |em (those involv|
0001c3a0  69 6e 67 20 49 52 51 20  63 61 6c 6c 73 20 69 6e  |ing IRQ calls in|
0001c3b0  20 70 61 72 74 69 63 75  6c 61 72 29 20 68 61 76  | particular) hav|
0001c3c0  65 20 6e 6f 77 68 65 72  65 20 74 6f 20 73 65 6e  |e nowhere to sen|
0001c3d0  64 20 74 68 65 20 65 72  72 6f 72 20 74 6f 2e 2e  |d the error to..|
0001c3e0  2e 0a 0a 0a 46 6f 72 20  72 65 74 75 72 6e 69 6e  |....For returnin|
0001c3f0  67 20 66 72 6f 6d 20 61  20 76 65 63 74 6f 72 65  |g from a vectore|
0001c400  64 20 72 6f 75 74 69 6e  65 2c 20 74 68 65 72 65  |d routine, there|
0001c410  20 61 72 65 20 74 77 6f  20 6d 65 74 68 6f 64 73  | are two methods|
0001c420  3a 0a 2a 09 50 61 73 73  69 6e 67 20 6f 6e 20 74  |:.*.Passing on t|
0001c430  68 65 20 63 61 6c 6c 09  3a 09 52 65 74 75 72 6e  |he call.:.Return|
0001c440  20 62 79 20 4d 4f 56 53  20 50 43 2c 52 31 34 20  | by MOVS PC,R14 |
0001c450  74 6f 20 74 68 65 20 70  72 65 76 69 6f 75 73 20  |to the previous |
0001c460  6f 77 6e 65 72 2c 20 62  65 63 61 75 73 65 20 79  |owner, because y|
0001c470  6f 75 20 6d 75 73 74 20  70 72 65 73 65 72 76 65  |ou must preserve|
0001c480  20 74 68 65 20 56 20 61  6e 64 20 74 68 65 20 43  | the V and the C|
0001c490  20 66 6c 61 67 73 2e 0a  2a 09 49 6e 74 65 72 63  | flags..*.Interc|
0001c4a0  65 70 69 6e 67 20 74 68  65 20 63 61 6c 6c 09 3a  |eping the call.:|
0001c4b0  09 59 6f 75 20 73 68 6f  75 6c 64 20 70 75 6c 6c  |.You should pull|
0001c4c0  20 61 6e 20 65 78 69 74  20 61 64 64 72 65 73 73  | an exit address|
0001c4d0  20 28 77 68 69 63 68 20  68 61 73 20 62 65 65 6e  | (which has been|
0001c4e0  20 73 65 74 20 62 79 20  52 49 53 43 20 4f 53 29  | set by RISC OS)|
0001c4f0  20 66 72 6f 6d 20 74 68  65 20 73 74 61 63 6b 20  | from the stack |
0001c500  77 69 74 68 20 4c 44 4d  46 44 20 52 31 33 21 2c  |with LDMFD R13!,|
0001c510  5c 7b 50 43 7d 2e 00 00  44 41 54 41 6c 05 00 00  |\{PC}...DATAl...|
0001c520  4c 69 73 74 20 6f 66 20  53 6f 66 74 77 61 72 65  |List of Software|
0001c530  20 56 65 63 74 6f 72 73  0a 56 65 63 74 6f 72 09  | Vectors.Vector.|
0001c540  09 09 4e 6f 09 44 65 73  63 72 69 70 74 69 6f 6e  |..No.Description|
0001c550  20 6f 66 20 76 65 63 74  6f 72 0a 23 4c 69 6e 65  | of vector.#Line|
0001c560  0a 55 73 65 72 56 09 09  09 30 30 09 55 73 65 72  |.UserV...00.User|
0001c570  20 28 72 65 73 65 72 76  65 64 29 0a 45 72 72 6f  | (reserved).Erro|
0001c580  72 56 09 09 09 30 31 09  45 72 72 6f 72 20 28 3c  |rV...01.Error (<|
0001c590  4f 53 5f 47 65 6e 65 72  61 74 65 45 72 72 6f 72  |OS_GenerateError|
0001c5a0  3e 29 0a 49 72 71 56 09  09 09 30 32 09 49 6e 74  |>).IrqV...02.Int|
0001c5b0  65 72 72 75 70 74 0a 57  72 63 68 56 09 09 09 30  |errupt.WrchV...0|
0001c5c0  33 09 57 72 69 74 65 20  63 68 61 72 61 63 74 65  |3.Write characte|
0001c5d0  72 20 28 3c 4f 53 5f 57  72 69 74 65 43 3e 29 0a  |r (<OS_WriteC>).|
0001c5e0  52 65 61 64 43 56 09 09  09 30 34 09 52 65 61 64  |ReadCV...04.Read|
0001c5f0  20 63 68 61 72 61 63 74  65 72 20 28 3c 4f 53 5f  | character (<OS_|
0001c600  52 65 61 64 43 3e 29 0a  43 4c 49 56 09 09 09 30  |ReadC>).CLIV...0|
0001c610  35 09 43 6f 6d 6d 61 6e  64 20 6c 69 6e 65 20 69  |5.Command line i|
0001c620  6e 74 65 72 70 72 65 74  65 72 20 28 3c 4f 53 5f  |nterpreter (<OS_|
0001c630  43 4c 49 3e 29 0a 42 79  74 65 56 09 09 09 30 36  |CLI>).ByteV...06|
0001c640  09 4f 53 5f 42 79 74 65  20 69 6e 64 69 72 65 63  |.OS_Byte indirec|
0001c650  74 69 6f 6e 20 28 3c 4f  53 5f 42 79 74 65 3e 29  |tion (<OS_Byte>)|
0001c660  0a 57 6f 72 64 56 09 09  09 30 37 09 4f 53 5f 57  |.WordV...07.OS_W|
0001c670  6f 72 64 20 69 6e 64 69  72 65 63 74 69 6f 6e 20  |ord indirection |
0001c680  28 3c 4f 53 5f 57 6f 72  64 3e 29 0a 46 69 6c 65  |(<OS_Word>).File|
0001c690  56 09 09 09 30 38 09 46  69 6c 65 20 72 65 61 64  |V...08.File read|
0001c6a0  2f 77 72 69 74 65 20 28  3c 4f 53 5f 46 69 6c 65  |/write (<OS_File|
0001c6b0  3e 29 0a 41 72 67 73 56  09 09 09 30 39 09 46 69  |>).ArgsV...09.Fi|
0001c6c0  6c 65 20 61 72 67 75 6d  65 6e 74 73 20 72 65 61  |le arguments rea|
0001c6d0  64 2f 77 72 69 74 65 20  28 3c 4f 53 5f 41 72 67  |d/write (<OS_Arg|
0001c6e0  73 3e 29 0a 42 47 65 74  56 09 09 09 30 41 09 46  |s>).BGetV...0A.F|
0001c6f0  69 6c 65 20 62 79 74 65  20 72 65 61 64 20 28 3c  |ile byte read (<|
0001c700  4f 53 5f 42 47 65 74 3e  29 0a 42 50 75 74 56 09  |OS_BGet>).BPutV.|
0001c710  09 09 30 42 09 46 69 6c  65 20 62 79 74 65 20 70  |..0B.File byte p|
0001c720  75 74 20 28 3c 4f 53 5f  42 50 75 74 3e 29 0a 47  |ut (<OS_BPut>).G|
0001c730  42 50 42 56 09 09 09 30  43 09 46 69 6c 65 20 62  |BPBV...0C.File b|
0001c740  79 74 65 20 62 6c 6f 63  6b 20 67 65 74 2f 70 75  |yte block get/pu|
0001c750  74 20 28 3c 4f 53 5f 47  42 50 42 3e 29 0a 46 69  |t (<OS_GBPB>).Fi|
0001c760  6e 64 56 09 09 09 30 44  09 46 69 6c 65 20 6f 70  |ndV...0D.File op|
0001c770  65 6e 20 28 3c 4f 53 5f  46 69 6e 64 3e 29 0a 52  |en (<OS_Find>).R|
0001c780  65 61 64 4c 69 6e 65 56  09 09 30 45 09 52 65 61  |eadLineV..0E.Rea|
0001c790  64 20 61 20 6c 69 6e 65  20 6f 66 20 74 65 78 74  |d a line of text|
0001c7a0  20 28 3c 4f 53 5f 52 65  61 64 4c 69 6e 65 3e 29  | (<OS_ReadLine>)|
0001c7b0  0a 46 53 43 6f 6e 74 72  6f 6c 56 09 09 30 46 09  |.FSControlV..0F.|
0001c7c0  46 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 63 6f  |Filing system co|
0001c7d0  6e 74 72 6f 6c 20 28 3c  4f 53 5f 46 53 43 6f 6e  |ntrol (<OS_FSCon|
0001c7e0  74 72 6f 6c 3e 29 0a 3c  45 76 65 6e 74 56 3d 3e  |trol>).<EventV=>|
0001c7f0  4f 53 5f 65 76 65 6e 74  76 3e 09 31 30 09 45 76  |OS_eventv>.10.Ev|
0001c800  65 6e 74 20 76 65 63 74  6f 72 20 28 3c 4f 53 5f  |ent vector (<OS_|
0001c810  47 65 6e 65 72 61 74 65  45 76 65 6e 74 3e 29 0a  |GenerateEvent>).|
0001c820  3c 49 6e 73 56 3d 3e 4f  53 5f 69 6e 73 76 3e 09  |<InsV=>OS_insv>.|
0001c830  09 31 34 09 42 75 66 66  65 72 20 69 6e 73 65 72  |.14.Buffer inser|
0001c840  74 20 28 3c 4f 53 5f 42  79 74 65 3e 29 0a 52 65  |t (<OS_Byte>).Re|
0001c850  6d 56 09 09 09 31 35 09  42 75 66 66 65 72 20 72  |mV...15.Buffer r|
0001c860  65 6d 6f 76 65 20 28 3c  4f 53 5f 42 79 74 65 3e  |emove (<OS_Byte>|
0001c870  29 0a 43 6e 70 56 09 09  09 31 36 09 43 6f 75 6e  |).CnpV...16.Coun|
0001c880  74 2f 50 75 72 67 65 20  42 75 66 66 65 72 20 28  |t/Purge Buffer (|
0001c890  3c 4f 53 5f 42 79 74 65  3e 29 0a 55 4b 56 44 55  |<OS_Byte>).UKVDU|
0001c8a0  32 33 56 09 09 31 37 09  55 6e 6b 6e 6f 77 6e 20  |23V..17.Unknown |
0001c8b0  56 44 55 32 33 20 28 3c  4f 53 5f 57 72 69 74 65  |VDU23 (<OS_Write|
0001c8c0  43 3e 29 0a 55 4b 53 57  49 56 09 09 09 31 38 09  |C>).UKSWIV...18.|
0001c8d0  55 6e 6b 6e 6f 77 6e 20  53 57 49 20 28 53 57 49  |Unknown SWI (SWI|
0001c8e0  29 0a 55 4b 50 4c 4f 54  56 09 09 09 31 39 09 55  |).UKPLOTV...19.U|
0001c8f0  6e 6b 6e 6f 77 6e 20 56  44 55 32 35 0a 4d 6f 75  |nknown VDU25.Mou|
0001c900  73 65 56 09 09 09 31 41  09 4d 6f 75 73 65 20 28  |seV...1A.Mouse (|
0001c910  3c 4f 53 5f 4d 6f 75 73  65 3e 29 0a 56 44 55 58  |<OS_Mouse>).VDUX|
0001c920  56 09 09 09 31 42 09 56  44 55 20 28 3c 4f 53 5f  |V...1B.VDU (<OS_|
0001c930  57 72 69 74 65 43 3e 29  0a 54 69 63 6b 65 72 56  |WriteC>).TickerV|
0001c940  09 09 09 31 43 09 31 30  30 48 7a 20 70 61 63 65  |...1C.100Hz pace|
0001c950  6d 61 6b 65 72 0a 3c 55  70 43 61 6c 6c 56 3d 3e  |maker.<UpCallV=>|
0001c960  4f 53 5f 55 70 43 61 6c  6c 52 65 61 73 6f 6e 73  |OS_UpCallReasons|
0001c970  3e 09 31 44 09 57 61 72  6e 69 6e 67 20 76 65 63  |>.1D.Warning vec|
0001c980  74 6f 72 0a 43 68 61 6e  67 65 45 6e 76 69 72 6f  |tor.ChangeEnviro|
0001c990  6e 6d 65 6e 74 56 09 31  45 09 45 6e 76 69 72 6f  |nmentV.1E.Enviro|
0001c9a0  6e 6d 65 6e 74 20 63 68  61 6e 67 65 20 28 3c 4f  |nment change (<O|
0001c9b0  53 5f 43 68 61 6e 67 65  45 6e 76 69 72 6f 6e 6d  |S_ChangeEnvironm|
0001c9c0  65 6e 74 3e 29 0a 53 70  72 69 74 65 56 09 09 09  |ent>).SpriteV...|
0001c9d0  31 46 09 4f 53 5f 53 70  72 69 74 65 4f 70 20 69  |1F.OS_SpriteOp i|
0001c9e0  6e 64 69 72 65 63 74 69  6f 6e 0a 44 72 61 77 56  |ndirection.DrawV|
0001c9f0  09 09 09 32 30 09 44 72  61 77 20 53 57 49 20 28  |...20.Draw SWI (|
0001ca00  3c 44 72 61 77 5f 78 78  3d 3e 44 72 61 77 5f 3e  |<Draw_xx=>Draw_>|
0001ca10  29 0a 45 63 6f 6e 65 74  56 09 09 09 32 31 09 45  |).EconetV...21.E|
0001ca20  63 6f 6e 65 74 20 61 63  74 69 76 69 74 79 20 28  |conet activity (|
0001ca30  3c 45 63 6f 6e 65 74 5f  78 78 3d 3e 45 63 6f 6e  |<Econet_xx=>Econ|
0001ca40  65 74 5f 3e 29 0a 43 6f  6c 6f 75 72 56 09 09 09  |et_>).ColourV...|
0001ca50  32 32 09 43 6f 6c 6f 75  72 54 72 61 6e 73 20 53  |22.ColourTrans S|
0001ca60  57 49 20 28 3c 43 6f 6c  6f 75 72 54 72 61 6e 73  |WI (<ColourTrans|
0001ca70  5f 78 78 3d 3e 43 6f 6c  6f 75 72 54 72 61 6e 73  |_xx=>ColourTrans|
0001ca80  5f 3e 29 0a 44 41 54 41  19 01 00 00 4f 53 5f 47  |_>).DATA....OS_G|
0001ca90  65 6e 65 72 61 74 65 45  76 65 6e 74 20 20 28 26  |enerateEvent  (&|
0001caa0  32 32 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |22).#Parent OS_.|
0001cab0  3d 3e 09 52 30 20 3d 09  3c 65 76 65 6e 74 20 6e  |=>.R0 =.<event n|
0001cac0  75 6d 62 65 72 3d 3e 4f  53 5f 45 76 65 6e 74 73  |umber=>OS_Events|
0001cad0  3e 0a 09 52 31 2e 2e 2e  20 65 76 65 6e 74 20 70  |>..R1... event p|
0001cae0  61 72 61 6d 65 74 65 72  73 0a 0a 3c 3d 09 61 6c  |arameters..<=.al|
0001caf0  6c 20 72 65 67 69 73 74  65 72 73 20 70 72 65 73  |l registers pres|
0001cb00  65 72 76 65 64 0a 0a 4e  6f 74 65 20 74 68 61 74  |erved..Note that|
0001cb10  2c 20 61 73 20 75 73 75  61 6c 2c 20 74 68 65 20  |, as usual, the |
0001cb20  65 76 65 6e 74 20 76 65  63 74 6f 72 20 77 69 6c  |event vector wil|
0001cb30  6c 20 6f 6e 6c 79 20 62  65 20 63 61 6c 6c 65 64  |l only be called|
0001cb40  20 69 66 20 74 68 65 20  65 76 65 6e 74 20 6e 75  | if the event nu|
0001cb50  6d 62 65 72 20 67 69 76  65 6e 20 69 6e 20 52 30  |mber given in R0|
0001cb60  20 68 61 73 20 70 72 65  76 69 6f 75 73 6c 79 20  | has previously |
0001cb70  62 65 65 6e 20 65 6e 61  62 6c 65 64 20 75 73 69  |been enabled usi|
0001cb80  6e 67 20 3c 4f 53 5f 42  79 74 65 20 31 34 3d 3e  |ng <OS_Byte 14=>|
0001cb90  6f 73 5f 62 79 74 65 30  31 34 3e 2e 0a 00 00 00  |os_byte014>.....|
0001cba0  44 41 54 41 00 02 00 00  45 76 65 6e 74 20 76 65  |DATA....Event ve|
0001cbb0  63 74 6f 72 0a 3d 3e 09  52 30 20 3d 20 3c 45 76  |ctor.=>.R0 = <Ev|
0001cbc0  65 6e 74 20 6e 75 6d 62  65 72 3d 3e 6f 73 5f 65  |ent number=>os_e|
0001cbd0  76 65 6e 74 73 3e 0a 09  4f 74 68 65 72 20 72 65  |vents>..Other re|
0001cbe0  67 69 73 74 65 72 73 20  64 65 70 65 6e 64 61 6e  |gisters dependan|
0001cbf0  74 20 6f 6e 20 63 61 6c  6c 0a 0a 57 68 65 6e 20  |t on call..When |
0001cc00  63 61 6c 6c 65 64 2c 20  41 4c 4c 20 65 76 65 6e  |called, ALL even|
0001cc10  74 20 6e 75 6d 62 65 72  73 20 61 72 65 20 70 61  |t numbers are pa|
0001cc20  73 73 65 64 20 74 6f 20  74 68 65 20 72 6f 75 74  |ssed to the rout|
0001cc30  69 6e 65 20 73 70 65 63  69 66 69 65 64 20 69 66  |ine specified if|
0001cc40  20 74 68 65 79 20 61 72  65 20 65 6e 61 62 6c 65  | they are enable|
0001cc50  64 2e 20 54 68 65 72 65  66 6f 72 65 20 69 74 20  |d. Therefore it |
0001cc60  69 73 20 76 69 74 61 6c  20 74 68 61 74 20 79 6f  |is vital that yo|
0001cc70  75 20 63 68 65 63 6b 20  77 68 65 74 68 65 72 20  |u check whether |
0001cc80  74 68 65 20 65 76 65 6e  74 20 6e 75 6d 62 65 72  |the event number|
0001cc90  20 69 73 20 74 68 65 20  73 61 6d 65 20 61 73 20  | is the same as |
0001cca0  74 68 61 74 20 77 68 69  63 68 20 79 6f 75 20 77  |that which you w|
0001ccb0  69 73 68 20 74 6f 20 72  65 63 65 69 76 65 20 28  |ish to receive (|
0001ccc0  61 6e 20 65 78 61 6d 70  6c 65 20 6f 66 20 6e 6f  |an example of no|
0001ccd0  74 20 64 6f 69 6e 67 20  74 68 69 73 20 61 72 65  |t doing this are|
0001cce0  20 74 68 65 20 43 6f 63  6f 6e 69 7a 65 72 20 74  | the Coconizer t|
0001ccf0  75 6e 65 20 6d 6f 64 75  6c 65 73 20 77 68 69 63  |une modules whic|
0001cd00  68 20 73 70 65 65 64 20  75 70 20 6f 6e 20 6b 65  |h speed up on ke|
0001cd10  79 20 70 72 65 73 73 65  73 20 62 65 63 61 75 73  |y presses becaus|
0001cd20  65 20 4b 65 79 20 54 72  61 6e 73 69 74 69 6f 6e  |e Key Transition|
0001cd30  20 69 73 20 65 6e 61 62  6c 65 64 29 0a 0a 45 76  | is enabled)..Ev|
0001cd40  65 6e 74 73 20 73 68 6f  75 6c 64 20 62 65 20 65  |ents should be e|
0001cd50  6e 61 62 6c 65 64 20 77  69 74 68 20 3c 4f 53 5f  |nabled with <OS_|
0001cd60  42 79 74 65 20 31 34 3d  3e 6f 73 5f 62 79 74 65  |Byte 14=>os_byte|
0001cd70  30 31 34 3e 20 61 6e 64  20 64 69 73 61 62 6c 65  |014> and disable|
0001cd80  64 20 77 69 74 68 20 3c  4f 53 5f 42 79 74 65 20  |d with <OS_Byte |
0001cd90  31 33 3d 3e 6f 73 5f 62  79 74 65 30 31 33 3e 2e  |13=>os_byte013>.|
0001cda0  44 41 54 41 c6 01 00 00  4f 53 5f 53 70 72 69 74  |DATA....OS_Sprit|
0001cdb0  65 4f 70 20 20 28 26 32  45 29 0a 23 50 61 72 65  |eOp  (&2E).#Pare|
0001cdc0  6e 74 20 4f 53 5f 0a 3d  3e 20 52 30 20 3d 20 3c  |nt OS_.=> R0 = <|
0001cdd0  72 65 61 73 6f 6e 20 63  6f 64 65 3d 3e 6f 73 5f  |reason code=>os_|
0001cde0  73 70 72 69 74 65 6f 70  5f 52 65 61 73 6f 6e 3e  |spriteop_Reason>|
0001cdf0  0a 0a 54 68 69 73 20 53  57 49 20 63 6f 6e 74 72  |..This SWI contr|
0001ce00  6f 6c 73 20 74 68 65 20  73 70 72 69 74 65 20 73  |ols the sprite s|
0001ce10  79 73 74 65 6d 2e 20 52  31 20 61 6e 64 20 52 32  |ystem. R1 and R2|
0001ce20  20 69 73 20 6f 66 74 65  6e 20 75 73 65 64 20 74  | is often used t|
0001ce30  6f 20 73 65 6c 65 63 74  20 61 20 73 70 72 69 74  |o select a sprit|
0001ce40  65 2e 20 57 68 65 6e 20  74 68 65 79 20 61 72 65  |e. When they are|
0001ce50  2c 20 74 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  |, the following |
0001ce60  61 70 70 6c 69 65 73 20  3a 0a 0a 52 30 20 62 69  |applies :..R0 bi|
0001ce70  74 73 0a 38 20 26 20 39  09 09 52 31 09 09 09 09  |ts.8 & 9..R1....|
0001ce80  52 32 0a 23 4c 69 6e 65  0a 30 30 20 28 2b 20 20  |R2.#Line.00 (+  |
0001ce90  30 29 09 20 09 09 09 09  73 70 72 69 74 65 20 6e  |0). ....sprite n|
0001cea0  61 6d 65 0a 30 31 20 28  2b 32 35 36 29 09 3c 73  |ame.01 (+256).<s|
0001ceb0  70 72 69 74 65 20 61 72  65 61 3d 3e 6f 73 5f 73  |prite area=>os_s|
0001cec0  70 72 69 74 65 6f 70 5f  41 72 65 61 3e 09 73 70  |priteop_Area>.sp|
0001ced0  72 69 74 65 20 6e 61 6d  65 0a 31 30 20 28 2b 35  |rite name.10 (+5|
0001cee0  31 32 29 09 3c 73 70 72  69 74 65 20 61 72 65 61  |12).<sprite area|
0001cef0  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 41 72  |=>os_spriteop_Ar|
0001cf00  65 61 3e 09 3c 73 70 72  69 74 65 20 70 74 72 3d  |ea>.<sprite ptr=|
0001cf10  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 70 74 72  |>os_spriteop_ptr|
0001cf20  3e 0a 0a 49 6e 20 74 68  65 20 66 69 72 73 74 20  |>..In the first |
0001cf30  63 61 73 65 2c 20 74 68  65 20 73 79 73 74 65 6d  |case, the system|
0001cf40  20 73 70 72 69 74 65 20  61 72 65 61 20 69 73 20  | sprite area is |
0001cf50  75 73 65 64 2e 20 44 6f  20 6e 6f 74 20 75 73 65  |used. Do not use|
0001cf60  20 74 68 69 73 2e 00 00  44 41 54 41 c3 00 00 00  | this...DATA....|
0001cf70  4f 53 5f 4d 6f 75 73 65  20 20 28 26 31 43 29 0a  |OS_Mouse  (&1C).|
0001cf80  23 50 61 72 65 6e 74 20  4f 53 5f 0a 23 57 72 61  |#Parent OS_.#Wra|
0001cf90  70 20 4f 66 66 0a 5c 3c  3d 09 52 30 20 3d 20 78  |p Off.\<=.R0 = x|
0001cfa0  20 63 6f 2d 6f 72 64 69  6e 61 74 65 0a 09 52 31  | co-ordinate..R1|
0001cfb0  20 3d 20 79 20 63 6f 2d  6f 72 64 69 6e 61 74 65  | = y co-ordinate|
0001cfc0  0a 09 52 32 20 3d 20 3c  62 75 74 74 6f 6e 73 3d  |..R2 = <buttons=|
0001cfd0  3e 4f 53 5f 6d 6f 75 73  65 62 75 74 74 6f 6e 73  |>OS_mousebuttons|
0001cfe0  3e 0a 09 52 33 20 3d 20  74 69 6d 65 20 6f 66 20  |>..R3 = time of |
0001cff0  62 75 74 74 6f 6e 20 63  68 61 6e 67 65 2e 0a 09  |button change...|
0001d000  0a 54 68 69 73 20 53 57  49 20 72 65 74 75 72 6e  |.This SWI return|
0001d010  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 6d 6f  |s the current mo|
0001d020  75 73 65 20 73 74 61 74  75 73 2e 00 44 41 54 41  |use status..DATA|
0001d030  e6 02 00 00 4f 53 5f 43  68 61 6e 67 65 45 6e 76  |....OS_ChangeEnv|
0001d040  69 72 6f 6e 6d 65 6e 74  20 28 26 34 30 29 0a 23  |ironment (&40).#|
0001d050  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
0001d060  20 3d 09 3c 68 61 6e 64  6c 65 72 20 6e 75 6d 62  | =.<handler numb|
0001d070  65 72 3d 3e 4f 53 5f 68  61 6e 64 6c 65 72 73 3e  |er=>OS_handlers>|
0001d080  0a 09 52 31 20 3d 09 6e  65 77 20 61 64 64 72 65  |..R1 =.new addre|
0001d090  73 73 2c 20 6f 72 20 30  20 74 6f 20 72 65 61 64  |ss, or 0 to read|
0001d0a0  0a 09 52 32 20 3d 09 76  61 6c 75 65 20 6f 66 20  |..R2 =.value of |
0001d0b0  52 31 32 20 77 68 65 6e  20 63 6f 64 65 20 69 73  |R12 when code is|
0001d0c0  20 63 61 6c 6c 65 64 0a  09 52 33 20 3d 09 70 6f  | called..R3 =.po|
0001d0d0  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 20  |inter to buffer |
0001d0e0  69 66 20 61 70 70 72 6f  70 72 69 61 74 65 20 6f  |if appropriate o|
0001d0f0  72 20 30 20 74 6f 20 72  65 61 64 0a 0a 3c 3d 09  |r 0 to read..<=.|
0001d100  52 30 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  |R0 preserved..R1|
0001d110  20 3d 09 70 72 65 76 69  6f 75 73 20 61 64 64 72  | =.previous addr|
0001d120  65 73 73 0a 09 52 32 20  3d 09 70 72 65 76 69 6f  |ess..R2 =.previo|
0001d130  75 73 20 52 31 32 0a 09  52 33 20 3d 09 70 72 65  |us R12..R3 =.pre|
0001d140  76 69 6f 75 73 20 62 75  66 66 65 72 20 70 6f 69  |vious buffer poi|
0001d150  6e 74 65 72 0a 0a 54 68  69 73 20 69 73 20 61 20  |nter..This is a |
0001d160  73 69 6e 67 6c 65 20 72  6f 75 74 69 6e 65 20 77  |single routine w|
0001d170  68 69 63 68 20 70 65 72  66 6f 72 6d 73 20 74 68  |hich performs th|
0001d180  65 20 61 63 74 69 6f 6e  73 20 6f 66 20 3c 4f 53  |e actions of <OS|
0001d190  5f 43 6f 6e 74 72 6f 6c  3e 2c 20 3c 4f 53 5f 53  |_Control>, <OS_S|
0001d1a0  65 74 45 6e 76 3e 2c 20  3c 4f 53 5f 43 61 6c 6c  |etEnv>, <OS_Call|
0001d1b0  42 61 63 6b 3e 2c 20 3c  4f 53 5f 42 72 65 61 6b  |Back>, <OS_Break|
0001d1c0  43 74 72 6c 3e 20 61 6e  64 20 3c 4f 53 5f 55 6e  |Ctrl> and <OS_Un|
0001d1d0  75 73 65 64 53 57 49 3e  2e 20 49 6e 20 66 61 63  |usedSWI>. In fac|
0001d1e0  74 20 61 6c 6c 20 6f 66  20 74 68 6f 73 65 20 72  |t all of those r|
0001d1f0  6f 75 74 69 6e 65 73 20  75 73 65 20 74 68 69 73  |outines use this|
0001d200  20 63 61 6c 6c 20 61 6e  64 20 61 72 65 20 6f 6e  | call and are on|
0001d210  6c 79 20 6b 65 70 74 20  66 6f 72 20 62 61 63 6b  |ly kept for back|
0001d220  77 61 72 64 73 20 63 6f  6d 70 61 74 69 62 69 6c  |wards compatibil|
0001d230  69 74 79 2c 20 73 6f 20  79 6f 75 20 73 68 6f 75  |ity, so you shou|
0001d240  6c 64 20 75 73 65 20 74  68 69 73 20 63 61 6c 6c  |ld use this call|
0001d250  20 69 6e 20 70 72 65 66  65 72 65 6e 63 65 2e 0a  | in preference..|
0001d260  0a 4e 6f 74 65 2c 20 4f  53 5f 43 68 61 6e 67 65  |.Note, OS_Change|
0001d270  45 6e 76 69 72 6f 6e 6d  65 6e 74 20 76 65 63 74  |Environment vect|
0001d280  6f 72 73 20 74 68 72 6f  75 67 68 20 43 68 61 6e  |ors through Chan|
0001d290  67 65 45 6e 76 69 72 6f  6e 6d 65 6e 74 56 2e 20  |geEnvironmentV. |
0001d2a0  41 20 72 6f 75 69 6e 65  20 6c 69 6e 6b 65 64 20  |A rouine linked |
0001d2b0  69 6e 74 6f 20 74 68 69  73 20 76 65 63 74 6f 72  |into this vector|
0001d2c0  20 63 61 6e 20 73 74 6f  70 20 74 68 65 20 63 68  | can stop the ch|
0001d2d0  61 6e 67 65 20 66 72 6f  6d 20 68 61 70 70 65 6e  |ange from happen|
0001d2e0  69 6e 67 20 62 79 20 73  65 74 74 69 6e 67 20 52  |ing by setting R|
0001d2f0  31 20 74 6f 20 7a 65 72  6f 20 61 6e 64 20 70 61  |1 to zero and pa|
0001d300  73 73 69 6e 67 20 74 68  65 20 63 61 6c 6c 20 6f  |ssing the call o|
0001d310  6e 2e 00 00 44 41 54 41  34 03 00 00 53 79 73 74  |n...DATA4...Syst|
0001d320  65 6d 20 63 6f 6e 74 72  6f 6c 20 68 61 6e 64 6c  |em control handl|
0001d330  65 72 73 0a 4e 75 6d 62  65 72 09 4d 65 61 6e 69  |ers.Number.Meani|
0001d340  6e 67 0a 23 4c 69 6e 65  0a 30 09 3c 4d 65 6d 6f  |ng.#Line.0.<Memo|
0001d350  72 79 20 6c 69 6d 69 74  3d 3e 2e 6c 69 6d 69 74  |ry limit=>.limit|
0001d360  3e 0a 31 09 55 6e 64 65  66 69 6e 65 64 20 69 6e  |>.1.Undefined in|
0001d370  73 74 72 75 63 74 69 6f  6e 0a 32 09 50 72 65 66  |struction.2.Pref|
0001d380  65 74 63 68 20 61 62 6f  72 74 0a 33 09 44 61 74  |etch abort.3.Dat|
0001d390  61 20 61 62 6f 72 74 0a  34 09 41 64 64 72 65 73  |a abort.4.Addres|
0001d3a0  73 20 65 78 63 65 70 74  69 6f 6e 0a 35 09 4f 74  |s exception.5.Ot|
0001d3b0  68 65 72 20 65 78 63 65  70 74 69 6f 6e 73 20 28  |her exceptions (|
0001d3c0  72 65 73 65 72 76 65 64  29 0a 36 09 45 72 72 6f  |reserved).6.Erro|
0001d3d0  72 0a 37 09 43 61 6c 6c  20 62 61 63 6b 0a 38 09  |r.7.Call back.8.|
0001d3e0  42 72 65 61 6b 20 70 6f  69 6e 74 0a 39 09 45 73  |Break point.9.Es|
0001d3f0  63 61 70 65 0a 31 30 09  45 76 65 6e 74 0a 31 31  |cape.10.Event.11|
0001d400  09 45 78 69 74 0a 31 32  09 55 6e 75 73 65 64 20  |.Exit.12.Unused |
0001d410  53 57 49 0a 31 33 09 3c  45 78 63 65 70 74 69 6f  |SWI.13.<Exceptio|
0001d420  6e 20 72 65 67 69 73 74  65 72 73 3d 3e 2e 72 65  |n registers=>.re|
0001d430  67 69 73 74 65 72 73 3e  0a 31 34 09 3c 41 70 70  |gisters>.14.<App|
0001d440  6c 69 63 61 74 69 6f 6e  20 73 70 61 63 65 3d 3e  |lication space=>|
0001d450  2e 61 70 70 73 70 61 63  65 3e 0a 31 35 09 43 75  |.appspace>.15.Cu|
0001d460  72 72 65 6e 74 6c 79 20  61 63 74 69 76 65 20 6f  |rrently active o|
0001d470  62 6a 65 63 74 0a 31 36  09 55 70 20 43 61 6c 6c  |bject.16.Up Call|
0001d480  0a 23 53 75 62 70 61 67  65 20 6c 69 6d 69 74 0a  |.#Subpage limit.|
0001d490  4d 65 6d 6f 72 79 20 6c  69 6d 69 74 0a 54 68 69  |Memory limit.Thi|
0001d4a0  73 20 69 73 20 74 68 65  20 6d 61 78 69 6d 75 6d  |s is the maximum|
0001d4b0  20 70 65 72 6d 69 74 74  65 64 20 52 41 4d 20 6c  | permitted RAM l|
0001d4c0  69 6d 69 74 2c 20 61 73  20 75 73 65 64 20 62 79  |imit, as used by|
0001d4d0  20 3c 4f 53 5f 47 65 74  45 6e 76 3e 2e 0a 23 53  | <OS_GetEnv>..#S|
0001d4e0  75 62 70 61 67 65 20 61  70 70 73 70 61 63 65 0a  |ubpage appspace.|
0001d4f0  41 70 70 6c 69 63 61 74  69 6f 6e 20 73 70 61 63  |Application spac|
0001d500  65 0a 54 68 69 73 20 69  73 20 74 68 65 20 61 6d  |e.This is the am|
0001d510  6f 75 6e 74 20 6f 66 20  72 65 61 64 2f 77 72 69  |ount of read/wri|
0001d520  74 65 20 6d 65 6d 6f 72  79 20 69 6e 20 61 70 70  |te memory in app|
0001d530  6c 69 63 61 74 69 6f 6e  20 73 70 61 63 65 2e 20  |lication space. |
0001d540  43 6f 6e 73 65 71 75 65  6e 74 6c 79 20 69 74 20  |Consequently it |
0001d550  73 68 6f 75 6c 64 20 61  6c 77 61 79 73 20 62 65  |should always be|
0001d560  20 74 68 65 20 63 61 73  65 20 74 68 61 74 20 41  | the case that A|
0001d570  70 70 6c 69 63 61 74 69  6f 6e 20 73 70 61 63 65  |pplication space|
0001d580  20 3e 3d 20 4d 65 6d 6f  72 79 20 4c 69 6d 69 74  | >= Memory Limit|
0001d590  2e 0a 23 53 75 62 70 61  67 65 20 72 65 67 69 73  |..#Subpage regis|
0001d5a0  74 65 72 73 0a 45 78 63  65 70 74 69 6f 6e 20 72  |ters.Exception r|
0001d5b0  65 67 69 73 74 65 72 73  0a 54 68 69 73 20 69 73  |egisters.This is|
0001d5c0  20 74 68 65 20 61 64 64  72 65 73 73 20 6f 66 20  | the address of |
0001d5d0  74 68 65 20 61 72 65 61  20 69 6e 20 6d 65 6d 6f  |the area in memo|
0001d5e0  72 79 20 77 68 65 72 65  20 74 68 65 20 72 65 67  |ry where the reg|
0001d5f0  69 73 74 65 72 73 20 61  72 65 20 64 75 6d 70 65  |isters are dumpe|
0001d600  64 2c 20 77 68 65 6e 20  6f 6e 65 20 6f 66 20 74  |d, when one of t|
0001d610  68 65 20 65 78 63 65 70  74 69 6f 6e 73 20 6f 63  |he exceptions oc|
0001d620  63 75 72 73 2c 20 69 66  20 74 68 65 20 64 65 66  |curs, if the def|
0001d630  61 75 6c 74 20 68 61 6e  64 6c 65 72 73 20 61 72  |ault handlers ar|
0001d640  65 20 75 73 65 64 2e 0a  44 41 54 41 34 01 00 00  |e used..DATA4...|
0001d650  49 6e 73 65 72 74 20 76  65 63 74 6f 72 20 28 26  |Insert vector (&|
0001d660  31 34 29 0a 3d 3e 09 52  31 20 3d 20 62 75 66 66  |14).=>.R1 = buff|
0001d670  65 72 20 6e 75 6d 62 65  72 2c 20 62 69 74 20 33  |er number, bit 3|
0001d680  31 20 73 65 74 20 66 6f  72 20 62 6c 6f 63 6b 20  |1 set for block |
0001d690  69 6e 73 65 72 74 0a 09  52 39 20 3d 20 26 31 34  |insert..R9 = &14|
0001d6a0  0a 0a 09 49 66 20 73 69  6e 67 6c 65 20 62 79 74  |...If single byt|
0001d6b0  65 20 3a 0a 09 52 30 20  3d 20 62 79 74 65 0a 5c  |e :..R0 = byte.\|
0001d6c0  3c 3d 09 52 32 20 63 6f  72 72 75 70 74 0a 0a 09  |<=.R2 corrupt...|
0001d6d0  49 66 20 62 6c 6f 63 6b  20 69 6e 73 65 72 74 20  |If block insert |
0001d6e0  3a 0a 09 52 32 20 3d 20  70 6f 69 6e 74 65 72 20  |:..R2 = pointer |
0001d6f0  74 6f 20 64 61 74 61 0a  09 52 33 20 3d 20 6c 65  |to data..R3 = le|
0001d700  6e 67 74 68 20 6f 66 20  64 61 74 61 0a 5c 3c 3d  |ngth of data.\<=|
0001d710  09 52 32 20 3d 20 70 6f  69 6e 74 65 72 20 74 6f  |.R2 = pointer to|
0001d720  20 65 6e 64 20 6f 66 20  64 61 74 61 0a 09 52 33  | end of data..R3|
0001d730  20 63 6f 72 72 75 70 74  0a 0a 41 6c 6c 20 63 68  | corrupt..All ch|
0001d740  61 72 61 63 74 65 72 73  20 69 6e 73 65 72 74 65  |aracters inserte|
0001d750  64 20 69 6e 74 6f 20 62  75 66 66 65 72 73 20 61  |d into buffers a|
0001d760  72 65 20 73 65 6e 74 20  74 68 72 6f 75 67 68 20  |re sent through |
0001d770  74 68 69 73 20 76 65 63  74 6f 72 2e 44 41 54 41  |this vector.DATA|
0001d780  76 03 00 00 45 76 65 6e  74 20 6e 75 6d 62 65 72  |v...Event number|
0001d790  73 0a 5c 23 09 44 65 73  63 72 69 70 74 69 6f 6e  |s.\#.Description|
0001d7a0  0a 23 4c 69 6e 65 0a 30  09 4f 75 74 70 75 74 20  |.#Line.0.Output |
0001d7b0  62 75 66 66 65 72 20 68  61 73 20 62 65 63 6f 6d  |buffer has becom|
0001d7c0  65 20 65 6d 70 74 79 0a  31 09 49 6e 70 75 74 20  |e empty.1.Input |
0001d7d0  62 75 66 66 65 72 20 68  61 73 20 62 65 63 6f 6d  |buffer has becom|
0001d7e0  65 20 66 75 6c 6c 0a 32  09 43 68 61 72 61 63 74  |e full.2.Charact|
0001d7f0  65 72 20 70 6c 61 63 65  64 20 69 6e 20 69 6e 70  |er placed in inp|
0001d800  75 74 20 62 75 66 66 65  72 0a 33 09 41 44 43 20  |ut buffer.3.ADC |
0001d810  63 6f 6e 76 65 72 73 69  6f 6e 20 65 6e 64 65 64  |conversion ended|
0001d820  20 69 6e 20 42 42 43 20  49 2f 4f 20 65 78 70 61  | in BBC I/O expa|
0001d830  6e 73 69 6f 6e 20 63 61  72 64 0a 34 09 56 53 79  |nsion card.4.VSy|
0001d840  6e 63 20 45 76 65 6e 74  0a 35 09 49 6e 74 65 72  |nc Event.5.Inter|
0001d850  76 61 6c 20 74 69 6d 65  72 20 68 61 73 20 63 72  |val timer has cr|
0001d860  6f 73 73 65 64 20 7a 65  72 6f 0a 36 09 45 73 63  |ossed zero.6.Esc|
0001d870  61 70 65 20 63 6f 6e 64  69 74 69 6f 6e 20 68 61  |ape condition ha|
0001d880  73 20 62 65 65 6e 20 64  65 74 65 63 74 65 64 0a  |s been detected.|
0001d890  37 09 53 65 72 69 61 6c  20 52 53 34 32 33 20 65  |7.Serial RS423 e|
0001d8a0  72 72 6f 72 20 68 61 73  20 62 65 65 6e 20 64 65  |rror has been de|
0001d8b0  74 65 63 74 65 64 0a 38  09 45 63 6f 6e 65 74 20  |tected.8.Econet |
0001d8c0  75 73 65 72 20 72 65 6d  6f 74 65 20 70 72 6f 63  |user remote proc|
0001d8d0  65 64 75 72 65 20 63 61  6c 6c 65 64 0a 39 09 55  |edure called.9.U|
0001d8e0  73 65 72 20 68 61 73 20  67 65 6e 65 72 61 74 65  |ser has generate|
0001d8f0  64 20 61 6e 20 65 76 65  6e 74 0a 31 30 09 3c 4d  |d an event.10.<M|
0001d900  6f 75 73 65 20 74 72 61  6e 73 69 74 69 6f 6e 3d  |ouse transition=|
0001d910  3e 65 76 65 6e 74 5f 31  30 3e 0a 31 31 09 3c 4b  |>event_10>.11.<K|
0001d920  65 79 20 74 72 61 6e 73  69 74 69 6f 6e 3d 3e 65  |ey transition=>e|
0001d930  76 65 6e 74 5f 31 31 3e  0a 31 32 09 53 6f 75 6e  |vent_11>.12.Soun|
0001d940  64 20 73 79 73 74 65 6d  20 72 65 61 63 68 65 64  |d system reached|
0001d950  20 73 74 61 72 74 20 6f  66 20 61 20 62 61 72 0a  | start of a bar.|
0001d960  31 33 09 50 43 20 45 6d  75 6c 61 74 6f 72 20 65  |13.PC Emulator e|
0001d970  76 65 6e 74 0a 31 34 09  45 63 6f 6e 65 74 20 72  |vent.14.Econet r|
0001d980  65 63 69 65 76 65 20 63  6f 6d 70 6c 65 74 65 0a  |ecieve complete.|
0001d990  31 35 09 45 63 6f 6e 65  74 20 74 72 61 6e 73 6d  |15.Econet transm|
0001d9a0  69 74 20 63 6f 6d 70 6c  65 74 65 0a 31 36 09 45  |it complete.16.E|
0001d9b0  63 6f 6e 65 74 20 4f 53  20 72 65 6d 6f 74 65 20  |conet OS remote |
0001d9c0  70 72 6f 63 65 64 75 72  65 20 63 61 6c 6c 65 64  |procedure called|
0001d9d0  0a 31 37 09 4d 69 64 69  20 73 79 73 74 65 6d 20  |.17.Midi system |
0001d9e0  65 76 65 6e 74 0a 31 38  09 52 65 73 65 72 76 65  |event.18.Reserve|
0001d9f0  64 20 66 6f 72 20 65 78  74 65 72 6e 61 6c 20 64  |d for external d|
0001da00  65 76 65 6c 6f 70 65 72  73 0a 31 39 09 49 6e 74  |evelopers.19.Int|
0001da10  65 72 6e 65 74 20 65 76  65 6e 74 0a 32 30 09 52  |ernet event.20.R|
0001da20  65 73 65 72 76 65 64 20  66 6f 72 20 65 78 74 65  |eserved for exte|
0001da30  72 6e 61 6c 20 64 65 76  65 6c 6f 70 65 72 73 0a  |rnal developers.|
0001da40  32 31 09 52 65 73 65 72  76 65 64 20 66 6f 72 20  |21.Reserved for |
0001da50  65 78 74 65 72 6e 61 6c  20 64 65 76 65 6c 6f 70  |external develop|
0001da60  65 72 73 0a 32 32 09 44  65 76 69 63 65 20 6f 76  |ers.22.Device ov|
0001da70  65 72 72 75 6e 0a 32 33  09 52 65 73 65 72 76 65  |errun.23.Reserve|
0001da80  64 20 66 6f 72 20 65 78  74 65 72 6e 61 6c 20 64  |d for external d|
0001da90  65 76 65 6c 6f 70 65 72  73 0a 32 34 09 44 72 69  |evelopers.24.Dri|
0001daa0  76 65 72 20 72 65 63 69  65 76 65 64 20 66 72 61  |ver recieved fra|
0001dab0  6d 65 20 66 6f 72 20 49  6e 74 65 72 6e 65 74 0a  |me for Internet.|
0001dac0  32 35 09 44 72 69 76 65  72 20 63 6f 6d 70 6c 65  |25.Driver comple|
0001dad0  74 65 64 20 49 6e 74 65  72 6e 65 74 20 74 72 61  |ted Internet tra|
0001dae0  6e 73 6d 69 73 73 69 6f  6e 20 72 65 71 75 65 73  |nsmission reques|
0001daf0  74 0a 00 00 44 41 54 41  c2 01 00 00 4f 53 5f 43  |t...DATA....OS_C|
0001db00  6f 6e 66 69 72 6d 20 20  28 26 35 39 29 0a 23 50  |onfirm  (&59).#P|
0001db10  61 72 65 6e 74 20 4f 53  5f 0a 5c 3c 3d 09 52 30  |arent OS_.\<=.R0|
0001db20  20 3d 20 72 65 73 75 6c  74 0a 09 43 20 73 65 74  | = result..C set|
0001db30  20 69 66 20 65 73 63 61  70 65 20 70 72 65 73 73  | if escape press|
0001db40  65 64 0a 09 5a 20 73 65  74 20 69 66 20 72 65 73  |ed..Z set if res|
0001db50  75 6c 74 20 77 61 73 20  69 6e 20 61 6e 79 20 77  |ult was in any w|
0001db60  61 79 20 59 65 73 2e 0a  0a 54 68 69 73 20 63 61  |ay Yes...This ca|
0001db70  6c 6c 20 61 73 6b 73 20  74 68 65 20 75 73 65 72  |ll asks the user|
0001db80  20 66 6f 72 20 63 6f 6e  66 69 72 6d 61 74 69 6f  | for confirmatio|
0001db90  6e 20 6f 66 20 61 6e 20  61 63 74 69 6f 6e 20 62  |n of an action b|
0001dba0  79 20 63 68 61 6e 67 69  6e 67 20 74 68 65 20 70  |y changing the p|
0001dbb0  6f 69 6e 74 65 72 20 61  6e 64 20 77 61 69 74 69  |ointer and waiti|
0001dbc0  6e 67 20 75 6e 74 69 6c  20 61 20 6b 65 79 20 6f  |ng until a key o|
0001dbd0  72 20 6d 6f 75 73 65 20  62 75 74 74 6f 6e 20 69  |r mouse button i|
0001dbe0  73 20 70 72 65 73 73 65  64 2e 20 53 65 6c 65 63  |s pressed. Selec|
0001dbf0  74 20 72 65 74 75 72 6e  73 20 74 68 65 20 76 61  |t returns the va|
0001dc00  6c 75 65 20 31 32 31 20  28 63 68 61 72 61 63 74  |lue 121 (charact|
0001dc10  65 72 20 79 29 2c 20 4d  65 6e 75 20 61 6e 64 20  |er y), Menu and |
0001dc20  41 64 6a 75 73 74 20 72  65 74 75 72 6e 20 31 31  |Adjust return 11|
0001dc30  30 20 28 63 68 61 72 61  63 74 65 72 20 6e 29 2e  |0 (character n).|
0001dc40  20 4b 65 79 70 72 65 73  73 65 73 20 72 65 74 75  | Keypresses retu|
0001dc50  72 6e 20 74 68 65 20 6c  6f 77 65 72 2d 63 61 73  |rn the lower-cas|
0001dc60  65 20 61 73 63 69 69 20  76 61 6c 75 65 2e 0a 0a  |e ascii value...|
0001dc70  54 68 69 73 20 73 68 6f  75 6c 64 20 6f 6e 6c 79  |This should only|
0001dc80  20 62 65 20 75 73 65 64  20 69 6e 20 61 70 70 6c  | be used in appl|
0001dc90  69 63 61 74 69 6f 6e 73  20 6f 75 74 73 69 64 65  |ications outside|
0001dca0  20 74 68 65 20 64 65 73  6b 74 6f 70 2c 20 69 66  | the desktop, if|
0001dcb0  20 65 76 65 72 2e 00 00  44 41 54 41 08 01 00 00  | ever...DATA....|
0001dcc0  4f 53 5f 53 65 74 56 61  72 56 61 6c 20 20 28 26  |OS_SetVarVal  (&|
0001dcd0  32 34 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |24).#Parent OS_.|
0001dce0  3d 3e 09 52 30 20 3d 09  50 74 72 20 74 6f 20 6e  |=>.R0 =.Ptr to n|
0001dcf0  61 6d 65 0a 09 52 31 20  3d 09 50 74 72 20 74 6f  |ame..R1 =.Ptr to|
0001dd00  20 76 61 6c 75 65 20 74  6f 20 73 65 74 20 74 6f  | value to set to|
0001dd10  0a 09 52 32 20 3d 09 4c  65 6e 67 74 68 0a 09 52  |..R2 =.Length..R|
0001dd20  33 20 3d 09 4e 61 6d 65  20 70 74 72 20 28 30 20  |3 =.Name ptr (0 |
0001dd30  66 6f 72 20 31 73 74 20  63 61 6c 6c 29 0a 09 52  |for 1st call)..R|
0001dd40  34 20 3d 09 3c 56 61 72  69 61 62 6c 65 20 74 79  |4 =.<Variable ty|
0001dd50  70 65 3d 3e 4f 53 5f 76  61 72 74 79 70 65 73 3e  |pe=>OS_vartypes>|
0001dd60  0a 09 0a 5c 3c 3d 09 52  33 20 3d 09 4e 65 77 20  |...\<=.R3 =.New |
0001dd70  6e 61 6d 65 20 70 74 72  0a 09 52 34 20 3d 09 56  |name ptr..R4 =.V|
0001dd80  61 72 69 61 62 6c 65 20  74 79 70 65 0a 0a 54 68  |ariable type..Th|
0001dd90  69 73 20 53 57 49 20 73  65 74 73 20 61 20 76 61  |is SWI sets a va|
0001dda0  72 69 61 62 6c 65 73 20  76 61 6c 75 65 20 74 6f  |riables value to|
0001ddb0  20 74 68 61 74 20 73 70  65 63 69 66 69 65 64 2e  | that specified.|
0001ddc0  44 41 54 41 a2 03 00 00  56 61 72 69 61 62 6c 65  |DATA....Variable|
0001ddd0  20 74 79 70 65 73 0a 30  09 53 74 72 69 6e 67 09  | types.0.String.|
0001dde0  09 50 6f 69 6e 74 65 72  20 74 6f 20 73 74 72 69  |.Pointer to stri|
0001ddf0  6e 67 2c 20 77 68 69 63  68 20 77 69 6c 6c 20 62  |ng, which will b|
0001de00  65 20 47 53 54 72 61 6e  73 65 64 20 6e 6f 77 0a  |e GSTransed now.|
0001de10  31 09 4e 75 6d 62 65 72  09 09 34 20 62 79 74 65  |1.Number..4 byte|
0001de20  20 69 6e 74 65 67 65 72  0a 32 09 4d 61 63 72 6f  | integer.2.Macro|
0001de30  09 09 50 6f 69 6e 74 65  72 20 74 6f 20 73 74 72  |..Pointer to str|
0001de40  69 6e 67 2c 20 77 68 69  63 68 20 77 69 6c 6c 20  |ing, which will |
0001de50  62 65 20 47 53 54 72 61  6e 73 65 64 20 65 61 63  |be GSTransed eac|
0001de60  68 20 74 69 6d 65 20 69  74 20 69 73 20 75 73 65  |h time it is use|
0001de70  64 0a 33 09 45 78 70 61  6e 64 65 64 09 45 78 70  |d.3.Expanded.Exp|
0001de80  72 65 73 73 69 6f 6e 20  77 68 69 63 68 20 77 69  |ression which wi|
0001de90  6c 6c 20 62 65 20 73 65  6e 74 20 74 68 72 6f 75  |ll be sent throu|
0001dea0  67 68 20 3c 4f 53 5f 45  76 61 6c 75 61 74 65 45  |gh <OS_EvaluateE|
0001deb0  78 70 72 65 73 73 69 6f  6e 3e 0a 34 09 4c 69 74  |xpression>.4.Lit|
0001dec0  65 72 61 6c 09 09 53 74  72 69 6e 67 20 74 68 61  |eral..String tha|
0001ded0  74 20 77 69 6c 6c 20 6e  6f 74 20 62 65 20 47 53  |t will not be GS|
0001dee0  54 72 61 6e 73 65 64 0a  2b 31 36 09 43 6f 64 65  |Transed.+16.Code|
0001def0  09 09 50 6f 69 6e 74 65  72 20 74 6f 20 61 20 62  |..Pointer to a b|
0001df00  6c 6f 63 6b 20 6f 66 20  3c 63 6f 64 65 3d 3e 2e  |lock of <code=>.|
0001df10  63 6f 64 65 3e 0a 23 53  75 62 70 61 67 65 20 63  |code>.#Subpage c|
0001df20  6f 64 65 0a 56 61 72 69  61 62 6c 65 20 74 79 70  |ode.Variable typ|
0001df30  65 20 43 6f 64 65 0a 52  31 20 70 6f 69 6e 74 73  |e Code.R1 points|
0001df40  20 74 6f 20 61 20 62 6c  6f 63 6b 20 63 6f 6e 74  | to a block cont|
0001df50  61 69 6e 69 6e 67 20 74  68 65 20 66 6f 6c 6c 6f  |aining the follo|
0001df60  77 69 6e 67 20 3a 0a 20  20 30 09 54 68 69 73 20  |wing :.  0.This |
0001df70  69 73 20 77 68 65 72 65  20 74 68 65 20 4f 53 20  |is where the OS |
0001df80  6a 75 6d 70 73 20 77 68  65 6e 20 74 68 65 20 76  |jumps when the v|
0001df90  61 72 69 61 62 6c 65 20  69 73 20 74 6f 20 62 65  |ariable is to be|
0001dfa0  20 77 72 69 74 74 65 6e  2e 20 57 69 6c 6c 20 6e  | written. Will n|
0001dfb0  6f 72 6d 61 6c 6c 79 20  62 65 20 61 20 62 72 61  |ormally be a bra|
0001dfc0  6e 63 68 20 69 6e 73 74  72 75 63 74 69 6f 6e 0a  |nch instruction.|
0001dfd0  20 20 34 09 54 68 69 73  20 69 73 20 77 68 65 72  |  4.This is wher|
0001dfe0  65 20 74 68 65 20 4f 53  20 6a 75 6d 70 73 20 77  |e the OS jumps w|
0001dff0  68 65 6e 20 74 68 65 20  76 61 72 69 61 62 6c 65  |hen the variable|
0001e000  20 69 73 20 74 6f 20 62  65 20 72 65 61 64 0a 20  | is to be read. |
0001e010  20 38 09 48 65 72 65 20  79 6f 75 72 20 63 6f 64  | 8.Here your cod|
0001e020  65 20 6d 61 79 20 63 6f  6d 65 0a 23 74 61 62 0a  |e may come.#tab.|
0001e030  0a 57 68 65 6e 20 74 68  65 20 57 72 69 74 65 20  |.When the Write |
0001e040  65 6e 74 72 79 20 69 73  20 63 61 6c 6c 65 64 20  |entry is called |
0001e050  3a 0a 20 3d 3e 09 52 31  20 3d 20 76 61 6c 75 65  |:. =>.R1 = value|
0001e060  0a 09 52 32 20 3d 20 6c  65 6e 67 74 68 20 6f 66  |..R2 = length of|
0001e070  20 76 61 6c 75 65 0a 20  5c 3c 3d 09 52 31 2c 32  | value. \<=.R1,2|
0001e080  2c 34 2c 31 30 2d 31 32  20 6d 61 79 20 62 65 20  |,4,10-12 may be |
0001e090  63 6f 72 72 75 70 74 65  64 2e 0a 0a 57 68 65 6e  |corrupted...When|
0001e0a0  20 74 68 65 20 52 65 61  64 20 65 6e 74 72 79 20  | the Read entry |
0001e0b0  69 73 20 63 61 6c 6c 65  64 20 3a 0a 20 3d 3e 09  |is called :. =>.|
0001e0c0  2d 0a 20 5c 3c 3d 09 52  30 20 3d 20 70 74 72 20  |-. \<=.R0 = ptr |
0001e0d0  74 6f 20 76 61 6c 75 65  0a 20 09 52 31 20 6d 61  |to value. .R1 ma|
0001e0e0  79 20 62 65 20 63 6f 72  72 75 70 74 65 64 0a 20  |y be corrupted. |
0001e0f0  09 52 32 20 3d 20 6c 65  6e 20 6f 66 20 76 61 6c  |.R2 = len of val|
0001e100  75 65 0a 0a 54 68 65 20  74 77 6f 20 65 6e 74 72  |ue..The two entr|
0001e110  79 20 70 6f 69 6e 74 73  20 61 72 65 20 63 61 6c  |y points are cal|
0001e120  6c 65 64 20 69 6e 20 53  56 43 20 6d 6f 64 65 2c  |led in SVC mode,|
0001e130  20 73 6f 20 69 66 20 79  6f 75 20 63 61 6c 6c 20  | so if you call |
0001e140  61 20 53 57 49 20 74 68  65 6e 20 52 31 34 20 77  |a SWI then R14 w|
0001e150  69 6c 6c 20 62 65 20 63  6f 72 72 75 70 74 65 64  |ill be corrupted|
0001e160  2e 0a 00 00 44 49 52 24  44 01 00 00 44 01 00 00  |....DIR$D...D...|
0001e170  a8 e2 01 00 45 ff ff ff  a4 c4 e1 ff de 01 00 00  |....E...........|
0001e180  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0001e190  88 e4 01 00 46 fd ff ff  05 e5 bb 88 e2 00 00 00  |....F...........|
0001e1a0  13 00 00 00 00 00 00 00  30 30 30 00 6c e5 01 00  |........000.l...|
0001e1b0  45 fd ff ff 7e 3b eb ff  b6 00 00 00 13 00 00 00  |E...~;..........|
0001e1c0  00 00 00 00 30 30 31 00  24 e6 01 00 45 fd ff ff  |....001.$...E...|
0001e1d0  a9 39 eb ff 7b 00 00 00  13 00 00 00 00 00 00 00  |.9..{...........|
0001e1e0  30 30 32 00 a0 e6 01 00  45 fd ff ff 78 38 eb ff  |002.....E...x8..|
0001e1f0  8f 00 00 00 13 00 00 00  00 00 00 00 30 30 33 00  |............003.|
0001e200  30 e7 01 00 45 fd ff ff  b4 36 eb ff b1 00 00 00  |0...E....6......|
0001e210  13 00 00 00 00 00 00 00  30 30 34 00 e4 e7 01 00  |........004.....|
0001e220  45 fd ff ff d2 34 eb ff  7e 00 00 00 13 00 00 00  |E....4..~.......|
0001e230  00 00 00 00 30 30 35 00  64 e8 01 00 45 fd ff ff  |....005.d...E...|
0001e240  52 33 eb ff cd 00 00 00  13 00 00 00 00 00 00 00  |R3..............|
0001e250  30 30 36 00 34 e9 01 00  46 fd ff ff 73 43 12 54  |006.4...F...sC.T|
0001e260  b7 00 00 00 13 00 00 00  00 00 00 00 30 30 37 00  |............007.|
0001e270  ec e9 01 00 45 fd ff ff  b4 2e eb ff bd 01 00 00  |....E...........|
0001e280  13 00 00 00 00 00 00 00  32 35 34 00 ac eb 01 00  |........254.....|
0001e290  46 fd ff ff 2e ad d8 55  9c 00 00 00 13 00 00 00  |F......U........|
0001e2a0  00 00 00 00 32 35 35 00  44 41 54 41 de 01 00 00  |....255.DATA....|
0001e2b0  4f 53 5f 41 72 67 73 20  20 28 26 30 39 29 0a 23  |OS_Args  (&09).#|
0001e2c0  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
0001e2d0  20 3d 20 52 65 61 73 6f  6e 20 63 6f 64 65 0a 09  | = Reason code..|
0001e2e0  52 31 20 3d 20 66 69 6c  65 20 68 61 6e 64 6c 65  |R1 = file handle|
0001e2f0  0a 09 52 32 20 3d 20 28  61 74 74 72 69 62 75 74  |..R2 = (attribut|
0001e300  65 29 0a 23 74 61 62 0a  0a 52 65 61 73 6f 6e 20  |e).#tab..Reason |
0001e310  63 6f 64 65 73 20 3a 0a  30 09 3c 52 65 61 64 20  |codes :.0.<Read |
0001e320  70 6f 69 6e 74 65 72 2f  46 53 3d 3e 6f 73 5f 61  |pointer/FS=>os_a|
0001e330  72 67 73 30 30 30 3e 0a  31 09 3c 57 72 69 74 65  |rgs000>.1.<Write|
0001e340  20 70 6f 69 6e 74 65 72  3d 3e 6f 73 5f 61 72 67  | pointer=>os_arg|
0001e350  73 30 30 31 3e 0a 32 09  3c 52 65 61 64 20 65 78  |s001>.2.<Read ex|
0001e360  74 65 6e 74 3d 3e 6f 73  5f 61 72 67 73 30 30 32  |tent=>os_args002|
0001e370  3e 0a 33 09 3c 57 72 69  74 65 20 65 78 74 65 6e  |>.3.<Write exten|
0001e380  74 3d 3e 6f 73 5f 61 72  67 73 30 30 33 3e 0a 34  |t=>os_args003>.4|
0001e390  09 3c 52 65 61 64 20 61  6c 6c 6f 63 61 74 65 64  |.<Read allocated|
0001e3a0  20 73 69 7a 65 3d 3e 6f  73 5f 61 72 67 73 30 30  | size=>os_args00|
0001e3b0  34 3e 0a 35 09 3c 52 65  61 64 20 45 4f 46 20 73  |4>.5.<Read EOF s|
0001e3c0  74 61 74 75 73 3d 3e 6f  73 5f 61 72 67 73 30 30  |tatus=>os_args00|
0001e3d0  35 3e 0a 36 09 3c 52 65  73 65 72 76 65 20 73 70  |5>.6.<Reserve sp|
0001e3e0  61 63 65 3d 3e 6f 73 5f  61 72 67 73 30 30 36 3e  |ace=>os_args006>|
0001e3f0  0a 37 09 3c 52 65 61 64  20 70 61 74 68 6e 61 6d  |.7.<Read pathnam|
0001e400  65 20 6f 66 20 6f 70 65  6e 20 66 69 6c 65 3d 3e  |e of open file=>|
0001e410  6f 73 5f 61 72 67 73 30  30 37 3e 0a 38 09 49 6e  |os_args007>.8.In|
0001e420  66 6f 72 6d 20 6f 66 20  63 68 61 6e 67 65 64 20  |form of changed |
0001e430  69 6d 61 67 65 20 73 74  61 6d 70 0a 32 35 34 09  |image stamp.254.|
0001e440  3c 52 65 61 64 20 69 6e  66 6f 20 6f 6e 20 66 69  |<Read info on fi|
0001e450  6c 65 20 68 61 6e 64 6c  65 3d 3e 6f 73 5f 61 72  |le handle=>os_ar|
0001e460  67 73 32 35 34 3e 0a 32  35 35 09 3c 46 6c 75 73  |gs254>.255.<Flus|
0001e470  68 20 66 69 6c 65 28 73  29 3d 3e 6f 73 5f 61 72  |h file(s)=>os_ar|
0001e480  67 73 32 35 35 3e 00 00  44 41 54 41 e2 00 00 00  |gs255>..DATA....|
0001e490  4f 53 5f 41 72 67 73 20  30 0a 23 50 61 72 65 6e  |OS_Args 0.#Paren|
0001e4a0  74 20 4f 53 5f 41 72 67  73 0a 23 57 72 61 70 20  |t OS_Args.#Wrap |
0001e4b0  6f 66 66 0a 3d 3e 09 52  30 20 3d 20 30 0a 09 52  |off.=>.R0 = 0..R|
0001e4c0  31 20 3d 20 66 69 6c 65  20 68 61 6e 64 6c 65 20  |1 = file handle |
0001e4d0  6f 72 20 30 0a 5c 3c 3d  09 52 30 20 3d 20 66 69  |or 0.\<=.R0 = fi|
0001e4e0  6c 69 6e 67 20 73 79 73  74 65 6d 20 6e 6f 09 28  |ling system no.(|
0001e4f0  69 66 20 52 31 20 3d 20  20 30 29 0a 09 52 32 20  |if R1 =  0)..R2 |
0001e500  3d 20 66 69 6c 65 20 70  6f 69 6e 74 65 72 09 28  |= file pointer.(|
0001e510  69 66 20 52 31 20 5c 3c  3e 20 30 29 0a 23 57 72  |if R1 \<> 0).#Wr|
0001e520  61 70 20 6f 6e 0a 0a 54  68 69 73 20 53 57 49 20  |ap on..This SWI |
0001e530  72 65 74 75 72 6e 73 20  74 68 65 20 74 65 6d 70  |returns the temp|
0001e540  6f 72 61 72 79 20 66 69  6c 69 6e 67 20 73 79 73  |orary filing sys|
0001e550  74 65 6d 20 6e 6f 2c 20  6f 72 20 66 69 6c 69 6e  |tem no, or filin|
0001e560  67 20 70 6f 69 6e 74 65  72 2e 00 00 44 41 54 41  |g pointer...DATA|
0001e570  b6 00 00 00 4f 53 5f 41  72 67 73 20 31 0a 23 50  |....OS_Args 1.#P|
0001e580  61 72 65 6e 74 20 4f 53  5f 41 72 67 73 0a 3d 3e  |arent OS_Args.=>|
0001e590  09 52 30 20 3d 20 31 0a  09 52 31 20 3d 20 66 69  |.R0 = 1..R1 = fi|
0001e5a0  6c 65 20 68 61 6e 64 6c  65 0a 09 52 32 20 3d 20  |le handle..R2 = |
0001e5b0  6e 65 77 20 70 6f 69 6e  74 65 72 0a 0a 54 68 69  |new pointer..Thi|
0001e5c0  73 20 53 57 49 20 73 65  74 73 20 74 68 65 20 66  |s SWI sets the f|
0001e5d0  69 6c 65 73 20 73 65 71  75 65 6e 74 69 61 6c 20  |iles sequential |
0001e5e0  70 6f 69 6e 74 65 72 2e  20 49 66 20 69 74 20 69  |pointer. If it i|
0001e5f0  73 20 6f 75 74 73 69 64  65 20 63 75 72 72 65 6e  |s outside curren|
0001e600  74 20 65 78 74 65 6e 74  2c 20 6d 6f 72 65 20 73  |t extent, more s|
0001e610  70 61 63 65 20 69 73 20  61 6c 6c 6f 63 61 74 65  |pace is allocate|
0001e620  64 2e 00 00 44 41 54 41  7b 00 00 00 4f 53 5f 41  |d...DATA{...OS_A|
0001e630  72 67 73 20 32 0a 23 50  61 72 65 6e 74 20 4f 53  |rgs 2.#Parent OS|
0001e640  5f 41 72 67 73 0a 3d 3e  09 52 30 20 3d 20 32 0a  |_Args.=>.R0 = 2.|
0001e650  09 52 31 20 3d 20 66 69  6c 65 20 68 61 6e 64 6c  |.R1 = file handl|
0001e660  65 0a 5c 3c 3d 09 52 32  20 3d 20 65 78 74 65 6e  |e.\<=.R2 = exten|
0001e670  74 20 6f 66 20 66 69 6c  65 0a 0a 54 68 69 73 20  |t of file..This |
0001e680  53 57 49 20 72 65 61 64  73 20 74 68 65 20 65 78  |SWI reads the ex|
0001e690  74 65 6e 74 20 6f 66 20  61 20 66 69 6c 65 2e 00  |tent of a file..|
0001e6a0  44 41 54 41 8f 00 00 00  4f 53 5f 41 72 67 73 20  |DATA....OS_Args |
0001e6b0  33 0a 23 50 61 72 65 6e  74 20 4f 53 5f 41 72 67  |3.#Parent OS_Arg|
0001e6c0  73 0a 3d 3e 09 52 30 20  3d 20 33 0a 09 52 31 20  |s.=>.R0 = 3..R1 |
0001e6d0  3d 20 66 69 6c 65 20 68  61 6e 64 6c 65 0a 09 52  |= file handle..R|
0001e6e0  32 20 3d 20 65 78 74 65  6e 74 0a 0a 54 68 69 73  |2 = extent..This|
0001e6f0  20 53 57 49 20 73 65 74  73 20 74 68 65 20 65 78  | SWI sets the ex|
0001e700  74 65 6e 74 20 6f 66 20  61 20 66 69 6c 65 2e 20  |tent of a file. |
0001e710  4e 65 77 20 73 70 61 63  65 20 69 73 20 66 69 6c  |New space is fil|
0001e720  6c 65 64 20 77 69 74 68  20 7a 65 72 6f 73 2e 00  |led with zeros..|
0001e730  44 41 54 41 b1 00 00 00  4f 53 5f 41 72 67 73 20  |DATA....OS_Args |
0001e740  34 0a 23 50 61 72 65 6e  74 20 4f 53 5f 41 72 67  |4.#Parent OS_Arg|
0001e750  73 0a 3d 3e 09 52 30 20  3d 20 34 0a 09 52 31 20  |s.=>.R0 = 4..R1 |
0001e760  3d 20 66 69 6c 65 20 68  61 6e 64 6c 65 0a 5c 3c  |= file handle.\<|
0001e770  3d 09 52 32 20 3d 20 6e  65 77 20 65 78 74 65 6e  |=.R2 = new exten|
0001e780  74 0a 0a 54 68 69 73 20  53 57 49 20 72 65 74 75  |t..This SWI retu|
0001e790  72 6e 73 20 74 68 65 20  61 63 74 75 61 6c 20 73  |rns the actual s|
0001e7a0  69 7a 65 20 6f 66 20 74  68 65 20 66 69 6c 65 2e  |ize of the file.|
0001e7b0  20 54 68 69 73 20 77 69  6c 6c 20 62 65 20 65 71  | This will be eq|
0001e7c0  75 61 6c 20 74 6f 20 6f  72 20 6c 61 72 67 65 72  |ual to or larger|
0001e7d0  20 74 68 61 6e 20 69 74  73 20 65 78 74 65 6e 74  | than its extent|
0001e7e0  2e 00 00 00 44 41 54 41  7e 00 00 00 4f 53 5f 41  |....DATA~...OS_A|
0001e7f0  72 67 73 20 35 0a 23 50  61 72 65 6e 74 20 4f 53  |rgs 5.#Parent OS|
0001e800  5f 41 72 67 73 0a 3d 3e  09 52 30 20 3d 20 35 0a  |_Args.=>.R0 = 5.|
0001e810  09 52 31 20 3d 20 66 69  6c 65 20 68 61 6e 64 6c  |.R1 = file handl|
0001e820  65 0a 5c 3c 3d 09 52 32  20 3d 20 30 20 69 66 20  |e.\<=.R2 = 0 if |
0001e830  6e 6f 74 20 45 4f 46 0a  0a 54 68 69 73 20 53 57  |not EOF..This SW|
0001e840  49 20 72 65 74 75 72 6e  73 20 30 20 69 66 20 6e  |I returns 0 if n|
0001e850  6f 74 20 61 74 20 45 6e  64 20 6f 66 20 46 69 6c  |ot at End of Fil|
0001e860  65 2e 00 00 44 41 54 41  cd 00 00 00 4f 53 5f 41  |e...DATA....OS_A|
0001e870  72 67 73 20 36 0a 23 50  61 72 65 6e 74 20 4f 53  |rgs 6.#Parent OS|
0001e880  5f 41 72 67 73 0a 3d 3e  09 52 30 20 3d 20 36 0a  |_Args.=>.R0 = 6.|
0001e890  09 52 31 20 3d 20 66 69  6c 65 20 68 61 6e 64 6c  |.R1 = file handl|
0001e8a0  65 0a 09 52 32 20 3d 20  73 69 7a 65 20 74 6f 20  |e..R2 = size to |
0001e8b0  65 6e 73 75 72 65 0a 5c  3c 3d 09 52 32 20 3d 20  |ensure.\<=.R2 = |
0001e8c0  61 63 74 75 61 6c 20 73  69 7a 65 0a 0a 54 68 69  |actual size..Thi|
0001e8d0  73 20 53 57 49 20 65 6e  73 75 72 65 73 20 74 68  |s SWI ensures th|
0001e8e0  61 74 20 74 68 65 20 73  69 7a 65 20 6f 66 20 74  |at the size of t|
0001e8f0  68 65 20 66 69 6c 65 20  69 73 20 6e 6f 74 20 6c  |he file is not l|
0001e900  65 73 73 20 74 68 61 6e  20 52 32 2e 20 4e 6f 74  |ess than R2. Not|
0001e910  65 20 74 68 61 74 20 74  68 65 20 65 78 74 65 6e  |e that the exten|
0001e920  74 20 69 73 20 6e 6f 74  20 61 6c 74 65 72 65 64  |t is not altered|
0001e930  2e 00 00 00 44 41 54 41  b7 00 00 00 4f 53 5f 41  |....DATA....OS_A|
0001e940  72 67 73 20 37 0a 23 50  61 72 65 6e 74 20 4f 53  |rgs 7.#Parent OS|
0001e950  5f 41 72 67 73 0a 3d 3e  09 52 30 20 3d 20 37 0a  |_Args.=>.R0 = 7.|
0001e960  09 52 31 20 3d 20 66 69  6c 65 20 68 61 6e 64 6c  |.R1 = file handl|
0001e970  65 0a 09 52 32 20 3d 20  62 75 66 66 65 72 0a 09  |e..R2 = buffer..|
0001e980  52 35 20 3d 20 6c 65 6e  67 74 68 20 6f 66 20 62  |R5 = length of b|
0001e990  75 66 66 65 72 0a 5c 3c  3d 09 52 35 20 3d 20 66  |uffer.\<=.R5 = f|
0001e9a0  72 65 65 20 62 79 74 65  73 20 69 6e 20 62 75 66  |ree bytes in buf|
0001e9b0  66 65 72 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |fer..This SWI re|
0001e9c0  74 75 72 6e 73 20 74 68  65 20 70 61 74 68 6e 61  |turns the pathna|
0001e9d0  6d 65 20 6f 66 20 74 68  65 20 66 69 6c 65 20 67  |me of the file g|
0001e9e0  69 76 65 6e 20 69 6e 20  52 31 2e 00 44 41 54 41  |iven in R1..DATA|
0001e9f0  bd 01 00 00 4f 53 5f 41  72 67 73 20 32 35 34 0a  |....OS_Args 254.|
0001ea00  23 50 61 72 65 6e 74 20  4f 53 5f 41 72 67 73 0a  |#Parent OS_Args.|
0001ea10  3d 3e 09 52 30 20 3d 20  32 35 34 0a 09 52 31 20  |=>.R0 = 254..R1 |
0001ea20  3d 20 66 69 6c 65 20 68  61 6e 64 6c 65 0a 5c 3c  |= file handle.\<|
0001ea30  3d 09 52 30 20 3d 20 73  74 72 65 61 6d 20 73 74  |=.R0 = stream st|
0001ea40  61 74 75 73 20 77 6f 72  64 0a 09 52 32 20 3d 20  |atus word..R2 = |
0001ea50  3c 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 20 69  |<filing system i|
0001ea60  6e 66 6f 20 77 6f 72 64  3d 3e 66 73 79 73 5f 69  |nfo word=>fsys_i|
0001ea70  6e 66 6f 77 6f 72 64 3e  0a 0a 54 68 69 73 20 53  |nfoword>..This S|
0001ea80  57 49 20 72 65 74 75 72  6e 73 20 69 6e 66 6f 20  |WI returns info |
0001ea90  6f 6e 20 74 68 65 20 67  69 76 65 6e 20 66 69 6c  |on the given fil|
0001eaa0  65 20 68 61 6e 64 6c 65  2e 0a 0a 23 54 61 62 0a  |e handle...#Tab.|
0001eab0  42 69 74 73 20 69 6e 20  73 74 72 65 61 6d 20 73  |Bits in stream s|
0001eac0  74 61 74 75 73 20 77 6f  72 64 20 3a 0a 33 09 53  |tatus word :.3.S|
0001ead0  74 72 65 61 6d 20 69 73  20 69 6e 74 65 72 61 63  |tream is interac|
0001eae0  74 69 76 65 0a 34 09 55  6e 62 75 66 66 65 72 65  |tive.4.Unbuffere|
0001eaf0  64 2e 20 44 69 72 65 63  74 6c 79 20 73 75 70 70  |d. Directly supp|
0001eb00  6f 72 74 73 20 47 42 50  42 0a 35 09 49 73 20 61  |orts GBPB.5.Is a|
0001eb10  20 64 69 72 65 63 74 6f  72 79 0a 36 09 52 65 61  | directory.6.Rea|
0001eb20  64 20 61 63 63 65 73 73  0a 37 09 57 72 69 74 65  |d access.7.Write|
0001eb30  20 61 63 63 65 73 73 0a  38 09 48 61 76 65 20 77  | access.8.Have w|
0001eb40  72 69 74 74 65 6e 20 74  6f 20 69 74 0a 39 09 4e  |ritten to it.9.N|
0001eb50  65 78 74 20 72 65 61 64  20 67 69 76 65 73 20 45  |ext read gives E|
0001eb60  4f 46 20 65 72 72 6f 72  0a 31 30 09 55 6e 62 75  |OF error.10.Unbu|
0001eb70  66 66 65 72 65 64 0a 31  31 09 55 6e 2d 61 6c 6c  |ffered.11.Un-all|
0001eb80  6f 63 61 74 65 64 0a 31  32 09 43 72 69 74 69 63  |ocated.12.Critic|
0001eb90  61 6c 0a 31 33 09 44 61  74 61 20 68 61 76 65 20  |al.13.Data have |
0001eba0  62 65 65 6e 20 6c 6f 73  74 00 00 00 44 41 54 41  |been lost...DATA|
0001ebb0  9c 00 00 00 4f 53 5f 41  72 67 73 20 32 35 35 0a  |....OS_Args 255.|
0001ebc0  23 50 61 72 65 6e 74 20  4f 53 5f 41 72 67 73 0a  |#Parent OS_Args.|
0001ebd0  3d 3e 09 52 30 20 3d 09  32 35 35 0a 09 52 31 20  |=>.R0 =.255..R1 |
0001ebe0  3d 09 66 69 6c 65 20 68  61 6e 64 6c 65 20 6f 72  |=.file handle or|
0001ebf0  20 30 20 66 6f 72 20 61  6c 6c 0a 0a 54 68 69 73  | 0 for all..This|
0001ec00  20 53 57 49 20 65 6e 73  75 72 65 73 20 74 68 61  | SWI ensures tha|
0001ec10  74 20 61 6e 79 20 62 75  66 66 65 72 65 64 20 64  |t any buffered d|
0001ec20  61 74 61 20 6f 6e 20 74  68 65 20 67 69 76 65 6e  |ata on the given|
0001ec30  20 66 69 6c 65 28 73 29  20 69 73 20 77 72 69 74  | file(s) is writ|
0001ec40  74 65 6e 20 6f 75 74 2e  44 49 52 24 2c 04 00 00  |ten out.DIR$,...|
0001ec50  2c 04 00 00 74 f0 01 00  45 ff ff ff 60 76 e7 ff  |,...t...E...`v..|
0001ec60  2b 01 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |+...........!Roo|
0001ec70  74 00 00 00 a0 f1 01 00  46 fd ff ff 4d b9 a6 fa  |t.......F...M...|
0001ec80  d1 02 00 00 13 00 00 00  00 00 00 00 30 30 34 00  |............004.|
0001ec90  74 f4 01 00 46 fd ff ff  1e e3 60 4d 45 01 00 00  |t...F.....`ME...|
0001eca0  13 00 00 00 00 00 00 00  31 32 31 00 bc f5 01 00  |........121.....|
0001ecb0  46 fd ff ff 3a 9a 35 34  4d 03 00 00 13 00 00 00  |F...:.54M.......|
0001ecc0  00 00 00 00 31 32 31 61  00 00 00 00 0c f9 01 00  |....121a........|
0001ecd0  46 fd ff ff 97 c2 a6 fa  b4 02 00 00 13 00 00 00  |F...............|
0001ece0  00 00 00 00 32 30 30 00  c0 fb 01 00 46 fd ff ff  |....200.....F...|
0001ecf0  ee 04 a8 fa 2f 03 00 00  13 00 00 00 00 00 00 00  |..../...........|
0001ed00  32 32 39 00 f0 fe 01 00  45 fd ff ff 65 84 ea ff  |229.....E...e...|
0001ed10  df 02 00 00 13 00 00 00  00 00 00 00 32 34 37 00  |............247.|
0001ed20  d0 01 02 00 45 fd ff ff  a5 3b ec ff 9f 03 00 00  |....E....;......|
0001ed30  13 00 00 00 00 00 00 00  32 35 34 00 70 05 02 00  |........254.p...|
0001ed40  46 fd ff ff cc 2e a8 fa  95 10 00 00 13 00 00 00  |F...............|
0001ed50  00 00 00 00 69 6e 64 65  78 00 00 00 08 16 02 00  |....index.......|
0001ed60  46 fd ff ff 6f e8 60 4d  47 01 00 00 13 00 00 00  |F...o.`MG.......|
0001ed70  00 00 00 00 30 31 33 00  50 17 02 00 46 fd ff ff  |....013.P...F...|
0001ed80  a9 ec 60 4d 4f 01 00 00  13 00 00 00 00 00 00 00  |..`MO...........|
0001ed90  30 31 34 00 a0 18 02 00  46 fd ff ff 12 21 61 4d  |014.....F....!aM|
0001eda0  b5 00 00 00 13 00 00 00  00 00 00 00 31 36 31 00  |............161.|
0001edb0  58 19 02 00 46 fd ff ff  ec 3b 61 4d 2e 01 00 00  |X...F....;aM....|
0001edc0  13 00 00 00 00 00 00 00  31 36 32 00 88 1a 02 00  |........162.....|
0001edd0  47 fd ff ff e5 27 2d 0a  0c 03 00 00 13 01 00 00  |G....'-.........|
0001ede0  00 00 00 00 63 6d 6f 73  00 00 00 00 0c 40 02 00  |....cmos.....@..|
0001edf0  46 fd ff ff e2 55 57 f5  54 03 00 00 13 00 00 00  |F....UW.T.......|
0001ee00  00 00 00 00 30 30 32 00  60 43 02 00 46 fd ff ff  |....002.`C..F...|
0001ee10  cc 6a 57 f5 c0 01 00 00  13 00 00 00 00 00 00 00  |.jW.............|
0001ee20  30 31 31 00 20 45 02 00  46 fd ff ff 1d 90 7f f5  |011. E..F.......|
0001ee30  dc 01 00 00 13 00 00 00  00 00 00 00 62 79 74 65  |............byte|
0001ee40  30 31 32 00 fc 46 02 00  46 fd ff ff df 39 a8 fa  |012..F..F....9..|
0001ee50  47 01 00 00 13 00 00 00  00 00 00 00 30 31 35 00  |G...........015.|
0001ee60  44 48 02 00 46 fd ff ff  fe a2 57 f5 e6 00 00 00  |DH..F.....W.....|
0001ee70  13 00 00 00 00 00 00 00  30 31 39 00 2c 49 02 00  |........019.,I..|
0001ee80  46 fd ff ff b0 3d 10 fb  4d 01 00 00 13 00 00 00  |F....=..M.......|
0001ee90  00 00 00 00 30 32 30 00  7c 4a 02 00 46 fd ff ff  |....020.|J..F...|
0001eea0  c1 b8 57 f5 94 00 00 00  13 00 00 00 00 00 00 00  |..W.............|
0001eeb0  30 32 31 00 10 4b 02 00  46 fd ff ff 78 41 10 fb  |021..K..F...xA..|
0001eec0  c3 01 00 00 13 00 00 00  00 00 00 00 30 32 35 00  |............025.|
0001eed0  d4 4c 02 00 46 fd ff ff  39 45 a8 fa 47 02 00 00  |.L..F...9E..G...|
0001eee0  13 00 00 00 00 00 00 00  31 30 36 00 1c 4f 02 00  |........106..O..|
0001eef0  46 fd ff ff c5 60 58 f5  f5 01 00 00 13 00 00 00  |F....`X.........|
0001ef00  00 00 00 00 31 31 32 00  14 51 02 00 46 fd ff ff  |....112..Q..F...|
0001ef10  76 72 58 f5 06 01 00 00  13 00 00 00 00 00 00 00  |vrX.............|
0001ef20  31 31 33 00 1c 52 02 00  46 fd ff ff e7 9d 58 f5  |113..R..F.....X.|
0001ef30  df 01 00 00 13 00 00 00  00 00 00 00 31 31 37 00  |............117.|
0001ef40  fc 53 02 00 46 fd ff ff  d7 ae 58 f5 33 02 00 00  |.S..F.....X.3...|
0001ef50  13 00 00 00 00 00 00 00  31 31 38 00 30 56 02 00  |........118.0V..|
0001ef60  46 fd ff ff d3 ff 58 f5  7b 01 00 00 13 00 00 00  |F.....X.{.......|
0001ef70  00 00 00 00 31 33 34 00  ac 57 02 00 46 fd ff ff  |....134..W..F...|
0001ef80  48 11 59 f5 14 02 00 00  13 00 00 00 00 00 00 00  |H.Y.............|
0001ef90  31 33 35 00 c0 59 02 00  46 fd ff ff 5f 2f 59 f5  |135..Y..F..._/Y.|
0001efa0  7c 01 00 00 13 00 00 00  00 00 00 00 31 34 34 00  ||...........144.|
0001efb0  3c 5b 02 00 46 fd ff ff  07 a0 5a f5 eb 00 00 00  |<[..F.....Z.....|
0001efc0  13 00 00 00 00 00 00 00  31 36 35 00 28 5c 02 00  |........165.(\..|
0001efd0  46 fd ff ff a4 50 a8 fa  a6 01 00 00 13 00 00 00  |F....P..........|
0001efe0  00 00 00 00 31 37 37 00  d0 5d 02 00 46 fd ff ff  |....177..]..F...|
0001eff0  09 ed 5a f5 10 01 00 00  13 00 00 00 00 00 00 00  |..Z.............|
0001f000  31 39 36 00 e0 5e 02 00  46 fd ff ff a0 09 5b f5  |196..^..F.....[.|
0001f010  4d 01 00 00 13 00 00 00  00 00 00 00 31 39 37 00  |M...........197.|
0001f020  30 60 02 00 46 fd ff ff  e8 72 5b f5 db 03 00 00  |0`..F....r[.....|
0001f030  13 00 00 00 00 00 00 00  32 30 32 00 0c 64 02 00  |........202..d..|
0001f040  46 fd ff ff 9b 5b a8 fa  53 02 00 00 13 00 00 00  |F....[..S.......|
0001f050  00 00 00 00 32 35 35 00  60 66 02 00 46 fd ff ff  |....255.`f..F...|
0001f060  29 2d a8 fa e7 01 00 00  13 00 00 00 00 00 00 00  |)-..............|
0001f070  30 31 32 00 44 41 54 41  2b 01 00 00 4f 53 5f 42  |012.DATA+...OS_B|
0001f080  79 74 65 20 20 28 26 30  36 29 0a 23 50 61 72 65  |yte  (&06).#Pare|
0001f090  6e 74 20 4f 53 5f 0a 3d  3e 09 52 30 20 3d 20 3c  |nt OS_.=>.R0 = <|
0001f0a0  72 65 61 73 6f 6e 20 63  6f 64 65 3d 3e 6f 73 5f  |reason code=>os_|
0001f0b0  62 79 74 65 69 6e 64 65  78 3e 0a 0a 54 68 69 73  |byteindex>..This|
0001f0c0  20 53 57 49 20 64 6f 65  73 20 61 20 62 65 77 69  | SWI does a bewi|
0001f0d0  6c 64 65 72 69 6e 67 20  61 6d 6f 75 6e 74 20 6f  |ldering amount o|
0001f0e0  66 20 64 69 66 66 65 72  65 6e 74 20 74 68 69 6e  |f different thin|
0001f0f0  67 73 2c 20 62 61 73 65  64 20 6f 6e 20 74 68 65  |gs, based on the|
0001f100  20 72 65 61 73 6f 6e 20  63 6f 64 65 20 69 6e 20  | reason code in |
0001f110  52 30 2e 0a 0a 46 6f 72  20 63 61 6c 6c 73 20 77  |R0...For calls w|
0001f120  69 74 68 20 52 30 20 62  65 74 77 65 65 6e 20 31  |ith R0 between 1|
0001f130  36 36 20 61 6e 64 20 32  35 35 3a 0a 20 20 20 4e  |66 and 255:.   N|
0001f140  65 77 56 61 6c 20 3d 20  28 4f 6c 64 56 61 6c 20  |ewVal = (OldVal |
0001f150  41 4e 44 20 52 32 29 20  45 4f 52 20 52 31 0a 0a  |AND R2) EOR R1..|
0001f160  23 74 61 62 0a 54 6f 20  72 65 61 64 3a 09 52 32  |#tab.To read:.R2|
0001f170  20 3d 20 26 46 46 2c 09  52 31 20 3d 20 30 0a 54  | = &FF,.R1 = 0.T|
0001f180  6f 20 73 65 74 3a 09 09  52 32 20 3d 20 30 2c 09  |o set:..R2 = 0,.|
0001f190  09 52 31 20 3d 20 6e 65  77 20 76 61 6c 75 65 00  |.R1 = new value.|
0001f1a0  44 41 54 41 d1 02 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
0001f1b0  34 20 20 43 75 72 73 6f  72 20 4b 65 79 20 53 74  |4  Cursor Key St|
0001f1c0  61 74 75 73 0a 3d 3e 09  52 30 20 3d 09 34 20 28  |atus.=>.R0 =.4 (|
0001f1d0  26 30 34 29 0a 09 52 31  20 3d 09 3c 6e 65 77 20  |&04)..R1 =.<new |
0001f1e0  73 74 61 74 65 3d 3e 2e  73 74 61 74 75 73 3e 0a  |state=>.status>.|
0001f1f0  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
0001f200  0a 09 52 31 20 3d 09 6f  6c 64 20 73 74 61 74 65  |..R1 =.old state|
0001f210  0a 09 52 32 20 63 6f 72  72 75 70 74 65 64 0a 0a  |..R2 corrupted..|
0001f220  54 68 69 73 20 63 61 6c  6c 20 61 6c 74 65 72 73  |This call alters|
0001f230  20 74 68 65 20 65 66 66  65 63 74 20 6f 66 20 74  | the effect of t|
0001f240  68 65 20 66 6f 75 72 20  61 72 72 6f 77 20 6b 65  |he four arrow ke|
0001f250  79 73 20 61 6e 64 20 74  68 65 20 43 6f 70 79 20  |ys and the Copy |
0001f260  6b 65 79 2e 20 54 68 65  20 76 61 6c 75 65 20 6f  |key. The value o|
0001f270  66 20 52 31 20 64 65 74  65 72 6d 69 6e 65 73 20  |f R1 determines |
0001f280  74 68 65 69 72 20 73 74  61 74 65 2e 0a 0a 4f 53  |their state...OS|
0001f290  5f 42 79 74 65 20 32 33  37 3d 3e 4f 53 5f 42 79  |_Byte 237=>OS_By|
0001f2a0  74 65 32 33 37 20 6d 61  79 20 62 65 20 75 73 65  |te237 may be use|
0001f2b0  64 20 74 6f 20 77 72 69  74 65 20 61 6e 64 20 72  |d to write and r|
0001f2c0  65 61 64 20 74 68 69 73  20 73 74 61 74 65 2e 0a  |ead this state..|
0001f2d0  23 53 75 62 70 61 67 65  20 73 74 61 74 75 73 0a  |#Subpage status.|
0001f2e0  43 75 72 73 6f 72 20 6b  65 79 20 73 74 61 74 65  |Cursor key state|
0001f2f0  0a 30 20 3a 09 45 6e 61  62 6c 65 73 20 63 75 72  |.0 :.Enables cur|
0001f300  73 6f 72 20 65 64 69 74  69 6e 67 20 28 64 65 66  |sor editing (def|
0001f310  61 75 6c 74 20 73 74 61  74 65 29 2e 0a 0a 31 20  |ault state)...1 |
0001f320  3a 09 44 69 73 61 62 6c  65 73 20 63 75 72 73 6f  |:.Disables curso|
0001f330  72 20 65 64 69 74 69 6e  67 2e 20 54 68 65 79 20  |r editing. They |
0001f340  72 65 74 75 72 6e 20 74  68 65 20 66 6f 6c 6c 6f  |return the follo|
0001f350  77 69 6e 67 20 41 53 43  49 49 20 76 61 6c 75 65  |wing ASCII value|
0001f360  73 3a 0a 09 20 20 43 6f  70 79 09 09 3d 3e 20 31  |s:..  Copy..=> 1|
0001f370  33 35 0a 09 20 20 4c 65  66 74 20 61 72 72 6f 77  |35..  Left arrow|
0001f380  09 3d 3e 20 31 33 36 0a  09 20 20 52 69 67 68 74  |.=> 136..  Right|
0001f390  20 61 72 72 6f 77 09 3d  3e 20 31 33 37 0a 09 20  | arrow.=> 137.. |
0001f3a0  20 44 6f 77 6e 20 61 72  72 6f 77 09 3d 3e 20 31  | Down arrow.=> 1|
0001f3b0  33 38 0a 09 20 20 55 70  20 61 72 72 6f 77 09 3d  |38..  Up arrow.=|
0001f3c0  3e 20 31 33 39 0a 0a 32  20 3a 09 43 75 72 73 6f  |> 139..2 :.Curso|
0001f3d0  72 20 6b 65 79 73 20 61  63 74 20 61 73 20 66 75  |r keys act as fu|
0001f3e0  6e 63 74 69 6f 6e 20 6b  65 79 73 2e 20 54 68 65  |nction keys. The|
0001f3f0  20 66 75 6e 63 74 69 6f  6e 20 6b 65 79 20 6e 75  | function key nu|
0001f400  6d 62 65 72 73 20 61 73  73 69 67 6e 65 64 20 61  |mbers assigned a|
0001f410  72 65 3a 0a 09 20 20 43  6f 70 79 09 09 3d 3e 20  |re:..  Copy..=> |
0001f420  31 31 0a 09 20 20 4c 65  66 74 20 61 72 72 6f 77  |11..  Left arrow|
0001f430  09 3d 3e 20 31 32 0a 09  20 20 52 69 67 68 74 20  |.=> 12..  Right |
0001f440  61 72 72 6f 77 09 3d 3e  20 31 33 0a 09 20 20 44  |arrow.=> 13..  D|
0001f450  6f 77 6e 20 61 72 72 6f  77 09 3d 3e 20 31 34 0a  |own arrow.=> 14.|
0001f460  09 20 20 55 70 20 61 72  72 6f 77 09 3d 3e 20 31  |.  Up arrow.=> 1|
0001f470  35 00 00 00 44 41 54 41  45 01 00 00 4f 53 5f 42  |5...DATAE...OS_B|
0001f480  79 74 65 20 31 32 31 20  20 4b 65 79 62 6f 61 72  |yte 121  Keyboar|
0001f490  64 20 73 63 61 6e 0a 3d  3e 09 52 30 20 3d 20 31  |d scan.=>.R0 = 1|
0001f4a0  32 31 20 28 26 37 39 29  0a 09 52 31 20 3d 20 6b  |21 (&79)..R1 = k|
0001f4b0  65 79 0a 0a 5c 3c 3d 09  52 31 20 3d 20 6b 65 79  |ey..\<=.R1 = key|
0001f4c0  20 70 72 65 73 73 65 64  0a 09 52 32 20 3d 20 63  | pressed..R2 = c|
0001f4d0  6f 72 72 75 70 74 65 64  0a 0a 54 68 69 73 20 63  |orrupted..This c|
0001f4e0  68 65 63 6b 73 20 77 68  69 63 68 20 6b 65 79 73  |hecks which keys|
0001f4f0  20 61 72 65 20 62 65 69  6e 67 20 70 72 65 73 73  | are being press|
0001f500  65 64 2e 0a 54 6f 20 63  68 65 63 6b 20 73 69 6e  |ed..To check sin|
0001f510  67 6c 65 20 6b 65 79 2c  20 75 73 65 20 3c 6b 65  |gle key, use <ke|
0001f520  79 20 6e 75 6d 62 65 72  3d 3e 6f 73 5f 62 79 74  |y number=>os_byt|
0001f530  65 31 32 31 61 3e 20 45  4f 52 20 26 38 30 2e 20  |e121a> EOR &80. |
0001f540  26 46 46 20 69 73 20 72  65 74 75 72 6e 65 64 20  |&FF is returned |
0001f550  69 66 20 6b 65 79 20 69  73 20 70 72 65 73 73 65  |if key is presse|
0001f560  64 2e 0a 54 6f 20 63 68  65 63 6b 20 72 61 6e 67  |d..To check rang|
0001f570  65 2c 20 75 73 65 20 6c  6f 77 65 73 74 20 6b 65  |e, use lowest ke|
0001f580  79 20 74 6f 20 62 65 20  63 68 65 63 6b 65 64 2e  |y to be checked.|
0001f590  20 4b 65 79 20 70 72 65  73 73 65 64 20 69 73 20  | Key pressed is |
0001f5a0  72 65 74 75 72 6e 65 64  2c 20 6f 72 20 26 46 46  |returned, or &FF|
0001f5b0  20 69 66 20 6e 6f 6e 65  2e 00 00 00 44 41 54 41  | if none....DATA|
0001f5c0  4d 03 00 00 49 6e 74 65  72 6e 61 6c 20 4b 65 79  |M...Internal Key|
0001f5d0  73 0a 23 77 72 61 70 20  6f 66 66 0a 33 32 09 50  |s.#wrap off.32.P|
0001f5e0  72 69 6e 74 09 36 39 09  4a 09 31 39 09 35 09 36  |rint.69.J.19.5.6|
0001f5f0  31 09 49 6e 73 65 72 74  09 09 31 30 36 09 6b 70  |1.Insert..106.kp|
0001f600  20 30 0a 31 31 33 09 46  31 09 37 30 09 4b 09 35  | 0.113.F1.70.K.5|
0001f610  32 09 36 09 36 32 09 48  6f 6d 65 09 09 31 30 37  |2.6.62.Home..107|
0001f620  09 6b 70 20 31 0a 31 31  34 09 46 32 09 38 36 09  |.kp 1.114.F2.86.|
0001f630  4c 09 33 36 09 37 09 36  33 09 50 67 20 55 70 09  |L.36.7.63.Pg Up.|
0001f640  09 31 32 34 09 6b 70 20  32 0a 31 31 35 09 46 33  |.124.kp 2.115.F3|
0001f650  09 31 30 31 09 4d 09 32  31 09 38 09 37 38 09 50  |.101.M.21.8.78.P|
0001f660  67 20 44 6f 77 6e 09 09  31 30 38 09 6b 70 20 33  |g Down..108.kp 3|
0001f670  0a 32 30 09 46 34 09 38  35 09 4e 09 33 38 09 39  |.20.F4.85.N.38.9|
0001f680  09 37 39 09 22 09 09 31  32 32 09 6b 70 20 34 0a  |.79."..122.kp 4.|
0001f690  31 31 36 09 46 35 09 35  34 09 4f 09 31 30 32 09  |116.F5.54.O.102.|
0001f6a0  2c 09 30 09 53 68 69 66  74 09 09 31 32 33 09 6b  |,.0.Shift..123.k|
0001f6b0  70 20 35 0a 31 31 37 09  46 36 09 35 35 09 50 09  |p 5.117.F6.55.P.|
0001f6c0  32 33 09 2d 09 31 09 43  74 72 6c 09 09 32 36 09  |23.-.1.Ctrl..26.|
0001f6d0  6b 70 20 36 0a 32 32 09  46 37 09 31 36 09 51 09  |kp 6.22.F7.16.Q.|
0001f6e0  31 30 33 09 2e 09 32 09  41 6c 74 09 09 32 37 09  |103...2.Alt..27.|
0001f6f0  6b 70 20 37 0a 31 31 38  09 46 38 09 35 31 09 52  |kp 7.118.F8.51.R|
0001f700  09 31 30 34 09 2f 09 33  09 4c 65 66 74 20 53 68  |.104./.3.Left Sh|
0001f710  69 66 74 09 34 32 09 6b  70 20 38 0a 31 31 39 09  |ift.42.kp 8.119.|
0001f720  46 39 09 38 31 09 53 09  35 36 09 5b 09 34 09 4c  |F9.81.S.56.[.4.L|
0001f730  65 66 74 20 43 74 72 6c  09 34 33 09 6b 70 20 39  |eft Ctrl.43.kp 9|
0001f740  0a 33 30 09 46 31 30 09  33 35 09 54 09 31 32 30  |.30.F10.35.T.120|
0001f750  09 5c 5c 09 35 09 4c 65  66 74 20 41 6c 74 09 35  |.\\.5.Left Alt.5|
0001f760  38 09 6b 70 20 2b 0a 32  38 09 46 31 31 09 35 33  |8.kp +.28.F11.53|
0001f770  09 55 09 38 38 09 5d 09  36 09 52 69 67 68 74 20  |.U.88.].6.Right |
0001f780  53 68 69 66 74 09 35 39  09 6b 70 20 2d 0a 32 39  |Shift.59.kp -.29|
0001f790  09 46 31 32 09 39 39 09  56 09 38 37 09 3b 09 37  |.F12.99.V.87.;.7|
0001f7a0  09 52 69 67 68 74 20 43  74 72 6c 09 37 36 09 6b  |.Right Ctrl.76.k|
0001f7b0  70 20 2e 0a 36 35 09 41  09 33 33 09 57 09 31 31  |p ..65.A.33.W.11|
0001f7c0  32 09 45 53 43 09 38 09  52 69 67 68 74 20 41 6c  |2.ESC.8.Right Al|
0001f7d0  74 09 37 34 09 6b 70 20  2f 0a 31 30 30 09 42 09  |t.74.kp /.100.B.|
0001f7e0  36 36 09 58 09 39 36 09  54 41 42 09 39 38 09 53  |66.X.96.TAB.98.S|
0001f7f0  70 61 63 65 09 09 39 30  09 6b 70 20 23 0a 38 32  |pace..90.kp #.82|
0001f800  09 43 09 36 38 09 59 09  36 34 09 43 61 70 73 09  |.C.68.Y.64.Caps.|
0001f810  38 39 09 44 65 6c 65 74  65 09 09 39 31 09 6b 70  |89.Delete..91.kp|
0001f820  20 2a 0a 35 30 09 44 09  39 37 09 5a 09 33 31 09  | *.50.D.97.Z.31.|
0001f830  53 63 72 6f 6c 6c 4c 09  37 33 09 52 65 74 75 72  |ScrollL.73.Retur|
0001f840  6e 09 09 36 30 09 6b 70  20 45 6e 74 65 72 0a 33  |n..60.kp Enter.3|
0001f850  34 09 45 09 33 39 09 30  09 37 37 09 4e 75 6d 4c  |4.E.39.0.77.NumL|
0001f860  09 31 30 35 09 43 6f 70  79 09 09 39 09 4c 65 66  |.105.Copy..9.Lef|
0001f870  74 20 6d 6f 75 73 65 0a  36 37 09 46 09 34 38 09  |t mouse.67.F.48.|
0001f880  31 09 34 34 09 42 72 65  61 6b 09 35 37 09 75 70  |1.44.Break.57.up|
0001f890  09 09 31 30 09 43 65 6e  74 65 72 20 6d 6f 75 73  |..10.Center mous|
0001f8a0  65 0a 38 33 09 47 09 34  39 09 32 09 34 35 09 7e  |e.83.G.49.2.45.~|
0001f8b0  09 31 32 31 09 72 69 67  68 74 09 09 31 31 09 52  |.121.right..11.R|
0001f8c0  69 67 68 74 20 6d 6f 75  73 65 0a 38 34 09 48 09  |ight mouse.84.H.|
0001f8d0  31 37 09 33 09 34 36 09  a3 09 32 35 09 6c 65 66  |17.3.46...25.lef|
0001f8e0  74 09 09 39 34 09 65 78  74 72 61 20 6b 65 79 0a  |t..94.extra key.|
0001f8f0  33 37 09 49 09 31 38 09  34 09 34 37 09 5c 3c 2d  |37.I.18.4.47.\<-|
0001f900  7c 09 34 31 09 64 6f 77  6e 00 00 00 44 41 54 41  ||.41.down...DATA|
0001f910  b4 02 00 00 4f 53 5f 42  79 74 65 20 32 30 30 20  |....OS_Byte 200 |
0001f920  20 41 6c 74 65 72 20 42  72 65 61 6b 20 61 6e 64  | Alter Break and|
0001f930  20 45 73 63 61 70 65 20  65 66 66 65 63 74 0a 3d  | Escape effect.=|
0001f940  3e 09 52 30 20 3d 09 32  30 30 20 28 26 43 38 29  |>.R0 =.200 (&C8)|
0001f950  0a 09 52 31 20 3d 09 45  4f 52 20 76 61 6c 75 65  |..R1 =.EOR value|
0001f960  0a 09 52 32 20 3d 09 41  4e 44 20 76 61 6c 75 65  |..R2 =.AND value|
0001f970  0a 0a 5c 3c 3d 09 52 30  20 3d 09 70 72 65 73 65  |..\<=.R0 =.prese|
0001f980  72 76 65 64 0a 09 52 31  20 3d 09 73 74 61 74 65  |rved..R1 =.state|
0001f990  20 62 65 66 6f 72 65 20  62 65 69 6e 67 20 6f 76  | before being ov|
0001f9a0  65 72 77 72 69 74 74 65  6e 0a 09 52 32 20 3d 09  |erwritten..R2 =.|
0001f9b0  6b 65 79 62 6f 61 72 64  20 64 69 73 61 62 6c 65  |keyboard disable|
0001f9c0  20 66 6c 61 67 20 28 73  65 65 20 4f 53 5f 42 79  | flag (see OS_By|
0001f9d0  74 65 20 32 30 31 29 0a  20 20 20 20 20 20 20 20  |te 201).        |
0001f9e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0001fa00  20 20 20 20 20 20 20 20  20 20 0a 54 68 69 73 20  |          .This |
0001fa10  63 61 6c 6c 20 63 61 6e  20 72 65 61 64 20 6f 72  |call can read or|
0001fa20  20 63 68 61 6e 67 65 20  74 68 65 20 65 66 66 65  | change the effe|
0001fa30  63 74 73 20 6f 66 20 61  20 72 65 73 65 74 20 28  |cts of a reset (|
0001fa40  69 6e 63 6c 75 64 69 6e  67 20 72 65 73 65 74 73  |including resets|
0001fa50  20 63 61 75 73 65 64 20  62 79 20 42 72 65 61 6b  | caused by Break|
0001fa60  29 20 61 6e 64 20 6f 66  20 45 73 63 61 70 65 2e  |) and of Escape.|
0001fa70  0a 0a 54 68 65 20 62 6f  74 74 6f 6d 20 74 77 6f  |..The bottom two|
0001fa80  20 62 69 74 73 20 6f 66  20 52 31 20 68 61 76 65  | bits of R1 have|
0001fa90  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
0001faa0  69 67 6e 69 66 69 63 61  6e 63 65 3a 0a 0a 23 54  |ignificance:..#T|
0001fab0  61 62 0a 42 69 74 09 56  61 6c 75 65 09 45 66 66  |ab.Bit.Value.Eff|
0001fac0  65 63 74 0a 23 6c 69 6e  65 0a 30 09 30 09 4e 6f  |ect.#line.0.0.No|
0001fad0  72 6d 61 6c 20 65 73 63  61 70 65 20 61 63 74 69  |rmal escape acti|
0001fae0  6f 6e 0a 09 31 09 45 73  63 61 70 65 20 64 69 73  |on..1.Escape dis|
0001faf0  61 62 6c 65 64 20 75 6e  6c 65 73 73 20 63 61 75  |abled unless cau|
0001fb00  73 65 64 20 62 79 20 4f  53 5f 42 79 74 65 20 31  |sed by OS_Byte 1|
0001fb10  32 35 0a 31 09 30 09 4e  6f 72 6d 61 6c 20 72 65  |25.1.0.Normal re|
0001fb20  73 65 74 20 61 63 74 69  6f 6e 0a 09 31 09 50 6f  |set action..1.Po|
0001fb30  77 65 72 20 6f 6e 20 72  65 73 65 74 20 28 6f 6e  |wer on reset (on|
0001fb40  6c 79 20 69 66 20 62 69  74 73 20 32 2d 37 20 6f  |ly if bits 2-7 o|
0001fb50  66 20 52 31 20 61 72 65  20 7a 65 72 6f 29 20 54  |f R1 are zero) T|
0001fb60  68 69 73 20 6d 65 61 6e  73 20 61 20 76 61 6c 75  |his means a valu|
0001fb70  65 20 6f 66 20 25 30 30  30 30 30 30 30 31 78 20  |e of %00000001x |
0001fb80  63 61 75 73 65 73 20 61  20 6d 65 6d 6f 72 79 20  |causes a memory |
0001fb90  63 6c 65 61 72 20 28 6e  6f 20 6d 61 74 74 65 72  |clear (no matter|
0001fba0  20 77 68 61 74 20 6b 69  6e 64 20 6f 66 20 72 65  | what kind of re|
0001fbb0  73 65 74 20 77 61 73 20  70 72 65 73 73 65 64 29  |set was pressed)|
0001fbc0  44 41 54 41 2f 03 00 00  4f 53 5f 42 79 74 65 20  |DATA/...OS_Byte |
0001fbd0  32 32 39 20 20 41 6c 74  65 72 20 45 73 63 61 70  |229  Alter Escap|
0001fbe0  65 20 6b 65 79 20 73 74  61 74 75 73 0a 3d 3e 09  |e key status.=>.|
0001fbf0  52 30 20 3d 09 32 32 39  20 28 26 45 35 29 0a 09  |R0 =.229 (&E5)..|
0001fc00  52 31 20 3d 09 45 4f 52  20 76 61 6c 75 65 0a 09  |R1 =.EOR value..|
0001fc10  52 32 20 3d 09 41 4e 44  20 76 61 6c 75 65 0a 0a  |R2 =.AND value..|
0001fc20  5c 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |\<=.R0 preserved|
0001fc30  0a 09 52 31 20 3d 09 73  74 61 74 65 20 62 65 66  |..R1 =.state bef|
0001fc40  6f 72 65 20 62 65 69 6e  67 20 6f 76 65 72 77 72  |ore being overwr|
0001fc50  69 74 74 65 6e 0a 09 52  32 20 3d 09 65 73 63 61  |itten..R2 =.esca|
0001fc60  70 65 20 65 66 66 65 63  74 73 20 28 73 65 65 20  |pe effects (see |
0001fc70  4f 53 5f 42 79 74 65 20  32 33 30 29 0a 20 20 20  |OS_Byte 230).   |
0001fc80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0001fca0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
0001fcb0  54 68 69 73 20 63 61 6c  6c 20 61 6c 6c 6f 77 73  |This call allows|
0001fcc0  20 79 6f 75 20 74 6f 20  65 6e 61 62 6c 65 20 6f  | you to enable o|
0001fcd0  72 20 64 69 73 61 62 6c  65 20 74 68 65 20 67 65  |r disable the ge|
0001fce0  6e 65 72 61 74 69 6f 6e  20 6f 66 20 65 73 63 61  |neration of esca|
0001fcf0  70 65 20 63 6f 6e 64 69  74 69 6f 6e 73 2c 20 61  |pe conditions, a|
0001fd00  6e 64 20 74 6f 20 72 65  61 64 20 74 68 65 20 63  |nd to read the c|
0001fd10  75 72 72 65 6e 74 20 73  65 74 74 69 6e 67 2e 20  |urrent setting. |
0001fd20  45 73 63 61 70 65 20 63  6f 6e 64 69 74 69 6f 6e  |Escape condition|
0001fd30  73 20 6d 61 79 20 62 65  20 63 61 75 73 65 64 20  |s may be caused |
0001fd40  62 79 20 70 72 65 73 73  69 6e 67 20 74 68 65 20  |by pressing the |
0001fd50  63 75 72 72 65 6e 74 20  65 73 63 61 70 65 20 63  |current escape c|
0001fd60  68 61 72 61 63 74 65 72  20 6f 72 20 62 79 20 69  |haracter or by i|
0001fd70  6e 73 65 72 74 69 6e 67  20 69 74 20 69 6e 74 6f  |nserting it into|
0001fd80  20 74 68 65 20 69 6e 70  75 74 20 62 75 66 66 65  | the input buffe|
0001fd90  72 20 77 69 74 68 20 4f  53 5f 42 79 74 65 20 31  |r with OS_Byte 1|
0001fda0  35 33 2e 0a 0a 49 66 20  74 68 65 20 76 61 6c 75  |53...If the valu|
0001fdb0  65 20 69 6e 20 52 31 20  70 61 73 73 65 64 20 69  |e in R1 passed i|
0001fdc0  73 20 7a 65 72 6f 2c 20  77 68 69 63 68 20 69 73  |s zero, which is|
0001fdd0  20 74 68 65 20 64 65 66  61 75 6c 74 2c 20 74 68  | the default, th|
0001fde0  65 6e 20 65 73 63 61 70  65 20 63 6f 6e 64 69 74  |en escape condit|
0001fdf0  69 6f 6e 73 20 61 72 65  20 65 6e 61 62 6c 65 64  |ions are enabled|
0001fe00  2e 20 41 6e 79 20 6e 6f  6e 2d 7a 65 72 6f 20 76  |. Any non-zero v|
0001fe10  61 6c 75 65 20 77 69 6c  6c 20 64 69 73 61 62 6c  |alue will disabl|
0001fe20  65 20 74 68 65 6d 2e 20  57 68 65 6e 20 74 68 65  |e them. When the|
0001fe30  79 27 72 65 20 64 69 73  61 62 6c 65 64 2c 20 74  |y're disabled, t|
0001fe40  68 65 20 63 75 72 72 65  6e 74 20 65 73 63 61 70  |he current escap|
0001fe50  65 20 63 68 61 72 61 63  74 65 72 20 73 65 74 20  |e character set |
0001fe60  62 79 20 4f 53 5f 42 79  74 65 20 32 32 30 20 77  |by OS_Byte 220 w|
0001fe70  69 6c 6c 20 70 61 73 73  20 74 68 72 6f 75 67 68  |ill pass through|
0001fe80  20 74 68 65 20 69 6e 70  75 74 20 73 74 72 65 61  | the input strea|
0001fe90  6d 20 75 6e 61 6c 74 65  72 65 64 2e 0a 0a 3c 4f  |m unaltered...<O|
0001fea0  53 5f 42 79 74 65 20 32  30 30 3d 3e 4f 53 5f 62  |S_Byte 200=>OS_b|
0001feb0  79 74 65 32 30 30 3e 20  63 61 6e 20 61 6c 73 6f  |yte200> can also|
0001fec0  20 63 6f 6e 74 72 6f 6c  20 74 68 65 20 65 6e 61  | control the ena|
0001fed0  62 6c 69 6e 67 20 6f 66  20 74 68 65 20 65 73 63  |bling of the esc|
0001fee0  61 70 65 20 63 6f 6e 64  69 74 69 6f 6e 73 2e 00  |ape conditions..|
0001fef0  44 41 54 41 df 02 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
0001ff00  32 34 37 20 20 41 6c 74  65 72 20 42 72 65 61 6b  |247  Alter Break|
0001ff10  20 6b 65 79 20 61 63 74  69 6f 6e 73 0a 3d 3e 09  | key actions.=>.|
0001ff20  52 30 20 3d 20 32 34 37  20 28 26 46 37 29 0a 09  |R0 = 247 (&F7)..|
0001ff30  52 31 20 3d 20 45 4f 52  20 76 61 6c 75 65 0a 09  |R1 = EOR value..|
0001ff40  52 32 20 3d 20 41 4e 44  20 76 61 6c 75 65 0a 0a  |R2 = AND value..|
0001ff50  5c 3c 3d 09 52 30 20 3d  20 70 72 65 73 65 72 76  |\<=.R0 = preserv|
0001ff60  65 64 0a 09 52 31 20 3d  20 76 61 6c 75 65 20 62  |ed..R1 = value b|
0001ff70  65 66 6f 72 65 20 62 65  69 6e 67 20 6f 76 65 72  |efore being over|
0001ff80  77 72 69 74 74 65 6e 0a  09 52 32 20 3d 20 63 6f  |written..R2 = co|
0001ff90  72 72 75 70 74 65 64 0a  20 20 20 20 20 20 20 20  |rrupted.        |
0001ffa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0001ffc0  20 20 20 20 20 20 20 20  20 20 0a 54 68 69 73 20  |          .This |
0001ffd0  63 61 6c 6c 20 72 65 61  64 73 20 61 6e 64 20 63  |call reads and c|
0001ffe0  68 61 6e 67 65 73 20 74  68 65 20 72 65 73 75 6c  |hanges the resul|
0001fff0  74 20 6f 66 20 70 72 65  73 73 69 6e 67 20 42 72  |t of pressing Br|
00020000  65 61 6b 2e 20 54 68 65  20 76 61 6c 75 65 20 62  |eak. The value b|
00020010  79 74 65 20 61 6c 74 65  72 73 20 42 72 65 61 6b  |yte alters Break|
00020020  20 61 6e 64 20 6d 6f 64  69 66 69 65 72 73 20 6f  | and modifiers o|
00020030  66 20 69 74 20 61 73 20  66 6f 6c 6c 6f 77 73 3a  |f it as follows:|
00020040  0a 0a 23 54 61 62 0a 42  69 74 73 09 4b 65 79 20  |..#Tab.Bits.Key |
00020050  63 6f 6d 62 69 6e 61 74  69 6f 6e 0a 30 2c 31 09  |combination.0,1.|
00020060  42 72 65 61 6b 0a 32 2c  33 09 53 68 69 66 74 20  |Break.2,3.Shift |
00020070  42 72 65 61 6b 0a 34 2c  35 09 43 74 72 6c 20 42  |Break.4,5.Ctrl B|
00020080  72 65 61 6b 0a 36 2c 37  09 43 74 72 6c 20 53 68  |reak.6,7.Ctrl Sh|
00020090  69 66 74 20 42 72 65 61  6b 0a 0a 45 61 63 68 20  |ift Break..Each |
000200a0  74 77 6f 20 62 69 74 20  6e 75 6d 62 65 72 73 20  |two bit numbers |
000200b0  63 61 6e 20 6d 65 61 6e  20 6f 6e 65 20 6f 66 20  |can mean one of |
000200c0  74 68 65 73 65 3a 0a 0a  30 30 09 41 63 74 20 61  |these:..00.Act a|
000200d0  73 20 72 65 73 65 74 0a  30 31 09 41 63 74 20 61  |s reset.01.Act a|
000200e0  73 20 65 73 63 61 70 65  20 6b 65 79 0a 31 30 09  |s escape key.10.|
000200f0  4e 6f 20 65 66 66 65 63  74 0a 31 31 09 75 6e 64  |No effect.11.und|
00020100  65 66 69 6e 65 64 0a 0a  54 68 65 20 64 65 66 61  |efined..The defa|
00020110  75 6c 74 20 69 73 20 25  30 30 30 30 30 30 30 31  |ult is %00000001|
00020120  2c 20 73 6f 20 42 72 65  61 6b 20 63 61 75 73 65  |, so Break cause|
00020130  73 20 61 6e 20 65 73 63  61 70 65 20 63 6f 6e 64  |s an escape cond|
00020140  69 74 69 6f 6e 2c 20 74  6f 67 65 74 68 65 72 20  |ition, together |
00020150  77 69 74 68 20 53 68 69  66 74 20 61 6e 64 2f 6f  |with Shift and/o|
00020160  72 20 43 74 72 6c 20 69  74 20 61 63 74 73 20 6c  |r Ctrl it acts l|
00020170  69 6b 65 20 74 68 65 20  72 65 73 65 74 20 62 75  |ike the reset bu|
00020180  74 74 6f 6e 2e 20 50 6c  65 61 73 65 20 6e 6f 74  |tton. Please not|
00020190  65 20 74 68 61 74 20 74  68 69 73 20 53 57 49 20  |e that this SWI |
000201a0  61 6c 73 6f 20 61 6c 74  65 72 73 20 74 68 65 20  |also alters the |
000201b0  43 4d 4f 53 20 77 68 65  6e 20 77 72 69 74 69 6e  |CMOS when writin|
000201c0  67 20 61 20 6e 65 77 20  73 74 61 74 75 73 2e 00  |g a new status..|
000201d0  44 41 54 41 9f 03 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000201e0  32 35 34 20 20 41 6c 74  65 72 20 65 66 66 65 63  |254  Alter effec|
000201f0  74 20 6f 66 20 6b 65 79  70 61 64 20 6b 65 79 73  |t of keypad keys|
00020200  0a 3d 3e 09 52 30 20 3d  20 32 35 34 20 28 26 46  |.=>.R0 = 254 (&F|
00020210  45 29 0a 09 52 31 20 3d  20 45 4f 52 20 76 61 6c  |E)..R1 = EOR val|
00020220  75 65 0a 09 52 32 20 3d  20 41 4e 44 20 76 61 6c  |ue..R2 = AND val|
00020230  75 65 0a 0a 5c 3c 3d 09  52 30 20 3d 20 70 72 65  |ue..\<=.R0 = pre|
00020240  73 65 72 76 65 64 0a 09  52 31 20 3d 20 76 61 6c  |served..R1 = val|
00020250  75 65 20 62 65 66 6f 72  65 20 62 65 69 6e 67 20  |ue before being |
00020260  6f 76 65 72 77 72 69 74  74 65 6e 0a 09 52 32 20  |overwritten..R2 |
00020270  3d 20 63 6f 72 72 75 70  74 65 64 0a 20 20 20 20  |= corrupted.    |
00020280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000202a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 54  |              .T|
000202b0  68 69 73 20 63 61 6c 6c  20 61 6c 6c 6f 77 73 20  |his call allows |
000202c0  79 6f 75 20 74 6f 20 65  6e 61 62 6c 65 20 6f 72  |you to enable or|
000202d0  20 64 69 73 61 62 6c 65  20 74 68 65 20 65 66 66  | disable the eff|
000202e0  65 63 74 20 6f 66 20 53  68 69 66 74 20 61 6e 64  |ect of Shift and|
000202f0  20 43 74 72 6c 20 6f 6e  20 74 68 65 20 6e 75 6d  | Ctrl on the num|
00020300  65 72 69 63 20 6b 65 79  70 61 64 20 6f 72 20 74  |eric keypad or t|
00020310  6f 20 72 65 61 64 20 74  68 65 20 63 75 72 72 65  |o read the curre|
00020320  6e 74 20 73 74 61 74 65  2e 20 54 68 65 73 65 20  |nt state. These |
00020330  6b 65 79 73 20 6d 61 79  20 6d 6f 64 69 66 79 20  |keys may modify |
00020340  74 68 65 20 63 6f 64 65  20 6a 75 73 74 20 62 65  |the code just be|
00020350  66 6f 72 65 20 69 74 20  69 73 20 69 6e 73 65 72  |fore it is inser|
00020360  74 65 64 20 69 6e 74 6f  20 74 68 65 20 69 6e 70  |ted into the inp|
00020370  75 74 20 62 75 66 66 65  72 2e 0a 0a 49 66 20 52  |ut buffer...If R|
00020380  31 20 69 73 20 7a 65 72  6f 2c 20 74 68 65 6e 20  |1 is zero, then |
00020390  53 68 69 66 74 20 61 6e  64 20 43 74 72 6c 20 61  |Shift and Ctrl a|
000203a0  72 65 20 65 6e 61 62 6c  65 64 2e 20 41 6e 79 20  |re enabled. Any |
000203b0  6e 6f 6e 2d 7a 65 72 6f  20 76 61 6c 75 65 20 77  |non-zero value w|
000203c0  69 6c 6c 20 64 69 73 61  62 6c 65 20 74 68 65 6d  |ill disable them|
000203d0  2e 20 54 68 69 73 20 69  73 20 74 68 65 20 64 65  |. This is the de|
000203e0  66 61 75 6c 74 2e 0a 0a  23 54 61 62 0a 49 66 20  |fault...#Tab.If |
000203f0  53 68 69 66 74 2f 43 74  72 6c 20 61 72 65 20 65  |Shift/Ctrl are e|
00020400  6e 61 62 6c 65 64 2c 20  74 68 65 6e 20 74 68 65  |nabled, then the|
00020410  20 66 6f 6c 6c 6f 77 69  6e 67 20 61 63 74 69 6f  | following actio|
00020420  6e 20 6f 63 63 75 72 20  64 65 70 65 6e 64 69 6e  |n occur dependin|
00020430  67 20 6f 6e 20 74 68 65  20 76 61 6c 75 65 20 67  |g on the value g|
00020440  65 6e 65 72 61 74 65 64  20 62 79 20 61 20 6b 65  |enerated by a ke|
00020450  79 70 61 64 20 6b 65 79  3a 0a 0a 2a 20 6b 65 79  |ypad key:..* key|
00020460  20 76 61 6c 75 65 20 3e  3d 26 38 30 09 3a 09 53  | value >=&80.:.S|
00020470  68 69 66 74 20 65 78 63  6c 75 73 69 76 65 20 4f  |hift exclusive O|
00020480  52 73 20 74 68 65 20 76  61 6c 75 65 20 77 69 74  |Rs the value wit|
00020490  68 20 26 31 30 20 43 74  72 6c 20 20 65 78 63 6c  |h &10 Ctrl  excl|
000204a0  75 73 69 76 65 20 4f 52  73 20 74 68 65 20 76 61  |usive ORs the va|
000204b0  6c 75 65 20 77 69 74 68  20 26 32 30 0a 2a 20 6b  |lue with &20.* k|
000204c0  65 79 20 76 61 6c 75 65  20 5c 3c 26 38 30 09 3a  |ey value \<&80.:|
000204d0  09 53 68 69 66 74 20 61  6e 64 20 43 74 72 6c 20  |.Shift and Ctrl |
000204e0  73 74 69 6c 6c 20 68 61  76 65 20 6e 6f 20 65 66  |still have no ef|
000204f0  66 65 63 74 2e 0a 0a 49  66 20 4e 75 6d 4c 6f 63  |fect...If NumLoc|
00020500  6b 20 69 73 20 6f 66 66  2c 20 74 68 65 6e 20 61  |k is off, then a|
00020510  20 2a 66 78 20 32 35 34  20 30 20 6d 61 6b 65 73  | *fx 254 0 makes|
00020520  20 74 68 65 20 6b 65 79  70 61 64 20 74 6f 20 61  | the keypad to a|
00020530  63 74 20 65 78 61 63 74  6c 79 20 6c 69 6b 65 20  |ct exactly like |
00020540  74 68 65 20 63 75 72 73  6f 72 20 6b 65 79 73 2c  |the cursor keys,|
00020550  20 69 6e 63 6c 75 64 69  6e 67 20 53 68 69 66 74  | including Shift|
00020560  2c 20 43 74 72 6c 20 6f  72 20 62 6f 74 68 2e 00  |, Ctrl or both..|
00020570  44 41 54 41 95 10 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00020580  49 6e 64 65 78 0a 30 09  26 30 30 09 44 69 73 70  |Index.0.&00.Disp|
00020590  6c 61 79 20 4f 53 20 76  65 72 73 69 6f 6e 20 69  |lay OS version i|
000205a0  6e 66 6f 0a 31 09 26 30  31 09 57 72 69 74 65 20  |nfo.1.&01.Write |
000205b0  75 73 65 72 20 66 6c 61  67 0a 32 09 26 30 32 09  |user flag.2.&02.|
000205c0  3c 53 70 65 63 69 66 79  20 69 6e 70 75 74 20 73  |<Specify input s|
000205d0  74 72 65 61 6d 3d 3e 6f  73 5f 62 79 74 65 30 30  |tream=>os_byte00|
000205e0  32 3e 0a 33 09 26 30 33  09 53 70 65 63 69 66 79  |2>.3.&03.Specify|
000205f0  20 6f 75 74 70 75 74 20  73 74 72 65 61 6d 0a 34  | output stream.4|
00020600  09 26 30 34 09 3c 43 75  72 73 6f 72 20 6b 65 79  |.&04.<Cursor key|
00020610  20 73 74 61 74 75 73 3d  3e 6f 73 5f 62 79 74 65  | status=>os_byte|
00020620  30 30 34 3e 0a 35 09 26  30 35 09 57 72 69 74 65  |004>.5.&05.Write|
00020630  20 70 72 69 6e 74 65 72  20 64 72 69 76 65 72 20  | printer driver |
00020640  74 79 70 65 0a 36 09 26  30 36 09 57 72 69 74 65  |type.6.&06.Write|
00020650  20 70 72 69 6e 74 65 72  20 69 67 6e 6f 72 65 20  | printer ignore |
00020660  63 68 61 72 0a 37 09 26  30 37 09 57 72 69 74 65  |char.7.&07.Write|
00020670  20 52 53 32 33 32 20 72  65 63 65 69 76 65 20 72  | RS232 receive r|
00020680  61 74 65 0a 38 09 26 30  38 09 57 72 69 74 65 20  |ate.8.&08.Write |
00020690  52 53 32 33 32 20 74 72  61 6e 73 6d 69 74 20 72  |RS232 transmit r|
000206a0  61 74 65 0a 39 09 26 30  39 09 57 72 69 74 65 20  |ate.9.&09.Write |
000206b0  64 75 72 61 74 69 6f 6e  20 6f 66 20 66 69 72 73  |duration of firs|
000206c0  74 20 63 6f 6c 6f 75 72  0a 31 30 09 26 30 41 09  |t colour.10.&0A.|
000206d0  57 72 69 74 65 20 64 75  72 61 74 69 6f 6e 20 6f  |Write duration o|
000206e0  66 20 73 65 63 6f 6e 64  20 63 6f 6c 6f 75 72 0a  |f second colour.|
000206f0  31 31 09 26 30 42 09 3c  57 72 69 74 65 20 6b 65  |11.&0B.<Write ke|
00020700  79 62 6f 61 72 64 20 61  75 74 6f 2d 72 65 70 65  |yboard auto-repe|
00020710  61 74 20 64 65 6c 61 79  3d 3e 6f 73 5f 62 79 74  |at delay=>os_byt|
00020720  65 30 31 31 3e 0a 31 32  09 26 30 43 09 3c 57 72  |e011>.12.&0C.<Wr|
00020730  69 74 65 20 6b 65 79 62  6f 61 72 64 20 61 75 74  |ite keyboard aut|
00020740  6f 2d 72 65 70 65 61 74  20 72 61 74 65 3d 3e 6f  |o-repeat rate=>o|
00020750  73 5f 62 79 74 65 30 31  32 3e 0a 31 33 09 26 30  |s_byte012>.13.&0|
00020760  44 09 3c 44 69 73 61 62  6c 65 20 65 76 65 6e 74  |D.<Disable event|
00020770  3d 3e 6f 73 5f 62 79 74  65 30 31 33 3e 0a 31 34  |=>os_byte013>.14|
00020780  09 26 30 45 09 3c 45 6e  61 62 6c 65 20 65 76 65  |.&0E.<Enable eve|
00020790  6e 74 3d 3e 6f 73 5f 62  79 74 65 30 31 34 3e 0a  |nt=>os_byte014>.|
000207a0  31 35 09 26 30 46 09 3c  46 6c 75 73 68 20 62 75  |15.&0F.<Flush bu|
000207b0  66 66 65 72 3d 3e 6f 73  5f 62 79 74 65 30 31 35  |ffer=>os_byte015|
000207c0  3e 0a 31 38 09 26 31 32  09 52 65 73 65 74 20 66  |>.18.&12.Reset f|
000207d0  75 6e 63 74 69 6f 6e 20  6b 65 79 73 0a 31 39 09  |unction keys.19.|
000207e0  26 31 33 09 3c 57 61 69  74 20 66 6f 72 20 76 73  |&13.<Wait for vs|
000207f0  79 6e 63 3d 3e 6f 73 5f  62 79 74 65 30 31 39 3e  |ync=>os_byte019>|
00020800  0a 32 30 09 26 31 34 09  3c 52 65 73 65 74 20 66  |.20.&14.<Reset f|
00020810  6f 6e 74 20 64 65 66 69  6e 69 74 69 6f 6e 73 3d  |ont definitions=|
00020820  3e 6f 73 5f 62 79 74 65  30 32 30 3e 0a 32 31 09  |>os_byte020>.21.|
00020830  26 31 35 09 3c 46 6c 75  73 68 20 73 65 6c 65 63  |&15.<Flush selec|
00020840  74 65 64 20 62 75 66 66  65 72 3d 3e 6f 73 5f 62  |ted buffer=>os_b|
00020850  79 74 65 30 32 31 3e 0a  32 35 09 26 31 39 09 3c  |yte021>.25.&19.<|
00020860  52 65 73 65 74 20 67 72  6f 75 70 20 6f 66 20 66  |Reset group of f|
00020870  6f 6e 74 20 64 65 66 69  6e 69 74 69 6f 6e 73 3d  |ont definitions=|
00020880  3e 6f 73 5f 62 79 74 65  30 32 35 3e 0a 37 30 09  |>os_byte025>.70.|
00020890  26 34 36 09 52 65 61 64  20 63 6f 75 6e 74 72 79  |&46.Read country|
000208a0  20 6e 75 6d 62 65 72 0a  37 31 09 26 34 37 09 52  | number.71.&47.R|
000208b0  65 61 64 20 61 6c 70 68  61 62 65 74 20 6e 75 6d  |ead alphabet num|
000208c0  62 65 72 0a 31 30 36 09  26 36 41 09 3c 53 65 6c  |ber.106.&6A.<Sel|
000208d0  65 63 74 20 70 6f 69 6e  74 65 72 20 2f 20 41 63  |ect pointer / Ac|
000208e0  74 69 76 61 74 65 20 6d  6f 75 73 65 3d 3e 6f 73  |tivate mouse=>os|
000208f0  5f 62 79 74 65 31 30 36  3e 0a 31 31 32 09 26 37  |_byte106>.112.&7|
00020900  30 09 3c 57 72 69 74 65  20 56 44 55 20 64 72 69  |0.<Write VDU dri|
00020910  76 65 72 20 73 63 72 65  65 6e 20 62 61 6e 6b 3d  |ver screen bank=|
00020920  3e 6f 73 5f 62 79 74 65  31 31 32 3e 0a 31 31 33  |>os_byte112>.113|
00020930  09 26 37 31 09 3c 57 72  69 74 65 20 64 69 73 70  |.&71.<Write disp|
00020940  6c 61 79 20 68 61 72 64  77 61 72 65 20 73 63 72  |lay hardware scr|
00020950  65 65 6e 20 62 61 6e 6b  3d 3e 6f 73 5f 62 79 74  |een bank=>os_byt|
00020960  65 31 31 33 3e 0a 31 31  34 09 26 37 32 09 57 72  |e113>.114.&72.Wr|
00020970  69 74 65 20 73 68 61 64  6f 77 2f 6e 6f 6e 2d 73  |ite shadow/non-s|
00020980  68 61 64 6f 77 20 73 74  61 74 65 0a 31 31 37 09  |hadow state.117.|
00020990  26 37 35 09 3c 52 65 61  64 20 56 44 55 20 73 74  |&75.<Read VDU st|
000209a0  61 74 75 73 3d 3e 6f 73  5f 62 79 74 65 31 31 37  |atus=>os_byte117|
000209b0  3e 0a 31 31 38 09 26 37  36 09 3c 52 65 66 6c 65  |>.118.&76.<Refle|
000209c0  63 74 20 6b 65 79 62 6f  61 72 64 20 73 74 61 74  |ct keyboard stat|
000209d0  75 73 20 69 6e 20 4c 45  44 73 3d 3e 6f 73 5f 62  |us in LEDs=>os_b|
000209e0  79 74 65 31 31 38 3e 0a  31 32 30 09 26 37 38 09  |yte118>.120.&78.|
000209f0  57 72 69 74 65 20 6b 65  79 73 20 70 72 65 73 73  |Write keys press|
00020a00  65 64 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 0a 31  |ed information.1|
00020a10  32 31 09 26 37 39 09 3c  4b 65 79 62 6f 61 72 64  |21.&79.<Keyboard|
00020a20  20 73 63 61 6e 3d 3e 6f  73 5f 62 79 74 65 31 32  | scan=>os_byte12|
00020a30  31 3e 0a 31 32 32 09 26  37 41 09 4b 65 79 62 6f  |1>.122.&7A.Keybo|
00020a40  61 72 64 20 73 63 61 6e  20 66 72 6f 6d 20 31 36  |ard scan from 16|
00020a50  20 64 65 63 69 6d 61 6c  0a 31 32 34 09 26 37 43  | decimal.124.&7C|
00020a60  09 43 6c 65 61 72 20 65  73 63 61 70 65 20 63 6f  |.Clear escape co|
00020a70  6e 64 69 74 69 6f 6e 0a  31 32 35 09 26 37 44 09  |ndition.125.&7D.|
00020a80  53 65 74 20 65 73 63 61  70 65 20 63 6f 6e 64 69  |Set escape condi|
00020a90  74 69 6f 6e 0a 31 32 36  09 26 37 45 09 41 63 6b  |tion.126.&7E.Ack|
00020aa0  6e 6f 77 6c 65 64 67 65  20 65 73 63 61 70 65 20  |nowledge escape |
00020ab0  63 6f 6e 64 69 74 69 6f  6e 0a 31 32 37 09 26 37  |condition.127.&7|
00020ac0  46 09 43 68 65 63 6b 20  66 6f 72 20 65 6e 64 20  |F.Check for end |
00020ad0  6f 66 20 66 69 6c 65 0a  31 32 38 09 26 38 30 09  |of file.128.&80.|
00020ae0  47 65 74 20 62 75 66 66  65 72 2f 6d 6f 75 73 65  |Get buffer/mouse|
00020af0  20 73 74 61 74 75 73 0a  31 32 39 09 26 38 31 09  | status.129.&81.|
00020b00  53 63 61 6e 20 66 6f 72  20 61 20 70 61 72 74 69  |Scan for a parti|
00020b10  63 75 6c 61 72 20 6b 65  79 0a 31 33 34 09 26 38  |cular key.134.&8|
00020b20  36 09 3c 52 65 61 64 20  74 65 78 74 20 63 75 72  |6.<Read text cur|
00020b30  73 6f 72 20 70 6f 73 69  74 69 6f 6e 3d 3e 6f 73  |sor position=>os|
00020b40  5f 62 79 74 65 31 33 34  3e 0a 31 33 35 09 26 38  |_byte134>.135.&8|
00020b50  37 09 3c 52 65 61 64 20  63 68 61 72 20 61 74 20  |7.<Read char at |
00020b60  74 65 78 74 20 63 75 72  73 6f 72 2c 20 61 6e 64  |text cursor, and|
00020b70  20 73 63 72 65 65 6e 20  6d 6f 64 65 3d 3e 6f 73  | screen mode=>os|
00020b80  5f 62 79 74 65 31 33 35  3e 0a 31 33 38 09 26 38  |_byte135>.138.&8|
00020b90  41 09 49 6e 73 65 72 74  20 63 68 61 72 20 69 6e  |A.Insert char in|
00020ba0  74 6f 20 62 75 66 66 65  72 0a 31 33 39 09 26 38  |to buffer.139.&8|
00020bb0  42 09 57 72 69 74 65 20  66 69 6c 69 6e 67 20 73  |B.Write filing s|
00020bc0  79 73 74 65 6d 20 6f 70  74 69 6f 6e 73 0a 31 34  |ystem options.14|
00020bd0  33 09 26 38 46 09 49 73  73 75 65 20 6d 6f 64 75  |3.&8F.Issue modu|
00020be0  6c 65 20 73 65 72 76 69  63 65 20 63 61 6c 6c 0a  |le service call.|
00020bf0  31 34 34 09 26 39 30 09  3c 53 65 74 20 76 65 72  |144.&90.<Set ver|
00020c00  74 69 63 61 6c 20 73 63  72 65 65 6e 20 73 68 69  |tical screen shi|
00020c10  66 74 2c 20 61 6e 64 20  69 6e 74 65 72 6c 61 63  |ft, and interlac|
00020c20  65 3d 3e 6f 73 5f 62 79  74 65 31 34 34 3e 0a 31  |e=>os_byte144>.1|
00020c30  34 35 09 26 39 31 09 47  65 74 20 63 68 61 72 20  |45.&91.Get char |
00020c40  66 72 6f 6d 20 62 75 66  66 65 72 0a 31 35 32 09  |from buffer.152.|
00020c50  26 39 38 09 45 78 61 6d  69 6e 65 20 62 75 66 66  |&98.Examine buff|
00020c60  65 72 20 73 74 61 74 75  73 0a 31 35 33 09 26 39  |er status.153.&9|
00020c70  39 09 49 6e 73 65 72 74  20 63 68 61 72 20 69 6e  |9.Insert char in|
00020c80  74 6f 20 62 75 66 66 65  72 0a 31 35 36 09 26 39  |to buffer.156.&9|
00020c90  43 09 52 65 61 64 2f 57  72 69 74 65 20 61 73 79  |C.Read/Write asy|
00020ca0  6e 63 68 72 6f 6e 6f 75  73 20 63 6f 6d 6d 75 6e  |nchronous commun|
00020cb0  69 63 61 74 69 6f 6e 20  73 74 61 74 65 0a 31 36  |ication state.16|
00020cc0  30 09 26 41 30 09 52 65  61 64 20 56 44 55 20 76  |0.&A0.Read VDU v|
00020cd0  61 72 69 61 62 6c 65 20  76 61 6c 75 65 0a 31 36  |ariable value.16|
00020ce0  31 09 26 41 31 09 3c 52  65 61 64 20 62 61 74 74  |1.&A1.<Read batt|
00020cf0  65 72 79 20 62 61 63 6b  65 64 20 52 41 4d 3d 3e  |ery backed RAM=>|
00020d00  6f 73 5f 62 79 74 65 31  36 31 3e 0a 31 36 32 09  |os_byte161>.162.|
00020d10  26 41 32 09 3c 57 72 69  74 65 20 62 61 74 74 65  |&A2.<Write batte|
00020d20  72 79 20 62 61 63 6b 65  64 20 52 41 4d 3d 3e 6f  |ry backed RAM=>o|
00020d30  73 5f 62 79 74 65 31 36  32 3e 0a 31 36 33 09 26  |s_byte162>.163.&|
00020d40  41 33 09 52 65 61 64 2f  57 72 69 74 65 20 67 65  |A3.Read/Write ge|
00020d50  6e 65 72 61 6c 20 67 72  61 70 68 69 63 73 20 69  |neral graphics i|
00020d60  6e 66 6f 0a 31 36 35 09  26 41 35 09 52 65 61 64  |nfo.165.&A5.Read|
00020d70  20 6f 75 74 70 75 74 20  63 75 72 73 6f 72 20 70  | output cursor p|
00020d80  6f 73 69 74 69 6f 6e 0a  31 37 36 09 26 42 30 09  |osition.176.&B0.|
00020d90  35 30 20 48 7a 20 63 6f  75 6e 74 65 72 0a 31 37  |50 Hz counter.17|
00020da0  37 09 26 42 31 09 52 65  61 64 20 69 6e 70 75 74  |7.&B1.Read input|
00020db0  20 73 6f 75 72 63 65 0a  31 37 38 09 26 42 32 09  | source.178.&B2.|
00020dc0  52 65 61 64 2f 57 72 69  74 65 20 6b 65 79 62 6f  |Read/Write keybo|
00020dd0  61 72 64 20 73 65 6d 61  70 68 6f 72 65 0a 31 38  |ard semaphore.18|
00020de0  31 09 26 42 35 09 52 65  61 64 2f 57 72 69 74 65  |1.&B5.Read/Write|
00020df0  20 52 53 34 32 33 20 69  6e 70 75 74 20 69 6e 74  | RS423 input int|
00020e00  65 72 70 72 65 74 61 74  69 6f 6e 20 73 74 61 74  |erpretation stat|
00020e10  75 73 0a 31 38 32 09 26  42 36 09 52 65 61 64 2f  |us.182.&B6.Read/|
00020e20  57 72 69 74 65 20 4e 6f  49 67 6e 6f 72 65 20 73  |Write NoIgnore s|
00020e30  74 61 74 65 0a 31 39 31  09 26 42 46 09 52 65 61  |tate.191.&BF.Rea|
00020e40  64 2f 57 72 69 74 65 20  52 53 34 32 33 20 62 75  |d/Write RS423 bu|
00020e50  73 74 20 66 6c 61 67 0a  31 39 32 09 26 43 30 09  |st flag.192.&C0.|
00020e60  52 65 61 64 20 52 53 34  32 33 20 63 6f 6e 74 72  |Read RS423 contr|
00020e70  6f 6c 20 62 79 74 65 0a  31 39 33 09 26 43 31 09  |ol byte.193.&C1.|
00020e80  52 65 61 64 2f 57 72 69  74 65 20 66 6c 61 73 68  |Read/Write flash|
00020e90  20 63 6f 75 6e 74 65 72  0a 31 39 34 09 26 43 32  | counter.194.&C2|
00020ea0  09 52 65 61 64 20 64 75  72 61 74 69 6f 6e 20 6f  |.Read duration o|
00020eb0  66 20 73 65 63 6f 6e 64  20 63 6f 6c 6f 75 72 0a  |f second colour.|
00020ec0  31 39 35 09 26 43 33 09  52 65 61 64 20 64 75 72  |195.&C3.Read dur|
00020ed0  61 74 69 6f 6e 20 6f 66  20 66 69 72 73 74 20 63  |ation of first c|
00020ee0  6f 6c 6f 75 72 0a 31 39  36 09 26 43 34 09 52 65  |olour.196.&C4.Re|
00020ef0  61 64 2f 57 72 69 74 65  20 6b 65 79 62 6f 61 72  |ad/Write keyboar|
00020f00  64 20 61 75 74 6f 2d 72  65 70 65 61 74 20 64 65  |d auto-repeat de|
00020f10  6c 61 79 0a 31 39 37 09  26 43 35 09 52 65 61 64  |lay.197.&C5.Read|
00020f20  2f 57 72 69 74 65 20 6b  65 79 62 6f 61 72 64 20  |/Write keyboard |
00020f30  61 75 74 6f 2d 72 65 70  65 61 74 20 72 61 74 65  |auto-repeat rate|
00020f40  0a 31 39 38 09 26 43 36  09 52 65 61 64 2f 57 72  |.198.&C6.Read/Wr|
00020f50  69 74 65 20 2a 45 78 65  63 20 66 69 6c 65 20 68  |ite *Exec file h|
00020f60  61 6e 64 6c 65 0a 31 39  39 09 26 43 37 09 52 65  |andle.199.&C7.Re|
00020f70  61 64 2f 57 72 69 74 65  20 2a 53 70 6f 6f 6c 20  |ad/Write *Spool |
00020f80  66 69 6c 65 20 68 61 6e  64 6c 65 0a 32 30 30 09  |file handle.200.|
00020f90  26 43 38 09 3c 52 65 61  64 2f 57 72 69 74 65 20  |&C8.<Read/Write |
00020fa0  42 72 65 61 6b 20 61 6e  64 20 45 73 63 61 70 65  |Break and Escape|
00020fb0  20 65 66 66 65 63 74 3d  3e 6f 73 5f 62 79 74 65  | effect=>os_byte|
00020fc0  32 30 30 3e 0a 32 30 31  09 26 43 39 09 52 65 61  |200>.201.&C9.Rea|
00020fd0  64 2f 57 72 69 74 65 20  6b 65 79 62 6f 61 72 64  |d/Write keyboard|
00020fe0  20 64 69 73 61 62 6c 65  20 66 6c 61 67 0a 32 30  | disable flag.20|
00020ff0  32 09 26 43 41 09 52 65  61 64 2f 57 72 69 74 65  |2.&CA.Read/Write|
00021000  20 6b 65 79 62 6f 61 72  64 20 73 74 61 74 75 73  | keyboard status|
00021010  20 62 79 74 65 0a 32 30  33 09 26 43 42 09 52 65  | byte.203.&CB.Re|
00021020  61 64 2f 57 72 69 74 65  20 52 53 34 32 33 20 69  |ad/Write RS423 i|
00021030  6e 70 75 74 20 62 75 66  66 65 72 20 6d 69 6e 69  |nput buffer mini|
00021040  6d 75 6d 20 73 70 61 63  65 0a 32 30 34 09 26 43  |mum space.204.&C|
00021050  43 09 52 65 61 64 2f 57  72 69 74 65 20 52 53 34  |C.Read/Write RS4|
00021060  32 33 20 69 67 6e 6f 72  65 20 66 6c 61 67 0a 32  |23 ignore flag.2|
00021070  31 31 09 26 44 33 09 52  65 61 64 2f 57 72 69 74  |11.&D3.Read/Writ|
00021080  65 20 62 65 6c 6c 20 63  68 61 6e 6e 65 6c 0a 32  |e bell channel.2|
00021090  31 32 09 26 44 34 09 52  65 61 64 2f 57 72 69 74  |12.&D4.Read/Writ|
000210a0  65 20 62 65 6c 6c 20 73  6f 75 6e 64 20 76 6f 6c  |e bell sound vol|
000210b0  75 6d 65 0a 32 31 33 09  26 44 35 09 52 65 61 64  |ume.213.&D5.Read|
000210c0  2f 57 72 69 74 65 20 62  65 6c 6c 20 66 72 65 71  |/Write bell freq|
000210d0  75 65 6e 7a 79 0a 32 31  34 09 26 44 36 09 52 65  |uenzy.214.&D6.Re|
000210e0  61 64 2f 57 72 69 74 65  20 62 65 6c 6c 20 64 75  |ad/Write bell du|
000210f0  72 61 74 69 6f 6e 0a 32  31 36 09 26 44 38 09 52  |ration.216.&D8.R|
00021100  65 61 64 2f 57 72 69 74  65 20 6c 65 6e 67 74 68  |ead/Write length|
00021110  20 6f 66 20 66 75 6e 63  74 69 6f 6e 20 6b 65 79  | of function key|
00021120  20 73 74 72 69 6e 67 0a  32 31 37 09 26 44 39 09  | string.217.&D9.|
00021130  52 65 61 64 2f 57 72 69  74 65 20 70 61 67 65 64  |Read/Write paged|
00021140  20 6d 6f 64 65 20 6c 69  6e 65 20 63 6f 75 6e 74  | mode line count|
00021150  0a 32 31 38 09 26 44 41  09 52 65 61 64 2f 57 72  |.218.&DA.Read/Wr|
00021160  69 74 65 20 62 79 74 65  73 20 69 6e 20 56 44 55  |ite bytes in VDU|
00021170  20 71 75 65 75 65 0a 32  31 39 09 26 44 42 09 52  | queue.219.&DB.R|
00021180  65 61 64 2f 57 72 69 74  65 20 54 61 62 20 6b 65  |ead/Write Tab ke|
00021190  79 20 63 6f 64 65 0a 32  32 30 09 26 44 43 09 52  |y code.220.&DC.R|
000211a0  65 61 64 2f 57 72 69 74  65 20 65 73 63 61 70 65  |ead/Write escape|
000211b0  20 63 68 61 72 61 63 74  65 72 0a 32 32 31 09 26  | character.221.&|
000211c0  44 44 09 52 65 61 64 2f  57 72 69 74 65 20 69 6e  |DD.Read/Write in|
000211d0  74 65 72 70 72 65 74 61  74 69 6f 6e 20 6f 66 20  |terpretation of |
000211e0  69 6e 70 75 74 20 76 61  6c 75 65 73 20 26 43 30  |input values &C0|
000211f0  2d 26 43 46 0a 32 32 32  09 26 44 45 09 52 65 61  |-&CF.222.&DE.Rea|
00021200  64 2f 57 72 69 74 65 20  69 6e 74 65 72 70 72 65  |d/Write interpre|
00021210  74 61 74 69 6f 6e 20 6f  66 20 69 6e 70 75 74 20  |tation of input |
00021220  76 61 6c 75 65 73 20 26  44 30 2d 26 44 46 0a 32  |values &D0-&DF.2|
00021230  32 33 09 26 44 46 09 52  65 61 64 2f 57 72 69 74  |23.&DF.Read/Writ|
00021240  65 20 69 6e 74 65 72 70  72 65 74 61 74 69 6f 6e  |e interpretation|
00021250  20 6f 66 20 69 6e 70 75  74 20 76 61 6c 75 65 73  | of input values|
00021260  20 26 45 30 2d 26 45 46  0a 32 32 34 09 26 45 30  | &E0-&EF.224.&E0|
00021270  09 52 65 61 64 2f 57 72  69 74 65 20 69 6e 74 65  |.Read/Write inte|
00021280  72 70 72 65 74 61 74 69  6f 6e 20 6f 66 20 69 6e  |rpretation of in|
00021290  70 75 74 20 76 61 6c 75  65 73 20 26 46 30 2d 26  |put values &F0-&|
000212a0  46 46 0a 32 32 35 09 26  45 31 09 52 65 61 64 2f  |FF.225.&E1.Read/|
000212b0  57 72 69 74 65 20 66 75  6e 63 74 69 6f 6e 20 6b  |Write function k|
000212c0  65 79 20 69 6e 74 65 72  70 72 65 74 61 74 69 6f  |ey interpretatio|
000212d0  6e 0a 32 32 36 09 26 45  32 09 52 65 61 64 2f 57  |n.226.&E2.Read/W|
000212e0  72 69 74 65 20 53 68 69  66 74 20 46 6e 20 69 6e  |rite Shift Fn in|
000212f0  74 65 72 70 72 65 74 61  74 69 6f 6e 0a 32 32 37  |terpretation.227|
00021300  09 26 45 33 09 52 65 61  64 2f 57 72 69 74 65 20  |.&E3.Read/Write |
00021310  43 74 72 6c 20 46 6e 20  69 6e 74 65 72 70 72 65  |Ctrl Fn interpre|
00021320  74 61 74 69 6f 6e 0a 32  32 38 09 26 45 34 09 52  |tation.228.&E4.R|
00021330  65 61 64 2f 57 72 69 74  65 20 53 68 69 66 74 20  |ead/Write Shift |
00021340  43 74 72 6c 20 46 6e 20  69 6e 74 65 72 70 72 65  |Ctrl Fn interpre|
00021350  74 61 74 69 6f 6e 0a 32  32 39 09 26 45 35 09 3c  |tation.229.&E5.<|
00021360  52 65 61 64 2f 57 72 69  74 65 20 45 73 63 61 70  |Read/Write Escap|
00021370  65 20 6b 65 79 20 73 74  61 74 75 73 3d 3e 6f 73  |e key status=>os|
00021380  5f 62 79 74 65 32 32 39  3e 0a 32 33 30 09 26 45  |_byte229>.230.&E|
00021390  36 09 52 65 61 64 2f 57  72 69 74 65 20 65 73 63  |6.Read/Write esc|
000213a0  61 70 65 20 65 66 66 65  63 74 73 0a 32 33 36 09  |ape effects.236.|
000213b0  26 45 43 09 52 65 61 64  2f 57 72 69 74 65 20 63  |&EC.Read/Write c|
000213c0  68 61 72 61 63 74 65 72  20 64 65 73 74 69 6e 61  |haracter destina|
000213d0  74 69 6f 6e 20 73 74 61  74 75 73 0a 32 33 37 09  |tion status.237.|
000213e0  26 45 44 09 52 65 61 64  2f 57 72 69 74 65 20 63  |&ED.Read/Write c|
000213f0  75 72 73 6f 72 20 6b 65  79 20 73 74 61 74 75 73  |ursor key status|
00021400  0a 32 33 38 09 26 45 45  09 52 65 61 64 2f 57 72  |.238.&EE.Read/Wr|
00021410  69 74 65 20 6e 75 6d 65  72 69 63 20 6b 65 79 70  |ite numeric keyp|
00021420  61 64 20 69 6e 74 65 72  70 72 65 74 61 74 69 6f  |ad interpretatio|
00021430  6e 0a 32 34 30 09 26 46  30 09 52 65 61 64 20 63  |n.240.&F0.Read c|
00021440  6f 75 6e 74 72 79 20 66  6c 61 67 0a 32 34 31 09  |ountry flag.241.|
00021450  26 46 31 09 52 65 61 64  2f 57 72 69 74 65 20 75  |&F1.Read/Write u|
00021460  73 65 72 20 66 6c 61 67  0a 32 34 32 09 26 46 32  |ser flag.242.&F2|
00021470  09 52 65 61 64 20 52 53  34 32 33 20 62 61 75 64  |.Read RS423 baud|
00021480  20 72 61 74 65 73 0a 32  34 33 09 26 46 33 09 52  | rates.243.&F3.R|
00021490  65 61 64 20 74 69 6d 65  72 20 73 77 69 74 63 68  |ead timer switch|
000214a0  20 73 74 61 74 65 0a 32  34 35 09 26 46 35 09 52  | state.245.&F5.R|
000214b0  65 61 64 20 70 72 69 6e  74 65 72 20 64 72 69 76  |ead printer driv|
000214c0  65 72 20 74 79 70 65 0a  32 34 36 09 26 46 36 09  |er type.246.&F6.|
000214d0  52 65 61 64 2f 57 72 69  74 65 20 70 72 69 6e 74  |Read/Write print|
000214e0  65 72 20 69 67 6e 6f 72  65 20 63 68 61 72 61 63  |er ignore charac|
000214f0  74 65 72 0a 32 34 37 09  26 46 37 09 3c 52 65 61  |ter.247.&F7.<Rea|
00021500  64 2f 57 72 69 74 65 20  42 72 65 61 6b 20 6b 65  |d/Write Break ke|
00021510  79 20 61 63 74 69 6f 6e  73 3d 3e 6f 73 5f 62 79  |y actions=>os_by|
00021520  74 65 32 34 37 3e 0a 32  35 30 09 26 46 41 09 52  |te247>.250.&FA.R|
00021530  65 61 64 20 56 44 55 20  64 72 69 76 65 72 20 73  |ead VDU driver s|
00021540  63 72 65 65 6e 20 62 61  6e 6b 20 6e 75 6d 62 65  |creen bank numbe|
00021550  72 0a 32 35 31 09 26 46  42 09 52 65 61 64 20 64  |r.251.&FB.Read d|
00021560  69 73 70 6c 61 79 20 73  63 72 65 65 6e 20 62 61  |isplay screen ba|
00021570  6e 6b 20 6e 75 6d 62 65  72 0a 32 35 33 09 26 46  |nk number.253.&F|
00021580  44 09 52 65 61 64 20 6c  61 73 74 20 62 72 65 61  |D.Read last brea|
00021590  6b 20 74 79 70 65 0a 32  35 34 09 26 46 45 09 3c  |k type.254.&FE.<|
000215a0  53 65 74 20 65 66 66 65  63 74 20 6f 66 20 53 68  |Set effect of Sh|
000215b0  69 66 74 2d 43 74 72 6c  20 6f 6e 20 6e 75 6d 65  |ift-Ctrl on nume|
000215c0  72 69 63 20 6b 65 79 70  61 64 3d 3e 6f 73 5f 62  |ric keypad=>os_b|
000215d0  79 74 65 32 35 34 3e 0a  32 35 35 09 26 46 46 09  |yte254>.255.&FF.|
000215e0  3c 52 65 61 64 2f 57 72  69 74 65 20 62 6f 6f 74  |<Read/Write boot|
000215f0  20 6f 70 74 69 6f 6e 3d  3e 6f 73 5f 62 79 74 65  | option=>os_byte|
00021600  32 35 35 3e 0a 00 00 00  44 41 54 41 47 01 00 00  |255>....DATAG...|
00021610  4f 53 5f 42 79 74 65 20  31 33 20 20 44 69 73 61  |OS_Byte 13  Disa|
00021620  62 6c 65 20 65 76 65 6e  74 0a 3d 3e 09 52 30 20  |ble event.=>.R0 |
00021630  3d 20 31 33 20 28 26 30  44 29 0a 09 52 31 20 3d  |= 13 (&0D)..R1 =|
00021640  20 3c 65 76 65 6e 74 20  6e 75 6d 62 65 72 3d 3e  | <event number=>|
00021650  6f 73 5f 65 76 65 6e 74  73 3e 0a 09 0a 54 68 69  |os_events>...Thi|
00021660  73 20 63 61 6c 6c 20 64  69 73 61 62 6c 65 73 20  |s call disables |
00021670  61 20 70 61 72 74 69 63  75 6c 61 72 20 65 76 65  |a particular eve|
00021680  6e 74 20 66 72 6f 6d 20  62 65 69 6e 67 20 63 61  |nt from being ca|
00021690  6c 6c 65 64 20 74 68 6f  75 67 68 20 74 68 65 20  |lled though the |
000216a0  3c 45 76 65 6e 74 20 56  65 63 74 6f 72 3d 3e 6f  |<Event Vector=>o|
000216b0  73 5f 65 76 65 6e 74 76  3e 2e 20 49 20 61 73 73  |s_eventv>. I ass|
000216c0  75 6d 65 20 74 68 61 74  20 61 20 63 6f 75 6e 74  |ume that a count|
000216d0  20 69 73 20 6d 61 69 6e  74 61 69 6e 65 64 20 6f  | is maintained o|
000216e0  66 20 74 68 65 20 6e 75  6d 62 65 72 20 6f 66 20  |f the number of |
000216f0  65 6e 61 62 6c 65 73 20  61 6e 64 20 64 69 73 61  |enables and disa|
00021700  62 6c 65 73 20 73 65 74  20 73 6f 20 74 68 61 74  |bles set so that|
00021710  20 77 68 65 6e 20 6e 6f  20 72 6f 75 74 69 6e 65  | when no routine|
00021720  73 20 61 72 65 20 63 6c  61 69 6d 69 6e 67 20 74  |s are claiming t|
00021730  68 65 20 65 76 65 6e 74  20 69 74 20 72 65 61 6c  |he event it real|
00021740  6c 79 20 69 73 20 64 69  73 61 62 6c 65 64 2e 00  |ly is disabled..|
00021750  44 41 54 41 4f 01 00 00  4f 53 5f 42 79 74 65 20  |DATAO...OS_Byte |
00021760  31 34 20 20 45 6e 61 62  6c 65 20 65 76 65 6e 74  |14  Enable event|
00021770  0a 3d 3e 09 52 30 20 3d  20 31 34 20 28 26 30 45  |.=>.R0 = 14 (&0E|
00021780  29 0a 09 52 31 20 3d 20  3c 65 76 65 6e 74 20 6e  |)..R1 = <event n|
00021790  75 6d 62 65 72 3d 3e 6f  73 5f 65 76 65 6e 74 73  |umber=>os_events|
000217a0  3e 0a 09 0a 54 68 69 73  20 63 61 6c 6c 20 65 6e  |>...This call en|
000217b0  61 62 6c 65 73 20 61 20  70 61 72 74 69 63 75 6c  |ables a particul|
000217c0  61 72 20 65 76 65 6e 74  20 73 6f 20 74 68 61 74  |ar event so that|
000217d0  20 69 74 20 69 73 20 62  65 69 6e 67 20 63 61 6c  | it is being cal|
000217e0  6c 65 64 20 74 68 72 6f  75 67 68 20 74 68 65 20  |led through the |
000217f0  3c 45 76 65 6e 74 20 56  65 63 74 6f 72 3d 3e 6f  |<Event Vector=>o|
00021800  73 5f 65 76 65 6e 74 76  3e 2e 20 49 20 61 73 73  |s_eventv>. I ass|
00021810  75 6d 65 20 74 68 61 74  20 61 20 63 6f 75 6e 74  |ume that a count|
00021820  20 69 73 20 6d 61 69 6e  74 61 69 6e 65 64 20 6f  | is maintained o|
00021830  66 20 74 68 65 20 6e 75  6d 62 65 72 20 6f 66 20  |f the number of |
00021840  65 6e 61 62 6c 65 73 20  61 6e 64 20 64 69 73 61  |enables and disa|
00021850  62 6c 65 73 20 73 65 74  20 73 6f 20 74 68 61 74  |bles set so that|
00021860  20 77 68 65 6e 20 6e 6f  20 72 6f 75 74 69 6e 65  | when no routine|
00021870  73 20 61 72 65 20 63 6c  61 69 6d 69 6e 67 20 74  |s are claiming t|
00021880  68 65 20 65 76 65 6e 74  20 69 74 20 72 65 61 6c  |he event it real|
00021890  6c 79 20 69 73 20 64 69  73 61 62 6c 65 64 2e 00  |ly is disabled..|
000218a0  44 41 54 41 b5 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000218b0  31 36 31 20 20 52 65 61  64 20 43 4d 4f 53 20 52  |161  Read CMOS R|
000218c0  41 4d 0a 3d 3e 09 52 30  20 3d 20 31 36 31 20 28  |AM.=>.R0 = 161 (|
000218d0  26 41 31 29 0a 09 52 31  20 3d 20 3c 62 79 74 65  |&A1)..R1 = <byte|
000218e0  20 6e 75 6d 62 65 72 3d  3e 6f 73 5f 62 79 74 65  | number=>os_byte|
000218f0  63 6d 6f 73 3e 0a 0a 3c  3d 09 52 32 20 3d 20 76  |cmos>..<=.R2 = v|
00021900  61 6c 75 65 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |alue..This call |
00021910  72 65 61 64 73 20 74 68  65 20 62 61 74 74 65 72  |reads the batter|
00021920  79 20 62 61 63 6b 65 64  20 52 41 4d 20 75 73 65  |y backed RAM use|
00021930  64 20 74 6f 20 73 74 6f  72 65 20 63 6f 6e 66 69  |d to store confi|
00021940  67 75 72 61 74 69 6f 6e  20 69 6e 66 6f 72 6d 61  |guration informa|
00021950  74 69 6f 6e 2e 00 00 00  44 41 54 41 2e 01 00 00  |tion....DATA....|
00021960  4f 53 5f 42 79 74 65 20  31 36 32 20 20 57 72 69  |OS_Byte 162  Wri|
00021970  74 65 20 43 4d 4f 53 20  52 41 4d 0a 3d 3e 09 52  |te CMOS RAM.=>.R|
00021980  30 20 3d 20 31 36 32 20  28 26 41 32 29 0a 09 52  |0 = 162 (&A2)..R|
00021990  31 20 3d 20 3c 62 79 74  65 20 6e 75 6d 62 65 72  |1 = <byte number|
000219a0  3d 3e 6f 73 5f 62 79 74  65 63 6d 6f 73 3e 0a 09  |=>os_bytecmos>..|
000219b0  52 32 20 3d 20 76 61 6c  75 65 0a 0a 54 68 69 73  |R2 = value..This|
000219c0  20 63 61 6c 6c 20 77 72  69 74 65 73 20 74 6f 20  | call writes to |
000219d0  74 68 65 20 62 61 74 74  65 72 79 20 62 61 63 6b  |the battery back|
000219e0  65 64 20 52 41 4d 20 75  73 65 64 20 74 6f 20 73  |ed RAM used to s|
000219f0  74 6f 72 65 20 63 6f 6e  66 69 67 75 72 61 74 69  |tore configurati|
00021a00  6f 6e 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 2e 0a  |on information..|
00021a10  0a 4e 6f 74 65 3a 20 49  66 20 74 68 65 20 62 79  |.Note: If the by|
00021a20  74 65 20 79 6f 75 20 61  72 65 20 73 65 74 74 69  |te you are setti|
00021a30  6e 67 20 63 6f 6e 74 61  69 6e 73 20 6d 75 6c 74  |ng contains mult|
00021a40  69 70 6c 65 20 62 69 74  73 20 74 68 65 6e 20 79  |iple bits then y|
00021a50  6f 75 20 6d 75 73 74 20  2a 6f 6e 6c 79 2a 20 6d  |ou must *only* m|
00021a60  6f 64 69 66 79 20 74 68  6f 73 65 20 62 69 74 73  |odify those bits|
00021a70  20 79 6f 75 20 72 65 71  75 69 72 65 20 74 6f 20  | you require to |
00021a80  61 6c 74 65 72 2e 00 00  44 49 52 24 0c 03 00 00  |alter...DIR$....|
00021a90  0c 03 00 00 94 1d 02 00  46 fd ff ff fb 45 5a f5  |........F....EZ.|
00021aa0  28 10 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |(...........!Roo|
00021ab0  74 00 00 00 bc 2d 02 00  46 fd ff ff f1 70 64 4d  |t....-..F....pdM|
00021ac0  63 00 00 00 13 00 00 00  00 00 00 00 31 30 00 00  |c...........10..|
00021ad0  20 2e 02 00 46 fd ff ff  98 8a 59 f5 e7 00 00 00  | ...F.....Y.....|
00021ae0  13 00 00 00 00 00 00 00  31 31 00 00 08 2f 02 00  |........11.../..|
00021af0  46 fd ff ff 33 ce 59 f5  96 00 00 00 13 00 00 00  |F...3.Y.........|
00021b00  00 00 00 00 31 35 00 00  a0 2f 02 00 46 fd ff ff  |....15.../..F...|
00021b10  86 df 59 f5 82 00 00 00  13 00 00 00 00 00 00 00  |..Y.............|
00021b20  31 36 00 00 24 30 02 00  46 fd ff ff ec 50 80 4f  |16..$0..F....P.O|
00021b30  b9 00 00 00 13 00 00 00  00 00 00 00 31 37 00 00  |............17..|
00021b40  e0 30 02 00 46 fd ff ff  8d 10 69 4d cd 00 00 00  |.0..F.....iM....|
00021b50  13 00 00 00 00 00 00 00  32 38 00 00 b0 31 02 00  |........28...1..|
00021b60  46 fd ff ff d5 35 a8 fa  aa 01 00 00 13 00 00 00  |F....5..........|
00021b70  00 00 00 00 31 33 32 00  5c 33 02 00 46 fd ff ff  |....132.\3..F...|
00021b80  23 aa 59 f5 70 01 00 00  13 00 00 00 00 00 00 00  |#.Y.p...........|
00021b90  31 33 33 00 cc 34 02 00  46 fd ff ff a3 2d 68 4d  |133..4..F....-hM|
00021ba0  87 00 00 00 13 00 00 00  00 00 00 00 31 33 35 00  |............135.|
00021bb0  54 35 02 00 46 fd ff ff  fa 05 66 4d 89 00 00 00  |T5..F.....fM....|
00021bc0  13 00 00 00 00 00 00 00  31 33 36 00 e0 35 02 00  |........136..5..|
00021bd0  46 fd ff ff 28 2f 66 4d  59 00 00 00 13 00 00 00  |F...(/fMY.......|
00021be0  00 00 00 00 31 34 30 00  3c 36 02 00 46 fd ff ff  |....140.<6..F...|
00021bf0  0e 4f 66 4d 5e 00 00 00  13 00 00 00 00 00 00 00  |.OfM^...........|
00021c00  31 34 38 00 9c 36 02 00  46 fd ff ff d4 63 5a f5  |148..6..F....cZ.|
00021c10  3d 01 00 00 13 00 00 00  00 00 00 00 31 38 38 00  |=...........188.|
00021c20  dc 37 02 00 46 fd ff ff  cf b2 66 4d b2 00 00 00  |.7..F.....fM....|
00021c30  13 00 00 00 00 00 00 00  31 39 33 00 90 38 02 00  |........193..8..|
00021c40  46 fd ff ff 3f 5b 40 ec  e7 00 00 00 13 00 00 00  |F...?[@.........|
00021c50  00 00 00 00 31 39 35 00  78 39 02 00 46 fd ff ff  |....195.x9..F...|
00021c60  75 ed 69 4d e1 00 00 00  13 00 00 00 00 00 00 00  |u.iM............|
00021c70  31 39 38 00 5c 3a 02 00  46 fd ff ff 93 1f 67 4d  |198.\:..F.....gM|
00021c80  50 00 00 00 13 00 00 00  00 00 00 00 32 30 38 00  |P...........208.|
00021c90  ac 3a 02 00 46 fd ff ff  29 da 01 4f c6 00 00 00  |.:..F...)..O....|
00021ca0  13 00 00 00 00 00 00 00  32 31 35 00 74 3b 02 00  |........215.t;..|
00021cb0  46 fd ff ff be 7c 67 4d  c0 00 00 00 13 00 00 00  |F....|gM........|
00021cc0  00 00 00 00 32 32 30 00  34 3c 02 00 46 fd ff ff  |....220.4<..F...|
00021cd0  39 1f 69 4d 57 00 00 00  13 00 00 00 00 00 00 00  |9.iMW...........|
00021ce0  32 38 61 00 8c 3c 02 00  46 fd ff ff ad 38 69 4d  |28a..<..F....8iM|
00021cf0  55 00 00 00 13 00 00 00  00 00 00 00 32 39 00 00  |U...........29..|
00021d00  e4 3c 02 00 46 fd ff ff  65 fe 69 4d 5f 00 00 00  |.<..F...e.iM_...|
00021d10  13 00 00 00 00 00 00 00  64 69 73 70 6c 61 79 00  |........display.|
00021d20  44 3d 02 00 46 fd ff ff  57 11 6a 4d 6c 00 00 00  |D=..F...W.jMl...|
00021d30  13 00 00 00 00 00 00 00  73 6f 72 74 00 00 00 00  |........sort....|
00021d40  b0 3d 02 00 46 fd ff ff  09 c8 a0 4d 47 01 00 00  |.=..F......MG...|
00021d50  13 00 00 00 00 00 00 00  31 39 37 00 f8 3e 02 00  |........197..>..|
00021d60  46 fd ff ff 12 04 02 4f  cf 00 00 00 13 00 00 00  |F......O........|
00021d70  00 00 00 00 32 31 36 00  c8 3f 02 00 46 fd ff ff  |....216..?..F...|
00021d80  a7 ea 59 f5 42 00 00 00  13 00 00 00 00 00 00 00  |..Y.B...........|
00021d90  32 34 00 00 44 41 54 41  28 10 00 00 4f 53 5f 42  |24..DATA(...OS_B|
00021da0  79 74 65 20 43 4d 4f 53  20 73 65 74 74 69 6e 67  |yte CMOS setting|
00021db0  73 0a 30 09 26 30 30 09  45 63 6f 6e 65 74 20 73  |s.0.&00.Econet s|
00021dc0  74 61 74 69 6f 6e 20 6e  75 6d 62 65 72 0a 31 09  |tation number.1.|
00021dd0  26 30 31 09 45 63 6f 6e  65 74 20 66 69 6c 65 73  |&01.Econet files|
00021de0  65 72 76 65 72 20 73 74  61 74 69 6f 6e 20 6e 75  |erver station nu|
00021df0  6d 62 65 72 0a 32 09 26  30 32 09 45 63 6f 6e 65  |mber.2.&02.Econe|
00021e00  74 20 66 69 6c 65 73 65  72 76 65 72 20 6e 65 74  |t fileserver net|
00021e10  77 6f 72 6b 20 6e 75 6d  62 65 72 2f 6e 61 6d 65  |work number/name|
00021e20  0a 33 09 26 30 33 09 45  63 6f 6e 65 74 20 70 72  |.3.&03.Econet pr|
00021e30  69 6e 74 65 72 20 73 65  72 76 65 72 20 73 74 61  |inter server sta|
00021e40  74 69 6f 6e 20 6e 75 6d  62 65 72 0a 34 09 26 30  |tion number.4.&0|
00021e50  34 09 45 63 6f 6e 65 74  20 70 72 69 6e 74 65 72  |4.Econet printer|
00021e60  20 73 65 72 76 65 72 20  6e 65 74 77 6f 72 6b 20  | server network |
00021e70  6e 75 6d 62 65 72 2f 6e  61 6d 65 0a 35 09 26 30  |number/name.5.&0|
00021e80  35 09 46 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |5.Filing system |
00021e90  6d 6f 64 75 6c 65 0a 36  09 26 30 36 09 55 6e 70  |module.6.&06.Unp|
00021ea0  6c 75 67 67 65 64 20 6d  6f 64 75 6c 65 73 20 62  |lugged modules b|
00021eb0  79 74 65 20 30 0a 37 09  26 30 37 09 55 6e 70 6c  |yte 0.7.&07.Unpl|
00021ec0  75 67 67 65 64 20 6d 6f  64 75 6c 65 73 20 62 79  |ugged modules by|
00021ed0  74 65 20 31 0a 31 30 09  26 30 41 09 3c 4d 69 73  |te 1.10.&0A.<Mis|
00021ee0  63 20 6d 6f 64 65 20 64  61 74 61 3d 3e 6f 73 5f  |c mode data=>os_|
00021ef0  62 79 74 65 63 6d 6f 73  31 30 3e 0a 31 31 09 26  |bytecmos10>.11.&|
00021f00  30 42 09 3c 44 72 69 76  65 2f 43 61 70 73 2f 4d  |0B.<Drive/Caps/M|
00021f10  6f 75 6e 74 3d 3e 6f 73  5f 62 79 74 65 63 6d 6f  |ount=>os_bytecmo|
00021f20  73 31 31 3e 0a 31 32 09  26 30 43 09 4b 65 79 62  |s11>.12.&0C.Keyb|
00021f30  6f 61 72 64 20 61 75 74  6f 2d 72 65 70 65 61 74  |oard auto-repeat|
00021f40  20 64 65 6c 61 79 0a 31  33 09 26 30 44 09 4b 65  | delay.13.&0D.Ke|
00021f50  79 62 6f 61 72 64 20 61  75 74 6f 2d 72 65 70 65  |yboard auto-repe|
00021f60  61 74 20 74 69 6d 65 0a  31 34 09 26 30 45 09 50  |at time.14.&0E.P|
00021f70  72 69 6e 74 65 72 20 69  67 6e 6f 72 65 20 63 68  |rinter ignore ch|
00021f80  61 72 61 63 74 65 72 0a  31 35 09 26 30 46 09 3c  |aracter.15.&0F.<|
00021f90  4d 69 73 63 20 70 72 69  6e 74 65 72 2f 53 65 72  |Misc printer/Ser|
00021fa0  69 61 6c 20 64 61 74 61  3d 3e 6f 73 5f 62 79 74  |ial data=>os_byt|
00021fb0  65 63 6d 6f 73 31 35 3e  0a 31 36 09 26 31 30 09  |ecmos15>.16.&10.|
00021fc0  3c 4c 6f 75 64 2f 4e 6f  53 63 72 6f 6c 6c 2f 42  |<Loud/NoScroll/B|
00021fd0  6f 6f 74 2f 53 65 72 69  61 6c 20 66 6f 72 6d 61  |oot/Serial forma|
00021fe0  74 3d 3e 6f 73 5f 62 79  74 65 63 6d 6f 73 31 36  |t=>os_bytecmos16|
00021ff0  3e 0a 31 37 09 26 31 31  09 3c 4e 65 74 46 69 6c  |>.17.&11.<NetFil|
00022000  65 72 20 66 6c 61 67 73  3d 3e 6f 73 5f 62 79 74  |er flags=>os_byt|
00022010  65 63 6d 6f 73 31 37 3e  0a 31 38 09 26 31 32 09  |ecmos17>.18.&12.|
00022020  55 6e 70 6c 75 67 67 65  64 20 6d 6f 64 75 6c 65  |Unplugged module|
00022030  73 20 62 79 74 65 20 32  0a 31 39 09 26 31 33 09  |s byte 2.19.&13.|
00022040  55 6e 70 6c 75 67 67 65  64 20 6d 6f 64 75 6c 65  |Unplugged module|
00022050  73 20 62 79 74 65 20 33  0a 32 30 09 26 31 34 09  |s byte 3.20.&14.|
00022060  55 6e 70 6c 75 67 67 65  64 20 65 78 74 65 6e 73  |Unplugged extens|
00022070  69 6f 6e 20 6d 6f 64 75  6c 65 73 20 62 79 74 65  |ion modules byte|
00022080  20 30 0a 32 31 09 26 31  35 09 55 6e 70 6c 75 67  | 0.21.&15.Unplug|
00022090  67 65 64 20 65 78 74 65  6e 73 69 6f 6e 20 6d 6f  |ged extension mo|
000220a0  64 75 6c 65 73 20 62 79  74 65 20 31 0a 32 32 09  |dules byte 1.22.|
000220b0  26 31 36 09 57 69 6d 70  20 64 6f 75 62 6c 65 20  |&16.Wimp double |
000220c0  63 6c 69 63 6b 20 6d 6f  76 65 0a 32 33 09 26 31  |click move.23.&1|
000220d0  37 09 57 69 6d 70 20 61  75 74 6f 20 6d 65 6e 75  |7.Wimp auto menu|
000220e0  20 64 65 6c 61 79 0a 32  34 09 26 31 38 09 3c 54  | delay.24.&18.<T|
000220f0  65 72 72 69 74 6f 72 79  3d 3e 6f 73 5f 62 79 74  |erritory=>os_byt|
00022100  65 63 6d 6f 73 32 34 3e  0a 32 35 09 26 31 39 09  |ecmos24>.25.&19.|
00022110  50 72 69 6e 74 65 72 20  62 75 66 66 65 72 20 73  |Printer buffer s|
00022120  69 7a 65 0a 32 36 09 26  31 41 09 41 44 46 53 20  |ize.26.&1A.ADFS |
00022130  73 70 69 6e 64 6f 77 6e  20 28 69 6e 20 35 20 73  |spindown (in 5 s|
00022140  65 63 6f 6e 64 73 29 0a  32 37 09 26 31 42 09 57  |econds).27.&1B.W|
00022150  69 6d 70 20 6d 65 6e 75  20 64 72 61 67 20 64 65  |imp menu drag de|
00022160  6c 61 79 0a 32 38 09 26  31 43 09 3c 54 72 75 6e  |lay.28.&1C.<Trun|
00022170  63 61 74 65 2f 44 72 61  67 41 53 70 72 69 74 65  |cate/DragASprite|
00022180  2f 46 69 6c 65 72 41 63  74 69 6f 6e 2f 44 69 74  |/FilerAction/Dit|
00022190  68 65 72 3d 3e 6f 73 5f  62 79 74 65 63 6d 6f 73  |her=>os_bytecmos|
000221a0  32 38 3e 0a 32 39 09 26  31 44 09 3c 4d 6f 75 73  |28>.29.&1D.<Mous|
000221b0  65 20 74 79 70 65 3d 3e  6f 73 5f 62 79 74 65 63  |e type=>os_bytec|
000221c0  6d 6f 73 32 39 3e 0a 31  32 38 09 26 38 30 09 59  |mos29>.128.&80.Y|
000221d0  65 61 72 20 62 79 74 65  20 30 0a 31 32 39 09 26  |ear byte 0.129.&|
000221e0  38 31 09 59 65 61 72 20  62 79 74 65 20 31 0a 31  |81.Year byte 1.1|
000221f0  33 32 09 26 38 34 09 3c  44 75 6d 70 46 6f 72 6d  |32.&84.<DumpForm|
00022200  61 74 2f 4d 69 73 63 20  64 61 74 61 3d 3e 6f 73  |at/Misc data=>os|
00022210  5f 62 79 74 65 63 6d 6f  73 31 33 32 3e 0a 31 33  |_bytecmos132>.13|
00022220  33 09 26 38 35 09 3c 4d  6f 6e 69 74 6f 72 20 64  |3.&85.<Monitor d|
00022230  61 74 61 3d 3e 6f 73 5f  62 79 74 65 63 6d 6f 73  |ata=>os_bytecmos|
00022240  31 33 33 3e 0a 31 33 34  09 26 38 36 09 46 6f 6e  |133>.134.&86.Fon|
00022250  74 20 73 69 7a 65 20 69  6e 20 34 6b 20 75 6e 69  |t size in 4k uni|
00022260  74 73 0a 31 33 35 09 26  38 37 09 3c 4e 75 6d 62  |ts.135.&87.<Numb|
00022270  65 72 20 6f 66 20 64 72  69 76 65 73 3d 3e 6f 73  |er of drives=>os|
00022280  5f 62 79 74 65 63 6d 6f  73 31 33 35 3e 0a 31 33  |_bytecmos135>.13|
00022290  36 09 26 38 38 09 3c 46  6c 6f 70 70 79 20 73 74  |6.&88.<Floppy st|
000222a0  65 70 20 72 61 74 65 73  3d 3e 6f 73 5f 62 79 74  |ep rates=>os_byt|
000222b0  65 63 6d 6f 73 31 33 36  3e 0a 31 33 37 09 26 38  |ecmos136>.137.&8|
000222c0  39 09 41 44 46 53 20 62  75 66 66 65 72 73 0a 31  |9.ADFS buffers.1|
000222d0  33 38 09 26 38 41 09 43  44 46 53 20 66 6c 61 67  |38.&8A.CDFS flag|
000222e0  73 0a 31 33 39 09 26 38  42 09 54 69 6d 65 20 7a  |s.139.&8B.Time z|
000222f0  6f 6e 65 0a 31 34 30 09  26 38 43 09 3c 4e 65 77  |one.140.&8C.<New|
00022300  4c 6f 6f 6b 20 66 6c 61  67 73 3d 3e 6f 73 5f 62  |Look flags=>os_b|
00022310  79 74 65 63 6d 6f 73 31  34 30 3e 0a 31 34 31 09  |ytecmos140>.141.|
00022320  26 38 44 09 50 72 69 6e  74 65 72 20 64 65 73 74  |&8D.Printer dest|
00022330  69 6e 61 74 69 6f 6e 0a  31 34 32 09 26 38 45 09  |ination.142.&8E.|
00022340  54 77 69 6e 20 66 6c 61  67 73 0a 31 34 33 09 26  |Twin flags.143.&|
00022350  38 46 09 53 63 72 65 65  6e 20 73 69 7a 65 0a 31  |8F.Screen size.1|
00022360  34 34 09 26 39 30 09 52  41 4d 46 53 20 73 69 7a  |44.&90.RAMFS siz|
00022370  65 0a 31 34 35 09 26 39  31 09 53 79 73 74 65 6d  |e.145.&91.System|
00022380  20 68 65 61 70 20 73 69  7a 65 0a 31 34 36 09 26  | heap size.146.&|
00022390  39 32 09 52 4d 41 20 73  69 7a 65 0a 31 34 37 09  |92.RMA size.147.|
000223a0  26 39 33 09 53 70 72 69  74 65 20 73 69 7a 65 0a  |&93.Sprite size.|
000223b0  31 34 38 09 26 39 34 09  3c 53 6f 75 6e 64 44 65  |148.&94.<SoundDe|
000223c0  66 61 75 6c 74 3d 3e 6f  73 5f 62 79 74 65 63 6d  |fault=>os_bytecm|
000223d0  6f 73 31 34 38 3e 0a 31  34 39 09 26 39 35 09 42  |os148>.149.&95.B|
000223e0  61 73 69 63 20 65 64 69  74 6f 72 20 66 6c 61 67  |asic editor flag|
000223f0  73 20 62 79 74 65 20 30  0a 31 35 30 09 26 39 36  |s byte 0.150.&96|
00022400  09 42 61 73 69 63 20 65  64 69 74 6f 72 20 66 6c  |.Basic editor fl|
00022410  61 67 73 20 62 79 74 65  20 31 0a 31 35 31 09 26  |ags byte 1.151.&|
00022420  39 37 09 42 61 73 69 63  20 65 64 69 74 6f 72 20  |97.Basic editor |
00022430  66 6c 61 67 73 20 62 79  74 65 20 32 0a 31 35 32  |flags byte 2.152|
00022440  09 26 39 38 09 42 61 73  69 63 20 65 64 69 74 6f  |.&98.Basic edito|
00022450  72 20 66 6c 61 67 73 20  62 79 74 65 20 33 0a 31  |r flags byte 3.1|
00022460  35 33 09 26 39 39 09 45  63 6f 6e 65 74 20 70 72  |53.&99.Econet pr|
00022470  69 6e 74 65 72 20 73 65  72 76 65 72 20 6e 61 6d  |inter server nam|
00022480  65 20 62 79 74 65 20 31  0a 31 35 34 09 26 39 41  |e byte 1.154.&9A|
00022490  09 45 63 6f 6e 65 74 20  70 72 69 6e 74 65 72 20  |.Econet printer |
000224a0  73 65 72 76 65 72 20 6e  61 6d 65 20 62 79 74 65  |server name byte|
000224b0  20 32 0a 31 35 35 09 26  39 42 09 45 63 6f 6e 65  | 2.155.&9B.Econe|
000224c0  74 20 70 72 69 6e 74 65  72 20 73 65 72 76 65 72  |t printer server|
000224d0  20 6e 61 6d 65 20 62 79  74 65 20 33 0a 31 35 36  | name byte 3.156|
000224e0  09 26 39 43 09 45 63 6f  6e 65 74 20 70 72 69 6e  |.&9C.Econet prin|
000224f0  74 65 72 20 73 65 72 76  65 72 20 6e 61 6d 65 20  |ter server name |
00022500  62 79 74 65 20 34 0a 31  35 37 09 26 39 44 09 45  |byte 4.157.&9D.E|
00022510  63 6f 6e 65 74 20 70 72  69 6e 74 65 72 20 73 65  |conet printer se|
00022520  72 76 65 72 20 6e 61 6d  65 20 62 79 74 65 20 35  |rver name byte 5|
00022530  0a 31 35 38 09 26 39 45  09 45 63 6f 6e 65 74 20  |.158.&9E.Econet |
00022540  66 69 6c 65 73 65 72 76  65 72 20 6e 61 6d 65 20  |fileserver name |
00022550  62 79 74 65 20 31 0a 31  35 39 09 26 39 46 09 45  |byte 1.159.&9F.E|
00022560  63 6f 6e 65 74 20 66 69  6c 65 73 65 72 76 65 72  |conet fileserver|
00022570  20 6e 61 6d 65 20 62 79  74 65 20 32 0a 31 36 30  | name byte 2.160|
00022580  09 26 41 30 09 45 63 6f  6e 65 74 20 66 69 6c 65  |.&A0.Econet file|
00022590  73 65 72 76 65 72 20 6e  61 6d 65 20 62 79 74 65  |server name byte|
000225a0  20 33 0a 31 36 31 09 26  41 31 09 45 63 6f 6e 65  | 3.161.&A1.Econe|
000225b0  74 20 66 69 6c 65 73 65  72 76 65 72 20 6e 61 6d  |t fileserver nam|
000225c0  65 20 62 79 74 65 20 34  0a 31 36 32 09 26 41 32  |e byte 4.162.&A2|
000225d0  09 45 63 6f 6e 65 74 20  66 69 6c 65 73 65 72 76  |.Econet fileserv|
000225e0  65 72 20 6e 61 6d 65 20  62 79 74 65 20 35 0a 31  |er name byte 5.1|
000225f0  36 33 09 26 41 33 09 45  63 6f 6e 65 74 20 66 69  |63.&A3.Econet fi|
00022600  6c 65 73 65 72 76 65 72  20 6e 61 6d 65 20 62 79  |leserver name by|
00022610  74 65 20 36 0a 31 36 34  09 26 41 34 09 45 63 6f  |te 6.164.&A4.Eco|
00022620  6e 65 74 20 66 69 6c 65  73 65 72 76 65 72 20 6e  |net fileserver n|
00022630  61 6d 65 20 62 79 74 65  20 37 0a 31 36 35 09 26  |ame byte 7.165.&|
00022640  41 35 09 45 63 6f 6e 65  74 20 66 69 6c 65 73 65  |A5.Econet filese|
00022650  72 76 65 72 20 6e 61 6d  65 20 62 79 74 65 20 38  |rver name byte 8|
00022660  0a 31 36 36 09 26 41 36  09 45 63 6f 6e 65 74 20  |.166.&A6.Econet |
00022670  66 69 6c 65 73 65 72 76  65 72 20 6e 61 6d 65 20  |fileserver name |
00022680  62 79 74 65 20 39 0a 31  36 37 09 26 41 37 09 45  |byte 9.167.&A7.E|
00022690  63 6f 6e 65 74 20 66 69  6c 65 73 65 72 76 65 72  |conet fileserver|
000226a0  20 6e 61 6d 65 20 62 79  74 65 20 31 30 0a 31 36  | name byte 10.16|
000226b0  38 09 26 41 38 09 45 63  6f 6e 65 74 20 66 69 6c  |8.&A8.Econet fil|
000226c0  65 73 65 72 76 65 72 20  6e 61 6d 65 20 62 79 74  |eserver name byt|
000226d0  65 20 31 31 0a 31 36 39  09 26 41 39 09 45 63 6f  |e 11.169.&A9.Eco|
000226e0  6e 65 74 20 66 69 6c 65  73 65 72 76 65 72 20 6e  |net fileserver n|
000226f0  61 6d 65 20 62 79 74 65  20 31 32 0a 31 37 30 09  |ame byte 12.170.|
00022700  26 41 41 09 45 63 6f 6e  65 74 20 66 69 6c 65 73  |&AA.Econet files|
00022710  65 72 76 65 72 20 6e 61  6d 65 20 62 79 74 65 20  |erver name byte |
00022720  31 33 0a 31 37 31 09 26  41 42 09 45 63 6f 6e 65  |13.171.&AB.Econe|
00022730  74 20 66 69 6c 65 73 65  72 76 65 72 20 6e 61 6d  |t fileserver nam|
00022740  65 20 62 79 74 65 20 31  34 0a 31 37 32 09 26 41  |e byte 14.172.&A|
00022750  43 09 45 63 6f 6e 65 74  20 66 69 6c 65 73 65 72  |C.Econet fileser|
00022760  76 65 72 20 6e 61 6d 65  20 62 79 74 65 20 31 35  |ver name byte 15|
00022770  0a 31 37 33 09 26 41 44  09 55 6e 70 6c 75 67 67  |.173.&AD.Unplugg|
00022780  65 64 20 6d 6f 64 75 6c  65 73 20 62 79 74 65 20  |ed modules byte |
00022790  34 0a 31 37 34 09 26 41  45 09 55 6e 70 6c 75 67  |4.174.&AE.Unplug|
000227a0  67 65 64 20 6d 6f 64 75  6c 65 73 20 62 79 74 65  |ged modules byte|
000227b0  20 35 0a 31 37 35 09 26  41 46 09 55 6e 70 6c 75  | 5.175.&AF.Unplu|
000227c0  67 67 65 64 20 6d 6f 64  75 6c 65 73 20 62 79 74  |gged modules byt|
000227d0  65 20 36 0a 31 37 36 09  26 42 30 09 55 6e 70 6c  |e 6.176.&B0.Unpl|
000227e0  75 67 67 65 64 20 6d 6f  64 75 6c 65 73 20 62 79  |ugged modules by|
000227f0  74 65 20 37 0a 31 37 37  09 26 42 31 09 55 6e 70  |te 7.177.&B1.Unp|
00022800  6c 75 67 67 65 64 20 65  78 74 65 6e 73 69 6f 6e  |lugged extension|
00022810  20 63 61 72 64 20 30 0a  31 37 38 09 26 42 32 09  | card 0.178.&B2.|
00022820  55 6e 70 6c 75 67 67 65  64 20 65 78 74 65 6e 73  |Unplugged extens|
00022830  69 6f 6e 20 63 61 72 64  20 31 0a 31 37 39 09 26  |ion card 1.179.&|
00022840  42 33 09 55 6e 70 6c 75  67 67 65 64 20 65 78 74  |B3.Unplugged ext|
00022850  65 6e 73 69 6f 6e 20 63  61 72 64 20 32 0a 31 38  |ension card 2.18|
00022860  30 09 26 42 34 09 55 6e  70 6c 75 67 67 65 64 20  |0.&B4.Unplugged |
00022870  65 78 74 65 6e 73 69 6f  6e 20 63 61 72 64 20 33  |extension card 3|
00022880  0a 31 38 31 09 26 42 35  09 42 61 73 69 63 20 65  |.181.&B5.Basic e|
00022890  64 69 74 6f 72 20 77 69  6c 64 20 63 61 72 64 20  |ditor wild card |
000228a0  30 0a 31 38 32 09 26 42  36 09 42 61 73 69 63 20  |0.182.&B6.Basic |
000228b0  65 64 69 74 6f 72 20 77  69 6c 64 20 63 61 72 64  |editor wild card|
000228c0  20 31 0a 31 38 33 09 26  42 37 09 42 61 73 69 63  | 1.183.&B7.Basic|
000228d0  20 65 64 69 74 6f 72 20  77 69 6c 64 20 63 61 72  | editor wild car|
000228e0  64 20 32 0a 31 38 34 09  26 42 38 09 42 61 73 69  |d 2.184.&B8.Basi|
000228f0  63 20 65 64 69 74 6f 72  20 77 69 6c 64 20 63 61  |c editor wild ca|
00022900  72 64 20 33 0a 31 38 35  09 26 42 39 09 4c 61 6e  |rd 3.185.&B9.Lan|
00022910  67 75 61 67 65 0a 31 38  36 09 26 42 41 09 43 6f  |guage.186.&BA.Co|
00022920  75 6e 74 72 79 0a 31 38  37 09 26 42 42 09 56 46  |untry.187.&BB.VF|
00022930  53 20 3f 0a 31 38 38 09  26 42 43 09 3c 42 6c 61  |S ?.188.&BC.<Bla|
00022940  6e 6b 65 72 2f 4d 69 73  63 20 64 61 74 61 3d 3e  |nker/Misc data=>|
00022950  6f 73 5f 62 79 74 65 63  6d 6f 73 31 38 38 3e 0a  |os_bytecmos188>.|
00022960  31 38 39 09 26 42 44 09  41 44 46 53 20 64 69 73  |189.&BD.ADFS dis|
00022970  63 20 73 69 7a 65 20 30  0a 31 39 30 09 26 42 45  |c size 0.190.&BE|
00022980  09 41 44 46 53 20 64 69  73 63 20 73 69 7a 65 20  |.ADFS disc size |
00022990  31 0a 31 39 31 09 26 42  46 09 41 44 46 53 20 64  |1.191.&BF.ADFS d|
000229a0  69 73 63 20 73 69 7a 65  20 32 0a 31 39 32 09 26  |isc size 2.192.&|
000229b0  43 30 09 41 44 46 53 20  64 69 73 63 20 73 69 7a  |C0.ADFS disc siz|
000229c0  65 20 33 0a 31 39 33 09  26 43 31 09 3c 50 72 6f  |e 3.193.&C1.<Pro|
000229d0  74 65 63 74 69 6f 6e 20  66 6c 61 67 73 3d 3e 6f  |tection flags=>o|
000229e0  73 5f 62 79 74 65 63 6d  6f 73 31 39 33 3e 0a 31  |s_bytecmos193>.1|
000229f0  39 34 09 26 43 32 09 4d  6f 75 73 65 20 73 74 65  |94.&C2.Mouse ste|
00022a00  70 0a 31 39 35 09 26 43  33 09 3c 42 72 6f 61 64  |p.195.&C3.<Broad|
00022a10  63 61 73 74 2f 43 61 63  68 65 2f 41 75 74 6f 57  |cast/Cache/AutoW|
00022a20  69 6d 70 2f 4d 69 73 63  20 64 61 74 61 3d 3e 6f  |imp/Misc data=>o|
00022a30  73 5f 62 79 74 65 63 6d  6f 73 31 39 35 3e 0a 31  |s_bytecmos195>.1|
00022a40  39 36 09 26 43 34 09 57  69 6d 70 20 6d 6f 64 65  |96.&C4.Wimp mode|
00022a50  0a 31 39 37 09 26 43 35  09 3c 57 69 6d 70 20 66  |.197.&C5.<Wimp f|
00022a60  6c 61 67 73 3d 3e 6f 73  5f 62 79 74 65 63 6d 6f  |lags=>os_bytecmo|
00022a70  73 31 39 37 3e 0a 31 39  38 09 26 43 36 09 3c 46  |s197>.198.&C6.<F|
00022a80  69 6c 65 72 20 66 6c 61  67 73 3d 3e 6f 73 5f 62  |iler flags=>os_b|
00022a90  79 74 65 63 6d 6f 73 31  39 38 3e 0a 31 39 39 09  |ytecmos198>.199.|
00022aa0  26 43 37 09 41 44 46 53  20 64 69 72 65 63 74 6f  |&C7.ADFS directo|
00022ab0  72 79 20 63 61 63 68 65  0a 32 30 30 09 26 43 38  |ry cache.200.&C8|
00022ac0  09 46 6f 6e 74 4d 61 78  0a 32 30 31 09 26 43 39  |.FontMax.201.&C9|
00022ad0  09 46 6f 6e 74 4d 61 78  31 0a 32 30 32 09 26 43  |.FontMax1.202.&C|
00022ae0  41 09 46 6f 6e 74 4d 61  78 32 0a 32 30 33 09 26  |A.FontMax2.203.&|
00022af0  43 42 09 46 6f 6e 74 4d  61 78 33 0a 32 30 34 09  |CB.FontMax3.204.|
00022b00  26 43 43 09 46 6f 6e 74  4d 61 78 34 0a 32 30 35  |&CC.FontMax4.205|
00022b10  09 26 43 44 09 46 6f 6e  74 4d 61 78 35 0a 32 30  |.&CD.FontMax5.20|
00022b20  36 09 26 43 45 09 46 6f  6e 74 4d 61 78 36 0a 32  |6.&CE.FontMax6.2|
00022b30  30 37 09 26 43 46 09 46  6f 6e 74 4d 61 78 37 0a  |07.&CF.FontMax7.|
00022b40  32 30 38 09 26 44 30 09  3c 53 43 53 49 46 53 20  |208.&D0.<SCSIFS |
00022b50  64 72 69 76 65 73 3d 3e  6f 73 5f 62 79 74 65 63  |drives=>os_bytec|
00022b60  6d 6f 73 32 30 38 3e 0a  32 30 39 09 26 44 31 09  |mos208>.209.&D1.|
00022b70  53 43 53 49 46 53 20 62  75 66 66 65 72 73 0a 32  |SCSIFS buffers.2|
00022b80  31 30 09 26 44 32 09 53  43 53 49 46 53 20 64 69  |10.&D2.SCSIFS di|
00022b90  72 65 63 74 6f 72 79 20  63 61 63 68 65 0a 32 31  |rectory cache.21|
00022ba0  31 09 26 44 33 09 53 43  53 49 46 53 20 64 69 73  |1.&D3.SCSIFS dis|
00022bb0  63 20 73 69 7a 65 20 30  0a 32 31 32 09 26 44 34  |c size 0.212.&D4|
00022bc0  09 53 43 53 49 46 53 20  64 69 73 63 20 73 69 7a  |.SCSIFS disc siz|
00022bd0  65 20 31 0a 32 31 33 09  26 44 35 09 53 43 53 49  |e 1.213.&D5.SCSI|
00022be0  46 53 20 64 69 73 63 20  73 69 7a 65 20 32 0a 32  |FS disc size 2.2|
00022bf0  31 34 09 26 44 36 09 53  43 53 49 46 53 20 64 69  |14.&D6.SCSIFS di|
00022c00  73 63 20 73 69 7a 65 20  33 0a 32 31 35 09 26 44  |sc size 3.215.&D|
00022c10  37 09 3c 41 75 74 6f 20  6c 6f 61 64 20 61 70 70  |7.<Auto load app|
00022c20  6c 69 63 61 74 69 6f 6e  73 3d 3e 6f 73 5f 62 79  |lications=>os_by|
00022c30  74 65 63 6d 6f 73 32 31  35 3e 0a 32 31 36 09 26  |tecmos215>.216.&|
00022c40  44 38 09 3c 41 75 74 6f  20 6c 6f 61 64 20 61 70  |D8.<Auto load ap|
00022c50  70 6c 69 63 61 74 69 6f  6e 73 3d 3e 6f 73 5f 62  |plications=>os_b|
00022c60  79 74 65 63 6d 6f 73 32  31 36 3e 0a 32 32 30 09  |ytecmos216>.220.|
00022c70  26 44 43 09 3c 41 6c 61  72 6d 20 66 6c 61 67 73  |&DC.<Alarm flags|
00022c80  2f 44 53 54 3d 3e 6f 73  5f 62 79 74 65 63 6d 6f  |/DST=>os_bytecmo|
00022c90  73 32 32 30 3e 0a 32 32  31 09 26 44 44 09 57 69  |s220>.221.&DD.Wi|
00022ca0  6d 70 20 64 72 61 67 20  63 6c 69 63 6b 20 64 65  |mp drag click de|
00022cb0  6c 61 79 0a 32 32 32 09  26 44 45 09 57 69 6d 70  |lay.222.&DE.Wimp|
00022cc0  20 64 72 61 67 20 6d 6f  76 65 20 64 65 6c 61 79  | drag move delay|
00022cd0  0a 32 32 33 09 26 44 46  09 57 69 6d 70 20 64 6f  |.223.&DF.Wimp do|
00022ce0  75 62 6c 65 20 63 6c 69  63 6b 20 64 65 6c 61 79  |uble click delay|
00022cf0  0a 32 33 33 09 26 45 39  09 46 53 4c 6f 63 6b 20  |.233.&E9.FSLock |
00022d00  70 61 73 73 77 6f 72 64  20 62 79 74 65 20 30 0a  |password byte 0.|
00022d10  32 33 34 09 26 45 41 09  46 53 4c 6f 63 6b 20 70  |234.&EA.FSLock p|
00022d20  61 73 73 77 6f 72 64 20  62 79 74 65 20 31 0a 32  |assword byte 1.2|
00022d30  33 35 09 26 45 42 09 46  53 4c 6f 63 6b 20 70 61  |35.&EB.FSLock pa|
00022d40  73 73 77 6f 72 64 20 62  79 74 65 20 32 0a 32 33  |ssword byte 2.23|
00022d50  36 09 26 45 43 09 46 53  4c 6f 63 6b 20 70 61 73  |6.&EC.FSLock pas|
00022d60  73 77 6f 72 64 20 62 79  74 65 20 33 0a 32 33 37  |sword byte 3.237|
00022d70  09 26 45 44 09 46 53 4c  6f 63 6b 20 70 61 73 73  |.&ED.FSLock pass|
00022d80  77 6f 72 64 20 62 79 74  65 20 34 0a 32 33 38 09  |word byte 4.238.|
00022d90  26 45 45 09 46 53 4c 6f  63 6b 20 70 61 73 73 77  |&EE.FSLock passw|
00022da0  6f 72 64 20 62 79 74 65  20 35 0a 32 33 39 09 26  |ord byte 5.239.&|
00022db0  45 46 09 43 68 65 63 6b  73 75 6d 0a 44 41 54 41  |EF.Checksum.DATA|
00022dc0  63 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |c...OS_Byte CMOS|
00022dd0  20 31 30 0a 42 69 74 28  73 29 09 4d 65 61 6e 69  | 10.Bit(s).Meani|
00022de0  6e 67 0a 23 4c 69 6e 65  0a 30 2c 31 2c 32 2c 33  |ng.#Line.0,1,2,3|
00022df0  09 4d 6f 64 65 0a 34 09  49 6e 74 65 72 6c 61 63  |.Mode.4.Interlac|
00022e00  65 20 61 63 74 69 76 65  0a 35 2c 36 2c 37 09 56  |e active.5,6,7.V|
00022e10  65 72 74 69 63 61 6c 20  61 64 6a 75 73 74 0a 00  |ertical adjust..|
00022e20  44 41 54 41 e7 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00022e30  43 4d 4f 53 20 31 31 0a  42 69 74 28 73 29 09 4d  |CMOS 11.Bit(s).M|
00022e40  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 30 2c 31  |eaning.#Line.0,1|
00022e50  2c 32 09 44 72 69 76 65  20 6e 75 6d 62 65 72 0a  |,2.Drive number.|
00022e60  33 2c 34 2c 35 09 3c 43  61 70 73 20 6c 6f 63 6b  |3,4,5.<Caps lock|
00022e70  20 73 74 61 74 75 73 3d  3e 2e 63 61 70 73 3e 0a  | status=>.caps>.|
00022e80  36 09 4d 6f 75 6e 74 20  64 69 73 63 73 20 69 66  |6.Mount discs if|
00022e90  20 73 65 74 0a 23 53 75  62 70 61 67 65 20 63 61  | set.#Subpage ca|
00022ea0  70 73 0a 43 61 70 73 20  4c 6f 63 6b 20 73 74 61  |ps.Caps Lock sta|
00022eb0  74 75 73 0a 56 61 6c 75  65 09 4d 65 61 6e 69 6e  |tus.Value.Meanin|
00022ec0  67 0a 23 4c 69 6e 65 3b  57 72 61 70 20 6f 66 66  |g.#Line;Wrap off|
00022ed0  0a 31 09 53 68 69 66 74  20 43 61 70 69 74 61 6c  |.1.Shift Capital|
00022ee0  73 0a 32 09 4e 6f 20 43  61 70 69 74 61 6c 73 20  |s.2.No Capitals |
00022ef0  28 43 61 70 73 20 6f 66  66 29 0a 34 09 43 61 70  |(Caps off).4.Cap|
00022f00  73 20 4c 6f 63 6b 0a 00  44 41 54 41 96 00 00 00  |s Lock..DATA....|
00022f10  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 31 35 0a  |OS_Byte CMOS 15.|
00022f20  42 69 74 28 73 29 09 4d  65 61 6e 69 6e 67 0a 23  |Bit(s).Meaning.#|
00022f30  4c 69 6e 65 0a 31 09 4e  6f 20 70 72 69 6e 74 65  |Line.1.No printe|
00022f40  72 20 69 67 6e 6f 72 65  20 63 68 61 72 61 63 74  |r ignore charact|
00022f50  65 72 0a 32 2c 33 2c 34  09 3c 53 65 72 69 61 6c  |er.2,3,4.<Serial|
00022f60  20 70 6f 72 74 20 62 61  75 64 20 72 61 74 65 3d  | port baud rate=|
00022f70  3e 4f 53 5f 53 65 72 69  61 6c 4f 70 53 70 65 65  |>OS_SerialOpSpee|
00022f80  64 73 3e 0a 35 2c 36 2c  37 09 50 72 69 6e 74 65  |ds>.5,6,7.Printe|
00022f90  72 20 64 65 73 74 69 6e  61 74 69 6f 6e 0a 00 00  |r destination...|
00022fa0  44 41 54 41 82 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00022fb0  43 4d 4f 53 20 31 36 0a  42 69 74 28 73 29 09 4d  |CMOS 16.Bit(s).M|
00022fc0  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 31 09 4c  |eaning.#Line.1.L|
00022fd0  6f 75 64 20 62 65 65 70  0a 33 09 4e 6f 53 63 72  |oud beep.3.NoScr|
00022fe0  6f 6c 6c 0a 34 09 42 6f  6f 74 20 66 72 6f 6d 20  |oll.4.Boot from |
00022ff0  64 69 73 63 0a 35 2c 36  2c 37 09 3c 53 65 72 69  |disc.5,6,7.<Seri|
00023000  61 6c 20 64 61 74 61 20  66 6f 72 6d 61 74 3d 3e  |al data format=>|
00023010  4f 53 5f 53 65 72 69 61  6c 4f 70 46 6f 72 6d 61  |OS_SerialOpForma|
00023020  74 3e 00 00 44 41 54 41  b9 00 00 00 4f 53 5f 42  |t>..DATA....OS_B|
00023030  79 74 65 20 43 4d 4f 53  20 31 37 0a 42 69 74 28  |yte CMOS 17.Bit(|
00023040  73 29 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |s).Meaning.#Line|
00023050  0a 23 57 72 61 70 20 6f  66 66 0a 30 2c 31 09 4e  |.#Wrap off.0,1.N|
00023060  65 74 46 69 6c 65 72 20  3c 73 6f 72 74 20 66 6f  |etFiler <sort fo|
00023070  72 6d 61 74 3d 3e 6f 73  5f 62 79 74 65 63 6d 6f  |rmat=>os_bytecmo|
00023080  73 64 69 73 70 6c 61 79  3e 0a 32 09 55 73 65 20  |sdisplay>.2.Use |
00023090  41 72 74 68 75 72 4c 69  62 20 66 6f 72 20 6c 69  |ArthurLib for li|
000230a0  62 72 61 72 79 20 6f 6e  20 4c 6f 67 6f 6e 0a 33  |brary on Logon.3|
000230b0  2c 34 09 4e 65 74 46 69  6c 65 72 20 3c 64 69 73  |,4.NetFiler <dis|
000230c0  70 6c 61 79 20 66 6f 72  6d 61 74 3d 3e 6f 73 5f  |play format=>os_|
000230d0  62 79 74 65 63 6d 6f 73  73 6f 72 74 3e 00 00 00  |bytecmossort>...|
000230e0  44 41 54 41 cd 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000230f0  43 4d 4f 53 20 32 38 0a  42 69 74 28 73 29 09 4d  |CMOS 28.Bit(s).M|
00023100  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 30 09 54  |eaning.#Line.0.T|
00023110  72 75 6e 63 61 74 65 20  66 69 6c 65 6e 61 6d 65  |runcate filename|
00023120  73 0a 31 09 44 72 61 67  41 53 70 72 69 74 65 20  |s.1.DragASprite |
00023130  65 6e 61 62 6c 65 64 0a  32 09 44 6f 6e 27 74 20  |enabled.2.Don't |
00023140  75 73 65 20 46 69 6c 65  72 41 63 74 69 6f 6e 0a  |use FilerAction.|
00023150  33 09 44 69 74 68 65 72  20 69 6e 20 34 20 63 6f  |3.Dither in 4 co|
00023160  6c 6f 75 72 20 6d 6f 64  65 73 0a 34 09 44 6f 6e  |lour modes.4.Don|
00023170  27 74 20 6f 62 73 63 75  72 65 20 69 63 6f 6e 20  |'t obscure icon |
00023180  62 61 72 0a 36 2c 37 09  3c 4c 61 73 74 20 73 68  |bar.6,7.<Last sh|
00023190  75 74 64 6f 77 6e 20 74  79 70 65 3d 3e 6f 73 5f  |utdown type=>os_|
000231a0  62 79 74 65 63 6d 6f 73  32 38 61 3e 0a 00 00 00  |bytecmos28a>....|
000231b0  44 41 54 41 aa 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000231c0  43 4d 4f 53 20 31 33 32  0a 42 69 74 28 73 29 09  |CMOS 132.Bit(s).|
000231d0  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 2d  |Meaning.#Line.0-|
000231e0  34 09 3c 44 75 6d 70 20  66 6f 72 6d 61 74 3d 3e  |4.<Dump format=>|
000231f0  2e 64 75 6d 70 3e 0a 35  09 54 75 62 65 20 65 78  |.dump>.5.Tube ex|
00023200  70 61 6e 73 69 6f 6e 20  63 61 72 64 20 65 6e 61  |pansion card ena|
00023210  62 6c 65 64 0a 36 2c 37  09 48 6f 73 74 20 70 6f  |bled.6,7.Host po|
00023220  64 75 6c 65 0a 23 53 75  62 70 61 67 65 20 64 75  |dule.#Subpage du|
00023230  6d 70 0a 44 75 6d 70 20  66 6f 72 6d 61 74 0a 42  |mp.Dump format.B|
00023240  69 74 28 73 29 09 4d 65  61 6e 69 6e 67 0a 23 4c  |it(s).Meaning.#L|
00023250  69 6e 65 0a 30 2c 31 09  3c 49 6e 76 61 6c 69 64  |ine.0,1.<Invalid|
00023260  20 63 68 61 72 61 63 74  65 72 20 66 6f 72 6d 61  | character forma|
00023270  74 3d 3e 2e 69 6e 76 61  6c 69 64 3e 0a 32 09 54  |t=>.invalid>.2.T|
00023280  72 65 61 74 20 74 6f 70  20 62 69 74 20 63 68 61  |reat top bit cha|
00023290  72 61 63 74 65 72 73 20  61 73 20 76 61 6c 69 64  |racters as valid|
000232a0  0a 33 09 41 4e 44 20 63  68 61 72 61 63 74 65 72  |.3.AND character|
000232b0  73 20 77 69 74 68 20 26  37 46 20 69 6e 20 2a 44  |s with &7F in *D|
000232c0  75 6d 70 0a 23 53 75 62  70 61 67 65 20 69 6e 76  |ump.#Subpage inv|
000232d0  61 6c 69 64 0a 49 6e 76  61 6c 69 64 20 63 68 61  |alid.Invalid cha|
000232e0  72 61 63 74 65 72 20 63  6f 64 65 73 0a 23 4c 69  |racter codes.#Li|
000232f0  6e 65 0a 56 61 6c 75 65  09 4d 65 61 6e 69 6e 67  |ne.Value.Meaning|
00023300  20 66 6f 72 20 69 6e 76  61 6c 69 64 20 63 68 61  | for invalid cha|
00023310  72 61 63 74 65 72 73 0a  30 09 47 53 54 72 61 6e  |racters.0.GSTran|
00023320  73 20 66 6f 72 6d 61 74  0a 31 09 44 6f 74 73 0a  |s format.1.Dots.|
00023330  32 09 44 65 63 69 6d 61  6c 20 69 6e 20 5c 3c 3e  |2.Decimal in \<>|
00023340  27 73 0a 33 09 48 65 78  61 64 65 63 69 6d 61 6c  |'s.3.Hexadecimal|
00023350  20 69 6e 20 5c 3c 3e 27  73 0a 00 00 44 41 54 41  | in \<>'s...DATA|
00023360  70 01 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |p...OS_Byte CMOS|
00023370  20 31 33 33 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 133.Bit(s).Mean|
00023380  69 6e 67 0a 23 4c 69 6e  65 0a 30 20 26 20 37 09  |ing.#Line.0 & 7.|
00023390  3c 53 79 6e 63 3d 3e 2e  73 79 6e 63 3e 0a 31 09  |<Sync=>.sync>.1.|
000233a0  54 6f 70 20 62 69 74 20  6f 66 20 6d 6f 64 65 0a  |Top bit of mode.|
000233b0  32 2d 36 09 3c 4d 6f 6e  69 74 6f 72 20 74 79 70  |2-6.<Monitor typ|
000233c0  65 3d 3e 2e 6d 6f 6e 69  74 6f 72 73 3e 0a 23 53  |e=>.monitors>.#S|
000233d0  75 62 70 61 67 65 20 73  79 6e 63 0a 4d 6f 6e 69  |ubpage sync.Moni|
000233e0  74 6f 72 20 73 79 6e 63  0a 56 61 6c 75 65 09 4d  |tor sync.Value.M|
000233f0  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 30 09 56  |eaning.#Line.0.V|
00023400  65 72 74 69 63 61 6c 20  73 79 6e 63 0a 31 09 43  |ertical sync.1.C|
00023410  6f 6d 70 6f 73 69 74 65  20 73 79 6e 63 0a 26 38  |omposite sync.&8|
00023420  31 09 41 75 74 6f 20 73  65 6c 65 63 74 20 73 79  |1.Auto select sy|
00023430  6e 63 20 6d 6f 64 65 0a  23 53 75 62 70 61 67 65  |nc mode.#Subpage|
00023440  20 6d 6f 6e 69 74 6f 72  73 0a 4d 6f 6e 69 74 6f  | monitors.Monito|
00023450  72 20 74 79 70 65 73 0a  56 61 6c 75 65 09 4d 65  |r types.Value.Me|
00023460  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 30 09 53 74  |aning.#Line.0.St|
00023470  61 6e 64 61 72 64 0a 31  09 4d 75 6c 74 69 2d 66  |andard.1.Multi-f|
00023480  72 65 71 75 65 6e 63 79  0a 32 09 48 69 2d 72 65  |requency.2.Hi-re|
00023490  73 20 6d 6f 6e 6f 0a 33  09 56 47 41 0a 34 09 53  |s mono.3.VGA.4.S|
000234a0  75 70 65 72 20 56 47 41  0a 35 09 4c 43 44 0a 26  |uper VGA.5.LCD.&|
000234b0  31 46 09 41 75 74 6f 20  73 65 6c 65 63 74 20 6d  |1F.Auto select m|
000234c0  6f 6e 69 74 6f 72 20 74  79 70 65 0a 44 41 54 41  |onitor type.DATA|
000234d0  87 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |....OS_Byte CMOS|
000234e0  20 31 33 35 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 135.Bit(s).Mean|
000234f0  69 6e 67 0a 23 4c 69 6e  65 0a 23 57 72 61 70 20  |ing.#Line.#Wrap |
00023500  6f 66 66 0a 30 2d 32 09  4e 75 6d 62 65 72 20 6f  |off.0-2.Number o|
00023510  66 20 66 6c 6f 70 70 79  20 64 72 69 76 65 73 0a  |f floppy drives.|
00023520  33 2d 35 09 4e 75 6d 62  65 72 20 6f 66 20 68 61  |3-5.Number of ha|
00023530  72 64 20 64 72 69 76 65  73 0a 36 2c 37 09 4e 75  |rd drives.6,7.Nu|
00023540  6d 62 65 72 20 6f 66 20  49 44 45 20 64 72 69 76  |mber of IDE driv|
00023550  65 73 0a 00 44 41 54 41  89 00 00 00 4f 53 5f 42  |es..DATA....OS_B|
00023560  79 74 65 20 43 4d 4f 53  20 31 33 36 0a 42 69 74  |yte CMOS 136.Bit|
00023570  28 73 29 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |(s).Meaning.#Lin|
00023580  65 0a 30 2c 31 09 46 6c  6f 70 70 79 20 30 20 73  |e.0,1.Floppy 0 s|
00023590  74 65 70 20 72 61 74 65  0a 32 2c 33 09 46 6c 6f  |tep rate.2,3.Flo|
000235a0  70 70 79 20 31 20 73 74  65 70 20 72 61 74 65 0a  |ppy 1 step rate.|
000235b0  34 2c 35 09 46 6c 6f 70  70 79 20 32 20 73 74 65  |4,5.Floppy 2 ste|
000235c0  70 20 72 61 74 65 0a 36  2c 37 09 46 6c 6f 70 70  |p rate.6,7.Flopp|
000235d0  79 20 33 20 73 74 65 70  20 72 61 74 65 00 00 00  |y 3 step rate...|
000235e0  44 41 54 41 59 00 00 00  4f 53 5f 42 79 74 65 20  |DATAY...OS_Byte |
000235f0  43 4d 4f 53 20 31 34 30  0a 42 69 74 28 73 29 09  |CMOS 140.Bit(s).|
00023600  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |Meaning.#Line.0.|
00023610  4e 65 77 4c 6f 6f 6b 20  65 6e 61 62 6c 65 64 0a  |NewLook enabled.|
00023620  32 2d 34 09 57 69 6d 70  46 6f 6e 74 0a 37 09 44  |2-4.WimpFont.7.D|
00023630  6f 6e 27 74 20 74 69 6c  65 00 00 00 44 41 54 41  |on't tile...DATA|
00023640  5e 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |^...OS_Byte CMOS|
00023650  20 31 34 38 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 148.Bit(s).Mean|
00023660  69 6e 67 0a 23 4c 69 6e  65 0a 30 2d 33 09 53 6f  |ing.#Line.0-3.So|
00023670  75 6e 64 20 76 6f 69 63  65 0a 34 2d 36 09 53 6f  |und voice.4-6.So|
00023680  75 6e 64 20 76 6f 6c 75  6d 65 0a 37 09 53 6f 75  |und volume.7.Sou|
00023690  6e 64 20 65 6e 61 62 6c  65 64 00 00 44 41 54 41  |nd enabled..DATA|
000236a0  3d 01 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |=...OS_Byte CMOS|
000236b0  20 31 38 38 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 188.Bit(s).Mean|
000236c0  69 6e 67 0a 23 4c 69 6e  65 0a 30 2c 31 09 52 4f  |ing.#Line.0,1.RO|
000236d0  4d 46 53 20 6f 70 74 69  6f 6e 73 20 3f 0a 32 09  |MFS options ?.2.|
000236e0  43 61 63 68 65 20 69 63  6f 6e 20 65 6e 61 62 6c  |Cache icon enabl|
000236f0  65 20 73 74 61 74 65 0a  33 2d 35 09 3c 42 6c 61  |e state.3-5.<Bla|
00023700  6e 6b 20 74 69 6d 65 3d  3e 2e 74 69 6d 65 73 3e  |nk time=>.times>|
00023710  0a 36 09 55 6e 62 6c 61  6e 6b 20 73 63 72 65 65  |.6.Unblank scree|
00023720  6e 20 6f 6e 20 77 72 69  74 65 0a 37 09 44 69 73  |n on write.7.Dis|
00023730  61 62 6c 65 20 6c 6f 6e  67 20 73 79 73 74 65 6d  |able long system|
00023740  20 74 65 73 74 0a 23 53  75 62 70 61 67 65 20 74  | test.#Subpage t|
00023750  69 6d 65 73 0a 53 63 72  65 65 6e 20 62 6c 61 6e  |imes.Screen blan|
00023760  6b 20 74 69 6d 65 73 0a  56 61 6c 75 65 09 4d 65  |k times.Value.Me|
00023770  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 30 09 4f 66  |aning.#Line.0.Of|
00023780  66 0a 31 09 33 30 20 73  65 63 6f 6e 64 73 0a 32  |f.1.30 seconds.2|
00023790  09 31 20 6d 69 6e 75 74  65 0a 33 09 32 20 6d 69  |.1 minute.3.2 mi|
000237a0  6e 75 74 65 73 0a 34 09  35 20 6d 69 6e 75 74 65  |nutes.4.5 minute|
000237b0  73 0a 35 09 31 30 20 6d  69 6e 75 74 65 73 0a 36  |s.5.10 minutes.6|
000237c0  09 31 35 20 6d 69 6e 75  74 65 73 0a 37 09 33 30  |.15 minutes.7.30|
000237d0  20 6d 69 6e 75 74 65 73  0a 00 00 00 44 41 54 41  | minutes....DATA|
000237e0  b2 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |....OS_Byte CMOS|
000237f0  20 31 39 33 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 193.Bit(s).Mean|
00023800  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 50 72 6f 74  |ing.#Line.0.Prot|
00023810  65 63 74 69 6f 6e 20 50  65 65 6b 0a 31 09 50 72  |ection Peek.1.Pr|
00023820  6f 74 65 63 74 69 6f 6e  20 50 6f 6b 65 0a 32 09  |otection Poke.2.|
00023830  50 72 6f 74 65 63 74 69  6f 6e 20 4a 53 52 0a 33  |Protection JSR.3|
00023840  09 50 72 6f 74 65 63 74  69 6f 6e 20 55 73 65 72  |.Protection User|
00023850  52 50 43 0a 34 09 50 72  6f 74 65 63 74 69 6f 6e  |RPC.4.Protection|
00023860  20 4f 53 50 72 6f 63 0a  35 09 50 72 6f 74 65 63  | OSProc.5.Protec|
00023870  74 69 6f 6e 20 48 61 6c  74 0a 36 09 50 72 6f 74  |tion Halt.6.Prot|
00023880  65 63 74 69 6f 6e 20 47  65 74 52 65 67 73 00 00  |ection GetRegs..|
00023890  44 41 54 41 e7 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000238a0  43 4d 4f 53 20 31 39 35  0a 42 69 74 28 73 29 09  |CMOS 195.Bit(s).|
000238b0  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |Meaning.#Line.0.|
000238c0  42 6f 6f 74 4e 65 74 0a  31 09 44 79 6e 61 6d 69  |BootNet.1.Dynami|
000238d0  63 20 73 74 61 74 69 6f  6e 0a 32 09 43 4d 4f 53  |c station.2.CMOS|
000238e0  20 72 65 73 65 74 0a 33  09 50 6f 77 65 72 20 73  | reset.3.Power s|
000238f0  61 76 65 0a 34 09 41 75  74 6f 20 73 65 6c 65 63  |ave.4.Auto selec|
00023900  74 20 57 69 6d 70 20 6d  6f 64 65 0a 35 09 44 69  |t Wimp mode.5.Di|
00023910  73 61 62 6c 65 20 70 72  6f 63 65 73 73 6f 72 20  |sable processor |
00023920  63 61 63 68 65 0a 36 09  44 69 73 61 62 6c 65 20  |cache.6.Disable |
00023930  62 72 6f 61 64 63 61 73  74 20 6c 6f 61 64 65 72  |broadcast loader|
00023940  0a 37 09 45 6e 61 62 6c  65 20 68 6f 75 72 67 6c  |.7.Enable hourgl|
00023950  61 73 73 20 63 6f 6c 6f  75 72 20 63 68 61 6e 67  |ass colour chang|
00023960  69 6e 67 20 62 79 20 62  72 6f 61 64 63 61 73 74  |ing by broadcast|
00023970  20 6c 6f 61 64 65 72 00  44 41 54 41 e1 00 00 00  | loader.DATA....|
00023980  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 31 39 38  |OS_Byte CMOS 198|
00023990  0a 42 69 74 28 73 29 09  4d 65 61 6e 69 6e 67 0a  |.Bit(s).Meaning.|
000239a0  23 4c 69 6e 65 0a 30 2c  31 09 46 69 6c 65 72 20  |#Line.0,1.Filer |
000239b0  3c 64 69 73 70 6c 61 79  20 66 6f 72 6d 61 74 3d  |<display format=|
000239c0  3e 6f 73 5f 62 79 74 65  63 6d 6f 73 64 69 73 70  |>os_bytecmosdisp|
000239d0  6c 61 79 3e 0a 32 2c 33  09 46 69 6c 65 72 20 3c  |lay>.2,3.Filer <|
000239e0  73 6f 72 74 20 66 6f 72  6d 61 74 3d 3e 6f 73 5f  |sort format=>os_|
000239f0  62 79 74 65 63 6d 6f 73  73 6f 72 74 3e 0a 34 09  |bytecmossort>.4.|
00023a00  46 69 6c 65 72 20 46 6f  72 63 65 20 65 6e 61 62  |Filer Force enab|
00023a10  6c 65 64 0a 35 09 46 69  6c 65 72 20 43 6f 6e 66  |led.5.Filer Conf|
00023a20  69 72 6d 20 65 6e 61 62  6c 65 64 0a 36 09 46 69  |irm enabled.6.Fi|
00023a30  6c 65 72 20 56 65 72 62  6f 73 65 20 65 6e 61 62  |ler Verbose enab|
00023a40  6c 65 64 0a 37 09 46 69  6c 65 72 20 4e 65 77 65  |led.7.Filer Newe|
00023a50  72 20 65 6e 61 62 6c 65  64 00 00 00 44 41 54 41  |r enabled...DATA|
00023a60  50 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |P...OS_Byte CMOS|
00023a70  20 32 30 38 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 208.Bit(s).Mean|
00023a80  69 6e 67 0a 23 4c 69 6e  65 0a 30 2d 32 09 53 43  |ing.#Line.0-2.SC|
00023a90  53 49 46 53 20 64 69 73  63 73 0a 33 2d 35 09 53  |SIFS discs.3-5.S|
00023aa0  43 53 49 46 53 20 64 72  69 76 65 0a 44 41 54 41  |CSIFS drive.DATA|
00023ab0  c6 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |....OS_Byte CMOS|
00023ac0  20 32 31 35 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 215.Bit(s).Mean|
00023ad0  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 41 75 74 6f  |ing.#Line.0.Auto|
00023ae0  2d 6c 6f 61 64 20 21 41  6c 61 72 6d 0a 31 09 41  |-load !Alarm.1.A|
00023af0  75 74 6f 2d 6c 6f 61 64  20 21 43 61 6c 63 0a 32  |uto-load !Calc.2|
00023b00  09 41 75 74 6f 2d 6c 6f  61 64 20 21 43 68 61 72  |.Auto-load !Char|
00023b10  73 0a 33 09 41 75 74 6f  2d 6c 6f 61 64 20 21 43  |s.3.Auto-load !C|
00023b20  6f 6e 66 69 67 75 72 65  0a 34 09 41 75 74 6f 2d  |onfigure.4.Auto-|
00023b30  6c 6f 61 64 20 21 44 72  61 77 0a 35 09 41 75 74  |load !Draw.5.Aut|
00023b40  6f 2d 6c 6f 61 64 20 21  45 64 69 74 0a 36 09 41  |o-load !Edit.6.A|
00023b50  75 74 6f 2d 6c 6f 61 64  20 21 48 65 6c 70 0a 37  |uto-load !Help.7|
00023b60  09 41 75 74 6f 2d 6c 6f  61 64 20 21 50 61 69 6e  |.Auto-load !Pain|
00023b70  74 0a 00 00 44 41 54 41  c0 00 00 00 4f 53 5f 42  |t...DATA....OS_B|
00023b80  79 74 65 20 43 4d 4f 53  20 32 31 35 0a 42 69 74  |yte CMOS 215.Bit|
00023b90  28 73 29 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |(s).Meaning.#Lin|
00023ba0  65 0a 30 2d 32 09 41 6c  61 72 6d 20 66 6f 72 6d  |e.0-2.Alarm form|
00023bb0  61 74 0a 33 09 41 6c 61  72 6d 20 63 6f 6e 66 69  |at.3.Alarm confi|
00023bc0  72 6d 20 64 65 6c 65 74  69 6f 6e 73 0a 34 09 41  |rm deletions.4.A|
00023bd0  6c 61 72 6d 20 61 75 74  6f 20 73 61 76 65 20 61  |larm auto save a|
00023be0  66 74 65 72 20 63 68 61  6e 67 65 73 0a 35 09 41  |fter changes.5.A|
00023bf0  6c 61 72 6d 20 6b 65 65  70 20 74 6f 20 77 6f 72  |larm keep to wor|
00023c00  6b 69 6e 67 20 77 65 65  6b 0a 36 09 41 6c 61 72  |king week.6.Alar|
00023c10  6d 20 73 69 6c 65 6e 74  20 75 6e 6c 65 73 73 20  |m silent unless |
00023c20  75 72 67 65 6e 74 0a 37  09 44 53 54 20 61 63 74  |urgent.7.DST act|
00023c30  69 76 65 0a 44 41 54 41  57 00 00 00 53 68 75 74  |ive.DATAW...Shut|
00023c40  64 6f 77 6e 20 74 79 70  65 73 0a 56 61 6c 75 65  |down types.Value|
00023c50  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.Meaning.#Line.0|
00023c60  09 55 6e 6b 6e 6f 77 6e  0a 31 09 46 61 69 6c 65  |.Unknown.1.Faile|
00023c70  64 0a 32 09 50 6f 77 65  72 20 6c 6f 73 74 0a 33  |d.2.Power lost.3|
00023c80  09 55 6e 64 65 66 69 6e  65 64 0a 00 44 41 54 41  |.Undefined..DATA|
00023c90  55 00 00 00 4d 6f 75 73  65 20 74 79 70 65 73 0a  |U...Mouse types.|
00023ca0  56 61 6c 75 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |Value.Meaning.#L|
00023cb0  69 6e 65 0a 30 09 51 75  61 64 72 61 74 75 72 65  |ine.0.Quadrature|
00023cc0  0a 31 09 4d 69 63 72 6f  73 6f 66 74 20 73 65 72  |.1.Microsoft ser|
00023cd0  69 61 6c 0a 32 09 4d 53  43 20 73 65 72 69 61 6c  |ial.2.MSC serial|
00023ce0  0a 00 00 00 44 41 54 41  5f 00 00 00 44 69 73 70  |....DATA_...Disp|
00023cf0  6c 61 79 20 66 6f 72 6d  61 74 73 0a 56 61 6c 75  |lay formats.Valu|
00023d00  65 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 0a  |e.Meaning.#Line.|
00023d10  30 09 4c 61 72 67 65 20  69 63 6f 6e 73 0a 31 09  |0.Large icons.1.|
00023d20  53 6d 61 6c 6c 20 69 63  6f 6e 73 0a 32 09 46 75  |Small icons.2.Fu|
00023d30  6c 6c 20 69 6e 66 6f 0a  33 09 75 6e 64 65 66 69  |ll info.3.undefi|
00023d40  6e 65 64 00 44 41 54 41  6c 00 00 00 53 6f 72 74  |ned.DATAl...Sort|
00023d50  20 74 79 70 65 73 0a 56  61 6c 75 65 09 4d 65 61  | types.Value.Mea|
00023d60  6e 69 6e 67 0a 23 4c 69  6e 65 0a 30 09 53 6f 72  |ning.#Line.0.Sor|
00023d70  74 20 62 79 20 6e 61 6d  65 0a 31 09 53 6f 72 74  |t by name.1.Sort|
00023d80  20 62 79 20 6e 75 6d 62  65 72 20 6f 72 20 74 79  | by number or ty|
00023d90  70 65 0a 32 09 53 6f 72  74 20 62 79 20 73 69 7a  |pe.2.Sort by siz|
00023da0  65 0a 33 09 53 6f 72 74  20 62 79 20 64 61 74 65  |e.3.Sort by date|
00023db0  44 41 54 41 47 01 00 00  4f 53 5f 42 79 74 65 20  |DATAG...OS_Byte |
00023dc0  43 4d 4f 53 20 31 39 37  0a 42 69 74 28 73 29 09  |CMOS 197.Bit(s).|
00023dd0  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |Meaning.#Line.0.|
00023de0  43 6f 6e 74 69 6e 75 6f  75 73 20 77 69 6e 64 6f  |Continuous windo|
00023df0  77 20 6d 6f 76 65 6d 65  6e 74 0a 31 09 43 6f 6e  |w movement.1.Con|
00023e00  74 69 6e 75 6f 75 73 20  77 69 6e 64 6f 77 20 72  |tinuous window r|
00023e10  65 73 69 7a 69 6e 67 0a  32 09 43 6f 6e 74 69 6e  |esizing.2.Contin|
00023e20  75 6f 75 73 20 68 6f 72  69 7a 6f 6e 74 61 6c 20  |uous horizontal |
00023e30  73 63 72 6f 6c 6c 0a 33  09 43 6f 6e 74 69 6e 75  |scroll.3.Continu|
00023e40  6f 75 73 20 76 65 72 74  69 63 61 6c 20 73 63 72  |ous vertical scr|
00023e50  6f 6c 6c 0a 34 09 44 6f  6e 27 74 20 62 65 65 70  |oll.4.Don't beep|
00023e60  20 77 68 65 6e 20 65 72  72 6f 72 20 62 6f 78 20  | when error box |
00023e70  61 70 70 65 61 72 73 0a  35 09 41 6c 6c 6f 77 20  |appears.5.Allow |
00023e80  77 69 6e 64 6f 77 73 20  70 61 72 74 6c 79 20 6f  |windows partly o|
00023e90  66 66 20 73 63 72 65 65  6e 20 28 64 6f 77 6e 20  |ff screen (down |
00023ea0  72 69 67 68 74 29 0a 36  09 41 6c 6c 6f 77 20 77  |right).6.Allow w|
00023eb0  69 6e 64 6f 77 73 20 70  61 72 74 6c 79 20 6f 66  |indows partly of|
00023ec0  66 20 73 63 72 65 65 6e  20 28 61 6c 6c 20 64 69  |f screen (all di|
00023ed0  72 65 63 74 69 6f 6e 73  29 0a 37 09 4f 70 65 6e  |rections).7.Open|
00023ee0  20 73 75 62 6d 65 6e 75  73 20 61 75 74 6f 6d 61  | submenus automa|
00023ef0  74 69 63 61 6c 6c 79 00  44 41 54 41 cf 00 00 00  |tically.DATA....|
00023f00  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 32 31 36  |OS_Byte CMOS 216|
00023f10  0a 42 69 74 28 73 29 09  4d 65 61 6e 69 6e 67 0a  |.Bit(s).Meaning.|
00023f20  23 4c 69 6e 65 0a 30 09  21 42 61 74 4d 61 6e 20  |#Line.0.!BatMan |
00023f30  3a 2d 29 0a 0a 4e 6f 2c  20 69 74 20 72 65 61 6c  |:-)..No, it real|
00023f40  6c 79 20 73 61 79 73 20  74 68 61 74 20 3a 0a 0a  |ly says that :..|
00023f50  23 57 72 61 70 20 6f 66  66 0a 7b 66 43 6f 64 65  |#Wrap off.{fCode|
00023f60  7d 4f 53 42 79 74 65 5f  43 6f 6e 66 69 67 75 72  |}OSByte_Configur|
00023f70  65 52 4f 4d 42 61 74 4d  61 6e 20 20 20 20 20 20  |eROMBatMan      |
00023f80  20 2a 20 20 20 20 20 20  20 32 31 36 0a 4f 53 42  | *       216.OSB|
00023f90  79 74 65 5f 43 6f 6e 66  69 67 75 72 65 52 4f 4d  |yte_ConfigureROM|
00023fa0  42 61 74 4d 61 6e 4d 61  73 6b 20 20 20 2a 20 20  |BatManMask   *  |
00023fb0  20 20 20 20 20 26 31 7b  66 7d 0a 0a 53 6f 20 74  |     &1{f}..So t|
00023fc0  68 65 72 65 21 21 21 00  44 41 54 41 42 00 00 00  |here!!!.DATAB...|
00023fd0  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 32 34 0a  |OS_Byte CMOS 24.|
00023fe0  42 69 74 28 73 29 09 4d  65 61 6e 69 6e 67 0a 23  |Bit(s).Meaning.#|
00023ff0  4c 69 6e 65 0a 30 2d 37  09 54 65 72 72 69 74 6f  |Line.0-7.Territo|
00024000  72 79 20 6e 75 6d 62 65  72 0a 00 00 44 41 54 41  |ry number...DATA|
00024010  54 03 00 00 4f 53 5f 42  79 74 65 20 32 20 20 53  |T...OS_Byte 2  S|
00024020  70 65 63 69 66 79 20 69  6e 70 75 74 20 73 74 72  |pecify input str|
00024030  65 61 6d 0a 23 50 61 72  65 6e 74 20 4f 53 5f 42  |eam.#Parent OS_B|
00024040  79 74 65 49 6e 64 65 78  0a 3d 3e 09 52 30 20 3d  |yteIndex.=>.R0 =|
00024050  09 32 20 28 26 30 32 29  0a 09 52 31 20 3d 09 3c  |.2 (&02)..R1 =.<|
00024060  73 74 72 65 61 6d 20 73  65 6c 65 63 74 69 6f 6e  |stream selection|
00024070  3d 3e 2e 73 74 72 65 61  6d 73 3e 0a 0a 3c 3d 09  |=>.streams>..<=.|
00024080  52 30 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  |R0 preserved..R1|
00024090  20 3d 09 76 61 6c 75 65  20 62 65 66 6f 72 65 20  | =.value before |
000240a0  62 65 69 6e 67 20 6f 76  65 72 77 72 69 74 74 65  |being overwritte|
000240b0  6e 0a 09 52 32 20 63 6f  72 72 75 70 74 65 64 0a  |n..R2 corrupted.|
000240c0  0a 54 68 69 73 20 63 61  6c 6c 20 73 65 6c 65 63  |.This call selec|
000240d0  74 20 74 68 65 20 64 65  76 69 63 65 20 66 72 6f  |t the device fro|
000240e0  6d 20 77 68 69 63 68 20  61 6c 6c 20 73 75 62 73  |m which all subs|
000240f0  65 71 75 65 6e 74 20 69  6e 70 75 74 20 69 73 20  |equent input is |
00024100  74 61 6b 65 6e 20 62 79  20 3c 4f 53 5f 52 65 61  |taken by <OS_Rea|
00024110  64 43 3e 2e 20 4e 6f 74  65 20 74 68 61 74 20 6f  |dC>. Note that o|
00024120  6e 20 65 78 69 74 20 6f  6e 6c 79 20 30 20 6f 72  |n exit only 0 or|
00024130  20 31 20 63 61 6e 20 62  65 20 72 65 74 75 72 6e  | 1 can be return|
00024140  65 64 2c 20 73 6f 20 30  20 6d 61 79 20 61 6c 73  |ed, so 0 may als|
00024150  6f 20 6d 65 61 6e 20 32  2e 20 54 68 65 20 73 74  |o mean 2. The st|
00024160  61 74 65 20 6f 66 20 74  68 69 73 20 76 61 72 69  |ate of this vari|
00024170  61 62 6c 65 20 63 61 6e  20 62 65 20 72 65 61 64  |able can be read|
00024180  20 62 79 20 3c 4f 53 5f  42 79 74 65 31 37 37 3e  | by <OS_Byte177>|
00024190  0a 23 73 75 62 70 61 67  65 20 73 74 72 65 61 6d  |.#subpage stream|
000241a0  73 0a 49 6e 70 75 74 20  73 74 72 65 61 6d 73 0a  |s.Input streams.|
000241b0  56 61 6c 75 65 09 4d 65  61 6e 69 6e 67 0a 30 09  |Value.Meaning.0.|
000241c0  4b 65 79 62 6f 61 72 64  20 69 6e 70 75 74 20 77  |Keyboard input w|
000241d0  69 74 68 20 73 65 72 69  61 6c 20 69 6e 70 75 74  |ith serial input|
000241e0  20 62 75 66 66 65 72 20  64 69 73 61 62 6c 65 64  | buffer disabled|
000241f0  0a 31 09 53 65 72 69 61  6c 20 69 6e 70 75 74 0a  |.1.Serial input.|
00024200  32 09 4b 65 79 62 6f 61  72 64 20 69 6e 70 75 74  |2.Keyboard input|
00024210  20 77 69 74 68 20 73 65  72 69 61 6c 20 69 6e 70  | with serial inp|
00024220  75 74 20 62 75 66 66 65  72 20 65 6e 61 62 6c 65  |ut buffer enable|
00024230  64 0a 0a 54 68 65 20 64  69 66 66 65 72 65 6e 63  |d..The differenc|
00024240  65 20 62 65 74 77 65 65  6e 20 30 20 61 6e 64 20  |e between 0 and |
00024250  32 20 69 73 20 74 68 61  74 20 74 68 65 20 6c 61  |2 is that the la|
00024260  74 74 65 72 20 61 6c 6c  6f 77 73 20 63 68 61 72  |tter allows char|
00024270  61 63 74 65 72 73 20 74  6f 20 62 65 20 72 65 63  |acters to be rec|
00024280  69 65 76 65 64 20 69 6e  74 6f 20 74 68 65 20 73  |ieved into the s|
00024290  65 72 69 61 6c 20 62 75  66 66 65 72 20 75 6e 64  |erial buffer und|
000242a0  65 72 20 69 6e 74 65 72  72 75 70 74 73 20 61 73  |er interrupts as|
000242b0  20 74 68 65 20 73 61 6d  65 20 74 69 6d 65 20 61  | the same time a|
000242c0  73 20 74 68 65 20 6b 65  79 62 6f 61 72 64 20 69  |s the keyboard i|
000242d0  73 20 62 65 69 6e 67 20  75 73 65 64 20 61 73 20  |s being used as |
000242e0  74 68 65 20 70 72 69 6d  61 72 79 20 69 6e 70 75  |the primary inpu|
000242f0  74 2e 20 49 66 20 74 68  65 20 69 6e 70 75 74 20  |t. If the input |
00024300  73 74 72 65 61 6d 73 20  61 72 65 20 73 75 62 73  |streams are subs|
00024310  65 71 75 65 6e 74 6c 79  20 73 77 69 74 63 68 65  |equently switche|
00024320  64 20 74 6f 20 74 68 65  20 73 65 72 69 61 6c 20  |d to the serial |
00024330  64 65 76 69 63 65 2c 20  74 68 65 6e 20 74 68 6f  |device, then tho|
00024340  73 65 20 63 68 61 72 61  63 74 65 72 73 20 63 61  |se characters ca|
00024350  6e 20 74 68 65 6e 20 62  65 20 72 65 61 64 2e 0a  |n then be read..|
00024360  44 41 54 41 c0 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00024370  31 31 20 20 57 72 69 74  65 20 6b 65 79 62 6f 61  |11  Write keyboa|
00024380  72 64 20 61 75 74 6f 20  72 65 70 65 61 74 20 64  |rd auto repeat d|
00024390  65 6c 61 79 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |elay.#Parent OS_|
000243a0  42 79 74 65 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ByteIndex.=>.R0 |
000243b0  3d 09 31 31 0a 09 52 31  20 3d 09 64 65 6c 61 79  |=.11..R1 =.delay|
000243c0  20 70 65 72 69 6f 64 20  69 6e 20 63 65 6e 74 69  | period in centi|
000243d0  73 65 63 6f 6e 64 0a 0a  3c 3d 09 52 30 20 70 72  |second..<=.R0 pr|
000243e0  65 73 65 72 76 65 64 0a  09 52 31 20 3d 09 70 72  |eserved..R1 =.pr|
000243f0  65 76 69 6f 75 73 20 64  65 6c 61 79 20 70 65 72  |evious delay per|
00024400  69 6f 64 0a 09 52 32 20  63 6f 72 72 75 70 74 65  |iod..R2 corrupte|
00024410  64 0a 0a 59 6f 75 20 6d  75 73 74 20 68 6f 6c 64  |d..You must hold|
00024420  20 64 6f 77 6e 20 65 61  63 68 20 6b 65 79 20 6f  | down each key o|
00024430  6e 20 74 68 65 20 6b 65  79 62 6f 61 72 64 20 66  |n the keyboard f|
00024440  6f 72 20 61 20 6e 75 6d  62 65 72 20 6f 66 20 63  |or a number of c|
00024450  65 6e 74 69 73 65 63 6f  6e 64 73 20 62 65 66 6f  |entiseconds befo|
00024460  72 65 20 69 74 20 62 65  67 69 6e 73 20 74 6f 20  |re it begins to |
00024470  61 75 74 6f 72 65 70 65  61 74 2e 20 54 68 69 73  |autorepeat. This|
00024480  20 63 61 6c 6c 20 65 6e  61 62 6c 65 73 20 79 6f  | call enables yo|
00024490  75 20 74 6f 20 63 68 61  6e 67 65 20 74 68 65 20  |u to change the |
000244a0  69 6e 69 74 69 61 6c 20  64 65 6c 61 79 20 66 72  |initial delay fr|
000244b0  6f 6d 20 74 68 65 20 64  65 66 61 75 6c 74 20 73  |om the default s|
000244c0  65 74 20 62 79 20 3c 2a  43 6f 6e 66 69 67 75 72  |et by <*Configur|
000244d0  65 20 44 65 6c 61 79 3d  3e 2a 53 74 61 74 75 73  |e Delay=>*Status|
000244e0  20 44 65 6c 61 79 3e 2e  20 54 68 69 73 20 76 61  | Delay>. This va|
000244f0  72 69 61 62 6c 65 20 6d  61 79 20 61 6c 73 6f 20  |riable may also |
00024500  62 65 20 72 65 61 64 20  6f 72 20 73 65 74 20 62  |be read or set b|
00024510  79 20 3c 4f 53 5f 42 79  74 65 31 39 36 3e 2e 0a  |y <OS_Byte196>..|
00024520  44 41 54 41 dc 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00024530  31 32 20 20 57 72 69 74  65 20 6b 65 79 62 6f 61  |12  Write keyboa|
00024540  72 64 20 61 75 74 6f 20  72 65 70 65 61 74 20 72  |rd auto repeat r|
00024550  61 74 65 0a 3d 3e 09 52  30 20 3d 09 31 32 0a 09  |ate.=>.R0 =.12..|
00024560  52 31 20 3d 09 72 65 70  65 61 74 20 72 61 74 65  |R1 =.repeat rate|
00024570  20 69 6e 20 63 65 6e 74  69 73 65 63 6f 6e 64 73  | in centiseconds|
00024580  20 28 30 20 74 6f 20 73  65 74 20 72 65 70 65 61  | (0 to set repea|
00024590  74 20 64 65 6c 61 79 2f  72 61 74 65 20 74 6f 20  |t delay/rate to |
000245a0  64 65 66 61 75 6c 74 29  0a 0a 3c 3d 09 52 30 20  |default)..<=.R0 |
000245b0  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
000245c0  70 72 65 76 69 6f 75 73  20 72 65 70 65 61 74 20  |previous repeat |
000245d0  72 61 74 65 0a 09 52 32  20 63 6f 72 72 75 70 74  |rate..R2 corrupt|
000245e0  65 64 0a 0a 41 66 74 65  72 20 74 68 65 20 61 75  |ed..After the au|
000245f0  74 6f 2d 72 65 70 65 61  74 20 64 65 6c 61 79 20  |to-repeat delay |
00024600  73 70 65 63 69 66 69 65  64 20 62 79 20 3c 4f 53  |specified by <OS|
00024610  5f 42 79 74 65 30 31 31  3e 2c 20 65 61 63 68 20  |_Byte011>, each |
00024620  6b 65 79 20 77 69 6c 6c  20 72 65 70 65 61 74 20  |key will repeat |
00024630  75 6e 74 69 6c 20 72 65  6c 65 61 73 65 64 20 61  |until released a|
00024640  74 20 74 68 65 20 72 61  74 65 20 70 61 73 73 65  |t the rate passe|
00024650  64 20 74 6f 20 74 68 69  73 20 63 61 6c 6c 2e 20  |d to this call. |
00024660  54 68 69 73 20 65 6e 61  62 6c 65 73 20 79 6f 75  |This enables you|
00024670  20 74 6f 20 63 68 61 6e  67 65 20 74 68 65 20 69  | to change the i|
00024680  6e 69 74 69 61 6c 20 72  61 74 65 20 66 72 6f 6d  |nitial rate from|
00024690  20 74 68 65 20 64 65 66  61 75 6c 74 20 73 65 74  | the default set|
000246a0  20 62 79 20 3c 2a 43 6f  6e 66 69 67 75 72 65 20  | by <*Configure |
000246b0  52 65 70 65 61 74 3d 3e  2a 53 74 61 74 75 73 20  |Repeat=>*Status |
000246c0  52 65 70 65 61 74 3e 20  54 68 69 73 20 76 61 72  |Repeat> This var|
000246d0  69 61 62 6c 65 20 6d 61  79 20 61 6c 73 6f 20 62  |iable may also b|
000246e0  65 20 73 65 74 2f 72 65  61 64 20 62 79 20 3c 4f  |e set/read by <O|
000246f0  53 5f 42 79 74 65 31 39  37 3e 2e 0a 44 41 54 41  |S_Byte197>..DATA|
00024700  47 01 00 00 4f 53 5f 42  79 74 65 20 31 35 20 20  |G...OS_Byte 15  |
00024710  46 6c 75 73 68 20 62 75  66 66 65 72 0a 3d 3e 09  |Flush buffer.=>.|
00024720  52 30 20 3d 09 31 35 20  28 72 65 61 73 6f 6e 20  |R0 =.15 (reason |
00024730  63 6f 64 65 29 0a 09 52  31 20 3d 09 30 20 74 6f  |code)..R1 =.0 to|
00024740  20 66 6c 75 73 68 20 61  6c 6c 20 62 75 66 66 65  | flush all buffe|
00024750  72 73 0a 09 20 09 31 20  74 6f 20 66 6c 75 73 68  |rs.. .1 to flush|
00024760  20 74 68 65 20 63 75 72  72 65 6e 74 20 69 6e 70  | the current inp|
00024770  75 74 20 62 75 66 66 65  72 0a 0a 3c 3d 09 52 30  |ut buffer..<=.R0|
00024780  20 70 72 65 73 65 72 76  65 64 0a 09 52 31 2c 52  | preserved..R1,R|
00024790  32 20 63 6f 72 72 75 70  74 65 64 0a 0a 54 68 65  |2 corrupted..The|
000247a0  20 63 6f 6e 74 65 6e 74  73 20 6f 66 20 65 69 74  | contents of eit|
000247b0  68 65 72 20 61 6c 6c 20  62 75 66 66 65 72 73 20  |her all buffers |
000247c0  6f 72 20 6f 6e 6c 79 20  74 68 65 20 63 75 72 72  |or only the curr|
000247d0  65 6e 74 20 69 6e 70 75  74 20 62 75 66 66 65 72  |ent input buffer|
000247e0  20 61 72 65 20 64 69 73  63 61 72 64 65 64 2c 20  | are discarded, |
000247f0  64 65 70 65 6e 64 69 6e  67 20 6f 6e 20 52 31 2e  |depending on R1.|
00024800  20 49 6e 64 69 76 69 64  75 61 6c 20 62 75 66 66  | Individual buff|
00024810  65 72 73 20 6d 61 79 20  62 65 20 66 6c 75 73 68  |ers may be flush|
00024820  65 64 20 75 73 69 6e 67  20 3c 4f 53 5f 42 79 74  |ed using <OS_Byt|
00024830  65 20 32 31 3d 3e 6f 73  5f 62 79 74 65 30 32 31  |e 21=>os_byte021|
00024840  3e 2e 0a 00 44 41 54 41  e6 00 00 00 4f 53 5f 42  |>...DATA....OS_B|
00024850  79 74 65 20 31 39 20 20  57 61 69 74 20 66 6f 72  |yte 19  Wait for|
00024860  20 56 53 79 6e 63 0a 3d  3e 09 52 30 20 3d 09 31  | VSync.=>.R0 =.1|
00024870  39 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |9..<=.R0 preserv|
00024880  65 64 0a 09 52 31 2c 52  32 20 63 6f 72 72 75 70  |ed..R1,R2 corrup|
00024890  74 65 64 0a 0a 54 68 69  73 20 63 61 6c 6c 20 74  |ted..This call t|
000248a0  61 6b 65 73 20 74 68 65  20 63 6f 6e 74 72 6f 6c  |akes the control|
000248b0  20 6f 66 20 74 68 65 20  41 52 4d 20 75 6e 74 69  | of the ARM unti|
000248c0  6c 20 74 68 65 20 65 6c  65 63 74 72 6f 6e 20 62  |l the electron b|
000248d0  65 61 6d 20 6f 66 20 74  68 65 20 6d 6f 6e 69 74  |eam of the monit|
000248e0  6f 72 20 68 61 73 20 72  65 61 63 68 65 64 20 69  |or has reached i|
000248f0  74 73 20 6c 61 73 74 20  70 6f 73 69 74 69 6f 6e  |ts last position|
00024900  20 61 6e 64 20 6a 75 6d  70 73 20 74 6f 20 74 68  | and jumps to th|
00024910  65 20 74 6f 70 20 6c 65  66 74 20 6f 66 20 74 68  |e top left of th|
00024920  65 20 73 63 72 65 65 6e  2e 0a 00 00 44 41 54 41  |e screen....DATA|
00024930  4d 01 00 00 4f 53 5f 42  79 74 65 20 32 30 20 20  |M...OS_Byte 20  |
00024940  52 65 73 65 74 20 66 6f  6e 74 20 64 65 66 69 6e  |Reset font defin|
00024950  69 74 69 6f 6e 0a 3d 3e  09 52 30 20 3d 09 32 30  |ition.=>.R0 =.20|
00024960  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
00024970  64 0a 09 52 31 2c 52 32  20 63 6f 72 72 75 70 74  |d..R1,R2 corrupt|
00024980  65 64 0a 0a 54 68 69 73  20 63 61 6c 6c 20 69 73  |ed..This call is|
00024990  20 75 73 65 64 20 74 6f  20 72 65 73 65 74 20 74  | used to reset t|
000249a0  68 65 20 73 68 61 70 65  20 6f 66 20 74 68 65 20  |he shape of the |
000249b0  70 72 69 6e 74 61 62 6c  65 20 41 53 43 49 49 20  |printable ASCII |
000249c0  63 68 61 72 61 63 74 65  72 73 20 69 6e 20 74 68  |characters in th|
000249d0  65 20 72 61 6e 67 65 20  6f 66 20 33 32 2d 31 32  |e range of 32-12|
000249e0  37 2c 20 77 68 69 63 68  20 6d 61 79 20 62 65 20  |7, which may be |
000249f0  6d 6f 64 69 66 69 65 64  20 77 69 74 68 20 3c 56  |modified with <V|
00024a00  44 55 20 32 33 2c 33 32  2d 32 35 35 3d 3e 56 44  |DU 23,32-255=>VD|
00024a10  55 3a 32 33 2c 33 32 2b  3e 2e 20 54 6f 20 72 65  |U:23,32+>. To re|
00024a20  73 65 74 20 74 68 65 20  77 68 6f 6c 65 20 6f 72  |set the whole or|
00024a30  20 61 20 73 6d 61 6c 6c  65 72 20 67 72 6f 75 70  | a smaller group|
00024a40  20 6f 66 20 63 68 61 72  61 63 74 65 72 20 64 65  | of character de|
00024a50  66 69 6e 69 74 69 6f 6e  73 2c 20 75 73 65 20 3c  |finitions, use <|
00024a60  4f 53 5f 42 79 74 65 20  32 35 3d 3e 6f 73 5f 62  |OS_Byte 25=>os_b|
00024a70  79 74 65 30 32 35 3e 2e  0a 00 00 00 44 41 54 41  |yte025>.....DATA|
00024a80  94 00 00 00 4f 53 5f 42  79 74 65 20 32 31 20 20  |....OS_Byte 21  |
00024a90  46 6c 75 73 68 20 73 70  65 63 69 66 69 65 64 20  |Flush specified |
00024aa0  62 75 66 66 65 72 0a 3d  3e 09 52 30 20 3d 09 32  |buffer.=>.R0 =.2|
00024ab0  31 0a 09 52 31 20 3d 09  62 75 66 66 65 72 20 6e  |1..R1 =.buffer n|
00024ac0  75 6d 62 65 72 0a 0a 3c  3d 09 52 30 2c 52 31 20  |umber..<=.R0,R1 |
00024ad0  70 72 65 73 65 72 76 65  64 0a 09 52 32 20 63 6f  |preserved..R2 co|
00024ae0  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 63 61  |rrupted..This ca|
00024af0  6c 6c 20 66 6c 75 73 68  65 73 20 74 68 65 20 73  |ll flushes the s|
00024b00  70 65 63 69 66 69 65 64  20 62 75 66 66 65 72 2e  |pecified buffer.|
00024b10  44 41 54 41 c3 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00024b20  32 35 20 20 52 65 73 65  74 20 67 72 6f 75 70 73  |25  Reset groups|
00024b30  20 6f 66 20 66 6f 6e 74  20 64 65 66 69 6e 69 74  | of font definit|
00024b40  69 6f 6e 0a 3d 3e 09 52  30 20 3d 09 32 35 0a 09  |ion.=>.R0 =.25..|
00024b50  52 31 20 3d 09 3c 67 72  6f 75 70 20 74 6f 20 72  |R1 =.<group to r|
00024b60  65 73 74 6f 72 65 3d 3e  2e 67 72 6f 75 70 73 3e  |estore=>.groups>|
00024b70  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
00024b80  64 0a 09 52 31 2c 52 32  20 63 6f 72 72 75 70 74  |d..R1,R2 corrupt|
00024b90  65 64 0a 0a 54 68 69 73  20 63 61 6c 6c 20 72 65  |ed..This call re|
00024ba0  73 74 6f 72 65 73 20 74  68 65 20 63 68 61 72 61  |stores the chara|
00024bb0  63 74 65 72 73 20 65 76  65 6e 74 75 61 6c 6c 79  |cters eventually|
00024bc0  20 72 65 64 65 66 69 6e  65 64 20 62 79 20 74 68  | redefined by th|
00024bd0  65 20 3c 56 44 55 20 32  33 2c 33 32 2d 33 35 35  |e <VDU 23,32-355|
00024be0  3d 3e 56 44 55 3a 32 33  2c 33 32 2b 3e 20 63 6f  |=>VDU:23,32+> co|
00024bf0  6d 6d 61 6e 64 20 69 6e  20 74 68 65 20 72 61 6e  |mmand in the ran|
00024c00  67 65 20 6f 66 20 33 32  2d 32 35 35 2e 20 57 68  |ge of 32-255. Wh|
00024c10  69 63 68 20 63 68 61 72  61 63 74 65 72 73 20 61  |ich characters a|
00024c20  72 65 20 74 6f 20 62 65  20 72 65 73 65 74 20 69  |re to be reset i|
00024c30  73 20 67 69 76 65 6e 20  69 6e 20 52 31 2e 0a 23  |s given in R1..#|
00024c40  53 75 62 70 61 67 65 20  67 72 6f 75 70 73 0a 43  |Subpage groups.C|
00024c50  68 61 72 61 63 74 65 72  20 67 72 6f 75 70 73 0a  |haracter groups.|
00024c60  56 61 6c 75 65 09 52 61  6e 67 65 20 6f 66 20 6b  |Value.Range of k|
00024c70  65 79 73 20 74 6f 20 62  65 20 72 65 73 74 6f 72  |eys to be restor|
00024c80  65 64 0a 23 4c 69 6e 65  0a 30 09 33 32 2d 32 35  |ed.#Line.0.32-25|
00024c90  35 0a 31 09 33 32 2d 36  33 0a 32 09 36 34 2d 39  |5.1.32-63.2.64-9|
00024ca0  35 0a 33 09 39 36 2d 31  32 37 0a 34 09 31 32 38  |5.3.96-127.4.128|
00024cb0  2d 31 35 39 0a 35 09 31  36 30 2d 31 39 31 0a 36  |-159.5.160-191.6|
00024cc0  09 31 39 32 2d 32 32 33  0a 37 09 32 32 34 2d 32  |.192-223.7.224-2|
00024cd0  35 35 0a 00 44 41 54 41  47 02 00 00 4f 53 5f 42  |55..DATAG...OS_B|
00024ce0  79 74 65 20 31 30 36 20  20 53 65 6c 65 63 74 20  |yte 106  Select |
00024cf0  70 6f 69 6e 74 65 72 2f  61 63 74 69 76 61 74 65  |pointer/activate|
00024d00  20 6d 6f 75 73 65 0a 3d  3e 09 52 30 20 3d 09 31  | mouse.=>.R0 =.1|
00024d10  30 36 0a 09 52 31 20 3d  09 3c 70 6f 69 6e 74 65  |06..R1 =.<pointe|
00024d20  72 20 73 68 61 70 65 20  61 6e 64 20 6c 69 6e 6b  |r shape and link|
00024d30  61 67 65 20 66 6c 61 67  3d 3e 66 6c 61 67 73 3e  |age flag=>flags>|
00024d40  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
00024d50  64 0a 09 52 31 20 3d 09  73 68 61 70 65 20 61 6e  |d..R1 =.shape an|
00024d60  64 20 6c 69 6e 6b 61 67  65 20 66 6c 61 67 20 62  |d linkage flag b|
00024d70  65 66 6f 72 65 20 6f 76  65 72 77 72 69 74 74 65  |efore overwritte|
00024d80  6e 0a 09 52 32 20 63 6f  72 72 75 70 74 65 64 0a  |n..R2 corrupted.|
00024d90  0a 59 6f 75 20 63 61 6e  20 64 65 66 69 6e 65 20  |.You can define |
00024da0  66 6f 75 72 20 27 70 6f  69 6e 74 65 72 20 62 75  |four 'pointer bu|
00024db0  66 66 65 72 73 27 20 75  73 69 6e 67 20 4f 53 5f  |ffers' using OS_|
00024dc0  57 6f 72 64 20 32 31 2c  20 65 61 63 68 20 68 6f  |Word 21, each ho|
00024dd0  6c 64 69 6e 67 20 61 20  64 69 66 66 65 72 65 6e  |lding a differen|
00024de0  74 20 73 68 61 70 65 20  64 65 66 69 6e 69 74 69  |t shape definiti|
00024df0  6f 6e 20 66 6f 72 20 74  68 65 20 6d 6f 75 73 65  |on for the mouse|
00024e00  20 70 6f 69 6e 74 65 72  2e 20 54 68 69 73 20 63  | pointer. This c|
00024e10  61 6c 6c 20 61 6c 6c 6f  77 73 20 79 6f 75 20 74  |all allows you t|
00024e20  6f 20 73 65 6c 65 63 74  20 6f 6e 65 20 6f 66 20  |o select one of |
00024e30  74 68 65 73 65 20 64 65  66 69 6e 69 74 69 6f 6e  |these definition|
00024e40  73 20 66 6f 72 20 66 75  74 75 72 65 20 75 73 65  |s for future use|
00024e50  2c 20 6f 72 20 74 6f 20  74 75 72 6e 20 6f 66 66  |, or to turn off|
00024e60  20 74 68 65 20 70 6f 69  6e 74 65 72 20 64 65 70  | the pointer dep|
00024e70  65 6e 64 69 6e 67 20 6f  6e 20 74 68 65 20 62 6f  |ending on the bo|
00024e80  74 74 6f 6d 20 73 65 76  65 6e 20 62 69 74 73 20  |ttom seven bits |
00024e90  6f 66 20 52 31 3a 0a 23  53 75 62 70 61 67 65 20  |of R1:.#Subpage |
00024ea0  66 6c 61 67 73 0a 50 6f  69 6e 74 65 72 20 66 6c  |flags.Pointer fl|
00024eb0  61 67 73 0a 42 69 74 09  4d 65 61 6e 69 6e 67 0a  |ags.Bit.Meaning.|
00024ec0  23 4c 69 6e 65 0a 30 2d  32 09 53 65 6c 65 63 74  |#Line.0-2.Select|
00024ed0  20 70 6f 69 6e 74 65 72  20 6e 75 6d 62 65 72 20  | pointer number |
00024ee0  28 31 20 74 6f 20 34 2c  20 6f 72 20 30 20 74 6f  |(1 to 4, or 0 to|
00024ef0  20 74 75 72 6e 20 6f 66  66 29 0a 37 09 4c 69 6e  | turn off).7.Lin|
00024f00  6b 20 70 6f 69 6e 74 65  72 20 74 6f 20 6d 6f 75  |k pointer to mou|
00024f10  73 65 20 69 66 20 73 65  74 2e 0a 00 44 41 54 41  |se if set...DATA|
00024f20  f5 01 00 00 4f 53 5f 42  79 74 65 20 31 31 32 20  |....OS_Byte 112 |
00024f30  20 57 72 69 74 65 20 56  44 55 20 64 72 69 76 65  | Write VDU drive|
00024f40  72 20 73 63 72 65 65 6e  20 62 61 6e 6b 0a 3d 3e  |r screen bank.=>|
00024f50  09 52 30 20 3d 09 31 31  32 0a 09 52 31 20 3d 09  |.R0 =.112..R1 =.|
00024f60  62 61 6e 6b 20 6e 75 6d  62 65 72 0a 0a 3c 3d 09  |bank number..<=.|
00024f70  52 30 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  |R0 preserved..R1|
00024f80  20 3d 09 70 72 65 76 69  6f 75 73 20 62 61 6e 6b  | =.previous bank|
00024f90  20 6e 75 6d 62 65 72 0a  09 52 32 20 63 6f 72 72  | number..R2 corr|
00024fa0  75 70 74 65 64 0a 0a 54  68 69 73 20 63 61 6c 6c  |upted..This call|
00024fb0  20 73 65 6c 65 63 74 73  20 74 68 65 20 62 61 6e  | selects the ban|
00024fc0  6b 20 6f 66 20 73 63 72  65 65 6e 20 6d 65 6d 6f  |k of screen memo|
00024fd0  72 79 20 77 68 69 63 68  20 69 73 20 74 6f 20 62  |ry which is to b|
00024fe0  65 20 75 73 65 64 20 62  79 20 74 68 65 20 56 44  |e used by the VD|
00024ff0  55 20 64 72 69 76 65 72  73 20 61 63 63 6f 72 64  |U drivers accord|
00025000  69 6e 67 20 74 6f 20 52  31 2c 20 77 68 65 72 65  |ing to R1, where|
00025010  20 30 20 6d 65 61 6e 73  20 74 68 65 20 64 65 66  | 0 means the def|
00025020  61 75 6c 74 20 66 6f 72  20 74 68 65 20 63 75 72  |ault for the cur|
00025030  72 65 6e 74 20 6d 6f 64  65 20 28 31 20 6f 72 20  |rent mode (1 or |
00025040  32 29 2e 20 41 6e 79 20  6f 74 68 65 72 20 76 61  |2). Any other va|
00025050  6c 75 65 20 6d 65 61 6e  73 20 74 6f 20 73 65 74  |lue means to set|
00025060  20 74 68 65 20 73 63 72  65 65 6e 62 61 6e 6b 20  | the screenbank |
00025070  77 68 69 63 68 20 73 74  61 72 74 73 20 61 74 20  |which starts at |
00025080  53 63 72 65 65 6e 73 74  61 72 74 2b 28 52 31 2a  |Screenstart+(R1*|
00025090  4d 6f 64 65 73 69 7a 65  29 2e 20 54 68 65 20 6d  |Modesize). The m|
000250a0  61 78 69 6d 75 6d 20 62  61 6e 6b 20 6e 75 6d 62  |aximum bank numb|
000250b0  65 72 20 69 73 20 54 6f  74 61 6c 53 63 72 65 65  |er is TotalScree|
000250c0  6e 73 69 7a 65 2f 4d 6f  64 65 53 69 7a 65 2e 20  |nsize/ModeSize. |
000250d0  54 68 65 20 64 65 66 61  75 6c 74 20 62 61 6e 6b  |The default bank|
000250e0  20 69 73 20 66 6f 72 20  61 20 6e 6f 6e 2d 73 68  | is for a non-sh|
000250f0  61 64 6f 77 20 6d 6f 64  65 20 31 2c 20 66 6f 72  |adow mode 1, for|
00025100  20 61 20 73 68 61 64 6f  77 20 6d 6f 64 65 20 32  | a shadow mode 2|
00025110  2e 00 00 00 44 41 54 41  06 01 00 00 4f 53 5f 42  |....DATA....OS_B|
00025120  79 74 65 20 31 31 33 20  20 57 72 69 74 65 20 64  |yte 113  Write d|
00025130  69 73 70 6c 61 79 20 68  61 72 64 77 61 72 65 20  |isplay hardware |
00025140  73 63 72 65 65 6e 20 62  61 6e 6b 0a 3d 3e 09 52  |screen bank.=>.R|
00025150  30 20 3d 09 31 31 33 0a  09 52 31 20 3d 09 62 61  |0 =.113..R1 =.ba|
00025160  6e 6b 20 6e 75 6d 62 65  72 2c 20 6f 72 20 30 20  |nk number, or 0 |
00025170  66 6f 72 20 64 65 66 61  75 6c 74 0a 0a 3c 3d 09  |for default..<=.|
00025180  52 30 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  |R0 preserved..R1|
00025190  20 3d 09 76 61 6c 75 65  20 62 65 66 6f 72 65 20  | =.value before |
000251a0  62 65 69 6e 67 20 6f 76  65 72 77 72 69 74 74 65  |being overwritte|
000251b0  6e 0a 09 52 32 20 63 6f  72 72 75 70 74 65 64 0a  |n..R2 corrupted.|
000251c0  0a 54 68 69 73 20 63 61  6c 6c 20 73 65 6c 65 63  |.This call selec|
000251d0  74 73 20 74 68 65 20 62  61 6e 6b 20 6f 66 20 73  |ts the bank of s|
000251e0  63 72 65 65 6e 20 6d 65  6d 6f 72 79 20 77 68 69  |creen memory whi|
000251f0  63 68 20 69 73 20 74 6f  20 62 65 20 75 73 65 64  |ch is to be used|
00025200  20 62 79 20 74 68 65 20  64 69 73 70 6c 61 79 20  | by the display |
00025210  68 61 72 64 77 61 72 65  2e 0a 00 00 44 41 54 41  |hardware....DATA|
00025220  df 01 00 00 4f 53 5f 42  79 74 65 20 31 31 37 20  |....OS_Byte 117 |
00025230  20 52 65 61 64 20 56 44  55 20 73 74 61 74 75 73  | Read VDU status|
00025240  0a 3d 3e 09 52 30 20 3d  09 31 31 37 0a 0a 3c 3d  |.=>.R0 =.117..<=|
00025250  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
00025260  31 20 3d 09 3c 73 74 61  74 75 73 20 66 6c 61 67  |1 =.<status flag|
00025270  73 3d 3e 2e 66 6c 61 67  73 3e 0a 0a 54 68 69 73  |s=>.flags>..This|
00025280  20 63 61 6c 6c 20 72 65  74 75 72 6e 73 20 74 68  | call returns th|
00025290  65 20 63 6f 6e 74 65 6e  74 20 6f 66 20 74 68 65  |e content of the|
000252a0  20 56 44 55 20 73 74 61  74 75 73 20 62 79 74 65  | VDU status byte|
000252b0  2e 20 54 68 69 73 20 62  79 74 65 20 67 69 76 65  |. This byte give|
000252c0  73 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 6f 6e  |s information on|
000252d0  20 74 68 65 20 77 61 79  20 69 6e 20 77 68 69 63  | the way in whic|
000252e0  68 20 63 68 61 72 61 63  74 65 72 73 20 61 72 65  |h characters are|
000252f0  20 6f 75 74 70 75 74 2e  0a 23 53 75 62 70 61 67  | output..#Subpag|
00025300  65 20 66 6c 61 67 73 0a  42 69 74 09 53 74 61 74  |e flags.Bit.Stat|
00025310  75 73 20 77 68 65 6e 20  73 65 74 0a 23 4c 69 6e  |us when set.#Lin|
00025320  65 0a 30 09 50 72 69 6e  74 20 6f 75 74 70 75 74  |e.0.Print output|
00025330  20 65 6e 61 62 6c 65 64  20 62 79 20 56 44 55 20  | enabled by VDU |
00025340  32 0a 31 09 55 6e 75 73  65 64 0a 32 09 50 61 67  |2.1.Unused.2.Pag|
00025350  65 64 20 73 63 72 6f 6c  6c 69 6e 67 20 73 65 6c  |ed scrolling sel|
00025360  65 63 74 65 64 20 62 79  20 56 44 55 20 31 34 0a  |ected by VDU 14.|
00025370  33 09 54 65 78 74 20 77  69 6e 64 6f 77 20 69 6e  |3.Text window in|
00025380  20 66 6f 72 63 65 20 69  65 20 73 6f 66 74 77 61  | force ie softwa|
00025390  72 65 20 73 63 72 6f 6c  6c 69 6e 67 0a 34 09 49  |re scrolling.4.I|
000253a0  6e 20 61 20 73 68 61 64  6f 77 20 6d 6f 64 65 0a  |n a shadow mode.|
000253b0  35 09 49 6e 20 56 44 55  20 35 20 6d 6f 64 65 0a  |5.In VDU 5 mode.|
000253c0  36 09 43 75 72 73 6f 72  20 65 64 69 74 69 6e 67  |6.Cursor editing|
000253d0  20 69 6e 20 70 72 6f 67  72 65 73 73 0a 37 09 53  | in progress.7.S|
000253e0  63 72 65 65 6e 20 64 69  73 61 62 6c 65 64 20 77  |creen disabled w|
000253f0  69 74 68 20 56 44 55 20  32 31 0a 00 44 41 54 41  |ith VDU 21..DATA|
00025400  33 02 00 00 4f 53 5f 42  79 74 65 20 31 31 38 20  |3...OS_Byte 118 |
00025410  20 52 65 66 6c 65 63 74  20 6b 65 79 62 6f 61 72  | Reflect keyboar|
00025420  64 20 73 74 61 74 75 73  20 69 6e 20 4c 45 44 73  |d status in LEDs|
00025430  0a 3d 3e 09 52 30 20 3d  09 31 31 38 0a 0a 3c 3d  |.=>.R0 =.118..<=|
00025440  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
00025450  31 2c 52 32 20 63 6f 72  72 75 70 74 65 64 0a 0a  |1,R2 corrupted..|
00025460  54 68 65 20 73 65 74 74  69 6e 67 73 20 6f 66 20  |The settings of |
00025470  43 61 70 73 20 4c 6f 63  6b 2c 20 53 63 72 6f 6c  |Caps Lock, Scrol|
00025480  6c 20 4c 6f 63 6b 20 61  6e 64 20 4e 75 6d 20 4c  |l Lock and Num L|
00025490  6f 63 6b 20 61 72 65 20  68 65 6c 64 20 69 6e 20  |ock are held in |
000254a0  61 20 6c 6f 63 61 74 69  6f 6e 20 72 65 66 65 72  |a location refer|
000254b0  72 65 64 20 74 6f 20 61  73 20 74 68 65 20 6b 65  |red to as the ke|
000254c0  79 62 6f 61 72 64 20 73  74 61 74 75 73 20 62 79  |yboard status by|
000254d0  74 65 2e 20 53 65 65 20  3c 4f 53 5f 42 79 74 65  |te. See <OS_Byte|
000254e0  20 32 30 32 3d 3e 4f 53  5f 42 79 74 65 32 30 32  | 202=>OS_Byte202|
000254f0  3e 20 66 6f 72 20 64 65  74 61 69 6c 73 20 6f 66  |> for details of|
00025500  20 74 68 69 73 2e 20 55  6e 64 65 72 20 6e 6f 72  | this. Under nor|
00025510  6d 61 6c 20 63 69 72 63  75 6d 73 74 61 6e 63 65  |mal circumstance|
00025520  73 20 74 68 65 79 20 61  72 65 20 73 68 6f 77 6e  |s they are shown|
00025530  20 62 79 20 74 68 65 20  6b 65 79 62 6f 61 72 64  | by the keyboard|
00025540  20 4c 45 44 73 20 77 68  69 63 68 20 61 72 65 20  | LEDs which are |
00025550  73 65 74 20 69 6e 74 6f  20 74 68 65 20 6b 65 79  |set into the key|
00025560  63 61 70 73 2e 20 48 6f  77 65 76 65 72 2c 20 69  |caps. However, i|
00025570  66 20 74 68 65 20 6b 65  79 62 6f 61 72 64 20 73  |f the keyboard s|
00025580  74 61 74 75 73 20 62 79  74 65 20 69 73 20 77 72  |tatus byte is wr|
00025590  69 74 74 65 6e 20 74 6f  20 75 73 69 6e 67 20 4f  |itten to using O|
000255a0  53 5f 42 79 74 65 20 32  30 32 2c 20 74 68 65 6e  |S_Byte 202, then|
000255b0  20 74 68 65 20 4c 45 44  73 20 77 69 6c 6c 20 6e  | the LEDs will n|
000255c0  6f 74 20 75 70 64 61 74  65 2e 20 54 68 69 73 20  |ot update. This |
000255d0  63 61 6c 6c 20 65 6e 73  75 72 65 73 2c 20 74 68  |call ensures, th|
000255e0  61 74 20 74 68 65 20 63  75 72 72 65 6e 74 20 63  |at the current c|
000255f0  6f 6e 74 65 6e 74 73 20  6f 66 20 74 68 65 20 6b  |ontents of the k|
00025600  65 79 62 6f 61 72 64 20  73 74 61 74 75 73 20 62  |eyboard status b|
00025610  79 74 65 20 61 72 65 20  72 65 66 6c 65 63 74 65  |yte are reflecte|
00025620  64 20 69 6e 20 74 68 65  20 4c 45 44 73 2e 0a 00  |d in the LEDs...|
00025630  44 41 54 41 7b 01 00 00  4f 53 5f 42 79 74 65 20  |DATA{...OS_Byte |
00025640  31 33 34 20 20 52 65 61  64 20 74 65 78 74 20 63  |134  Read text c|
00025650  75 72 73 6f 72 20 70 6f  73 69 74 69 6f 6e 0a 3d  |ursor position.=|
00025660  3e 09 52 30 20 3d 09 31  33 34 0a 0a 3c 3d 09 52  |>.R0 =.134..<=.R|
00025670  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
00025680  3d 09 70 6f 73 69 74 69  6f 6e 20 69 6e 20 78 20  |=.position in x |
00025690  64 69 72 65 63 74 69 6f  6e 0a 09 52 32 20 3d 09  |direction..R2 =.|
000256a0  70 6f 73 69 74 69 6f 6e  20 69 6e 20 79 20 64 69  |position in y di|
000256b0  72 65 63 74 69 6f 6e 0a  0a 54 68 69 73 20 63 61  |rection..This ca|
000256c0  6c 6c 20 72 65 74 75 72  6e 73 20 74 68 65 20 74  |ll returns the t|
000256d0  65 78 74 20 63 75 72 73  6f 72 20 70 6f 73 69 74  |ext cursor posit|
000256e0  69 6f 6e 20 75 6e 6c 65  73 73 20 63 75 72 73 6f  |ion unless curso|
000256f0  72 20 65 64 69 74 69 6e  67 20 69 73 20 69 6e 20  |r editing is in |
00025700  70 72 6f 67 72 65 73 73  2c 20 69 6e 20 77 68 69  |progress, in whi|
00025710  63 68 20 63 61 73 65 20  74 68 65 20 70 6f 73 69  |ch case the posi|
00025720  74 69 6f 6e 20 72 65 74  75 72 6e 65 64 20 69 73  |tion returned is|
00025730  20 74 68 61 74 20 6f 66  20 74 68 65 20 69 6e 70  | that of the inp|
00025740  75 74 20 63 75 72 73 6f  72 2e 20 3c 4f 53 5f 42  |ut cursor. <OS_B|
00025750  79 74 65 20 31 36 35 3d  3e 4f 53 5f 42 79 74 65  |yte 165=>OS_Byte|
00025760  31 36 35 3e 20 72 65 61  64 73 20 74 68 65 20 70  |165> reads the p|
00025770  6f 73 69 74 69 6f 6e 20  6f 66 20 74 68 65 20 63  |osition of the c|
00025780  75 72 73 6f 72 20 69 72  72 65 73 70 65 63 74 69  |ursor irrespecti|
00025790  76 65 20 6f 66 20 63 75  72 73 6f 72 20 65 64 69  |ve of cursor edi|
000257a0  74 69 6e 67 20 6d 6f 64  65 2e 0a 00 44 41 54 41  |ting mode...DATA|
000257b0  14 02 00 00 4f 53 5f 42  79 74 65 20 31 33 35 20  |....OS_Byte 135 |
000257c0  20 52 65 61 64 20 63 68  61 72 20 61 74 20 63 75  | Read char at cu|
000257d0  72 73 6f 72 20 70 6f 73  69 74 69 6f 6e 20 61 6e  |rsor position an|
000257e0  64 20 73 63 72 65 65 6e  20 6d 6f 64 65 0a 3d 3e  |d screen mode.=>|
000257f0  09 52 30 20 3d 09 31 33  35 0a 0a 3c 3d 09 52 30  |.R0 =.135..<=.R0|
00025800  20 70 72 65 73 65 72 76  65 64 0a 09 52 31 20 3d  | preserved..R1 =|
00025810  09 41 53 43 49 49 20 76  61 6c 75 65 20 6f 66 20  |.ASCII value of |
00025820  63 68 61 72 61 63 74 65  72 20 28 30 20 69 66 20  |character (0 if |
00025830  75 6e 72 65 61 64 61 62  6c 65 29 0a 09 52 32 20  |unreadable)..R2 |
00025840  3d 09 73 63 72 65 65 6e  20 6d 6f 64 65 0a 0a 54  |=.screen mode..T|
00025850  68 69 73 20 63 61 6c 6c  20 72 65 74 75 72 6e 73  |his call returns|
00025860  20 74 68 65 20 73 63 72  65 65 6e 20 6d 6f 64 65  | the screen mode|
00025870  20 61 6e 64 20 74 68 65  20 41 53 43 49 49 20 63  | and the ASCII c|
00025880  6f 64 65 20 6f 66 20 74  68 65 20 63 68 61 72 61  |ode of the chara|
00025890  63 74 65 72 20 61 74 20  74 68 65 20 74 65 78 74  |cter at the text|
000258a0  20 63 75 72 73 6f 72 20  70 6f 73 69 74 69 6f 6e  | cursor position|
000258b0  2e 20 49 66 20 63 75 72  73 6f 72 20 65 64 69 74  |. If cursor edit|
000258c0  69 6e 67 20 69 73 20 69  6e 20 70 72 6f 67 72 65  |ing is in progre|
000258d0  73 73 2c 20 69 74 20 72  65 74 75 72 6e 73 20 74  |ss, it returns t|
000258e0  68 65 20 63 68 61 72 61  63 74 65 72 20 63 6f 64  |he character cod|
000258f0  65 20 72 65 74 75 72 6e  65 64 20 62 79 20 74 68  |e returned by th|
00025900  65 20 63 68 61 72 61 63  74 65 72 20 61 74 20 74  |e character at t|
00025910  68 65 20 69 6e 70 75 74  20 63 75 72 73 6f 72 73  |he input cursors|
00025920  20 70 6f 73 69 74 69 6f  6e 20 28 69 65 20 74 68  | position (ie th|
00025930  65 20 63 68 61 72 61 63  74 65 72 20 77 6f 75 6c  |e character woul|
00025940  64 20 62 65 20 63 6f 70  69 65 64 20 61 73 20 69  |d be copied as i|
00025950  6e 70 75 74 20 74 68 65  20 6e 65 78 74 20 74 69  |nput the next ti|
00025960  6d 65 20 63 6f 70 79 20  69 73 20 70 72 65 73 73  |me copy is press|
00025970  65 64 2e 29 20 4e 6f 74  65 20 74 68 61 74 20 74  |ed.) Note that t|
00025980  68 65 20 73 63 72 65 65  6e 20 6d 6f 64 65 20 6e  |he screen mode n|
00025990  65 76 65 72 20 68 61 73  20 62 69 74 20 37 20 73  |ever has bit 7 s|
000259a0  65 74 2c 20 65 76 65 6e  20 69 66 20 69 74 27 73  |et, even if it's|
000259b0  20 61 20 73 68 61 64 6f  77 20 6d 6f 64 65 2e 0a  | a shadow mode..|
000259c0  44 41 54 41 7c 01 00 00  4f 53 5f 42 79 74 65 20  |DATA|...OS_Byte |
000259d0  31 34 34 20 20 53 65 74  20 76 65 72 74 69 63 61  |144  Set vertica|
000259e0  6c 20 73 68 69 66 74 20  61 6e 64 20 69 6e 74 65  |l shift and inte|
000259f0  72 6c 61 63 65 0a 3d 3e  09 52 30 20 3d 09 31 34  |rlace.=>.R0 =.14|
00025a00  34 0a 09 52 31 20 3d 09  76 65 72 74 69 63 61 6c  |4..R1 =.vertical|
00025a10  20 73 63 72 65 65 6e 20  73 68 69 66 74 20 28 61  | screen shift (a|
00025a20  73 20 61 20 73 69 67 6e  65 64 20 38 20 62 69 74  |s a signed 8 bit|
00025a30  20 6e 75 6d 62 65 72 29  0a 09 52 32 20 3d 09 69  | number)..R2 =.i|
00025a40  6e 74 65 72 6c 61 63 65  20 66 6c 61 67 2c 20 30  |nterlace flag, 0|
00025a50  20 3d 20 6f 6e 2c 20 31  3d 6f 66 66 0a 0a 3c 3d  | = on, 1=off..<=|
00025a60  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
00025a70  31 20 3d 09 70 72 65 76  69 6f 75 73 20 76 65 72  |1 =.previous ver|
00025a80  74 69 63 61 6c 20 73 63  72 65 65 6e 20 73 68 69  |tical screen shi|
00025a90  66 74 0a 09 52 32 20 3d  09 70 72 65 76 69 6f 75  |ft..R2 =.previou|
00025aa0  73 20 69 6e 74 65 72 6c  61 63 65 20 66 6c 61 67  |s interlace flag|
00025ab0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 73 70 65 63  |..This call spec|
00025ac0  69 66 69 65 73 20 74 68  65 20 76 65 72 74 69 63  |ifies the vertic|
00025ad0  61 6c 20 73 63 72 65 65  6e 20 61 6c 69 67 6e 6d  |al screen alignm|
00025ae0  65 6e 74 20 61 6e 64 20  69 6e 74 65 72 6c 61 63  |ent and interlac|
00025af0  65 20 6f 70 74 69 6f 6e  73 20 61 66 74 65 72 20  |e options after |
00025b00  74 68 65 20 6e 65 78 74  20 6d 6f 64 65 20 63 68  |the next mode ch|
00025b10  61 6e 67 65 2e 20 54 68  69 73 20 69 73 20 65 71  |ange. This is eq|
00025b20  75 69 76 61 6c 65 6e 74  20 74 6f 20 3c 2a 54 56  |uivalent to <*TV|
00025b30  3d 3e 2a 48 65 6c 70 20  54 56 3e 2e 44 41 54 41  |=>*Help TV>.DATA|
00025b40  eb 00 00 00 4f 53 5f 42  79 74 65 20 31 36 35 20  |....OS_Byte 165 |
00025b50  20 52 65 61 64 20 6f 75  74 70 75 74 20 63 75 72  | Read output cur|
00025b60  73 6f 72 20 70 6f 73 69  74 69 6f 6e 0a 3d 3e 09  |sor position.=>.|
00025b70  52 30 20 3d 09 31 36 35  0a 0a 3c 3d 09 52 30 20  |R0 =.165..<=.R0 |
00025b80  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
00025b90  70 6f 73 69 74 69 6f 6e  20 69 6e 20 78 20 64 69  |position in x di|
00025ba0  72 65 63 74 69 6f 6e 0a  09 52 32 20 3d 09 70 6f  |rection..R2 =.po|
00025bb0  73 69 74 69 6f 6e 20 69  6e 20 79 20 64 69 72 65  |sition in y dire|
00025bc0  63 74 69 6f 6e 0a 0a 54  68 69 73 20 63 61 6c 6c  |ction..This call|
00025bd0  20 72 65 74 75 72 6e 73  20 74 68 65 20 70 6f 73  | returns the pos|
00025be0  69 74 69 6f 6e 20 6f 66  20 74 68 65 20 6f 75 74  |ition of the out|
00025bf0  70 75 74 20 63 75 72 73  6f 72 2c 20 65 76 65 6e  |put cursor, even|
00025c00  20 77 68 69 6c 73 74 20  63 75 72 73 6f 72 20 65  | whilst cursor e|
00025c10  64 69 74 69 6e 67 20 69  73 20 69 6e 20 70 72 6f  |diting is in pro|
00025c20  67 72 65 73 73 2e 0a 00  44 41 54 41 a6 01 00 00  |gress...DATA....|
00025c30  4f 53 5f 42 79 74 65 20  31 37 37 20 20 52 65 61  |OS_Byte 177  Rea|
00025c40  64 20 69 6e 70 75 74 20  73 6f 75 72 63 65 0a 3d  |d input source.=|
00025c50  3e 09 52 30 20 3d 09 31  37 37 0a 09 52 31 20 3d  |>.R0 =.177..R1 =|
00025c60  09 30 0a 09 52 32 20 3d  09 32 35 35 0a 0a 3c 3d  |.0..R2 =.255..<=|
00025c70  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
00025c80  31 20 3d 09 3c 76 61 6c  75 65 20 6f 66 20 73 74  |1 =.<value of st|
00025c90  72 65 61 6d 20 73 65 6c  65 63 74 69 6f 6e 3d 3e  |ream selection=>|
00025ca0  2e 73 74 72 65 61 6d 3e  0a 09 52 32 20 63 6f 72  |.stream>..R2 cor|
00025cb0  72 75 70 74 65 64 0a 0a  54 68 69 73 20 72 65 74  |rupted..This ret|
00025cc0  75 72 6e 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |urns the number |
00025cd0  6f 66 20 74 68 65 20 62  75 66 66 65 72 20 66 72  |of the buffer fr|
00025ce0  6f 6d 20 77 68 69 63 68  20 63 68 61 72 61 63 74  |om which charact|
00025cf0  65 72 20 69 6e 70 75 74  20 67 65 74 73 20 63 68  |er input gets ch|
00025d00  61 72 61 63 74 65 72 73  2e 20 59 6f 75 20 4d 55  |aracters. You MU|
00025d10  53 54 20 4e 4f 54 20 75  73 65 20 61 6e 79 20 6e  |ST NOT use any n|
00025d20  75 6d 62 65 72 73 20 74  68 61 6e 20 30 20 61 6e  |umbers than 0 an|
00025d30  64 20 32 35 35 20 66 6f  72 20 52 31 20 61 6e 64  |d 255 for R1 and|
00025d40  20 52 32 2c 20 74 6f 20  63 68 61 6e 67 65 20 74  | R2, to change t|
00025d50  68 69 73 20 76 61 72 69  61 62 6c 65 20 62 65 74  |his variable bet|
00025d60  74 65 72 20 75 73 65 20  3c 4f 53 5f 42 79 74 65  |ter use <OS_Byte|
00025d70  20 32 2c 3d 3e 4f 53 5f  42 79 74 65 30 30 32 3e  | 2,=>OS_Byte002>|
00025d80  2e 0a 23 53 75 62 70 61  67 65 20 73 74 72 65 61  |..#Subpage strea|
00025d90  6d 0a 56 61 6c 75 65 09  4d 65 61 6e 69 6e 67 0a  |m.Value.Meaning.|
00025da0  23 4c 69 6e 65 0a 30 09  4b 65 79 62 6f 61 72 64  |#Line.0.Keyboard|
00025db0  20 62 75 66 66 65 72 0a  31 09 53 65 72 69 61 6c  | buffer.1.Serial|
00025dc0  20 69 6e 70 75 74 20 62  75 66 66 65 72 0a 00 00  | input buffer...|
00025dd0  44 41 54 41 10 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00025de0  31 39 36 20 20 52 65 61  64 2f 57 72 69 74 65 20  |196  Read/Write |
00025df0  6b 65 79 62 6f 61 72 64  20 61 75 74 6f 20 72 65  |keyboard auto re|
00025e00  70 65 61 74 20 64 65 6c  61 79 0a 3d 3e 09 52 30  |peat delay.=>.R0|
00025e10  20 3d 09 31 39 36 0a 09  52 31 20 3d 09 45 4f 52  | =.196..R1 =.EOR|
00025e20  20 76 61 6c 75 65 0a 09  52 32 20 3d 09 41 4e 44  | value..R2 =.AND|
00025e30  20 76 61 6c 75 65 0a 0a  3c 3d 09 52 30 20 70 72  | value..<=.R0 pr|
00025e40  65 73 65 72 76 65 64 0a  09 52 31 20 3d 09 76 61  |eserved..R1 =.va|
00025e50  6c 75 65 20 62 65 66 6f  72 65 20 62 65 69 6e 67  |lue before being|
00025e60  20 6f 76 65 72 77 72 69  74 74 65 6e 0a 09 52 32  | overwritten..R2|
00025e70  20 3d 09 6b 65 79 62 6f  61 72 64 20 61 75 74 6f  | =.keyboard auto|
00025e80  20 72 65 70 65 61 74 20  72 61 74 65 20 28 73 65  | repeat rate (se|
00025e90  65 20 3c 4f 53 5f 42 79  74 65 20 31 39 37 3d 3e  |e <OS_Byte 197=>|
00025ea0  4f 53 5f 42 79 74 65 31  39 37 3e 29 0a 0a 53 65  |OS_Byte197>)..Se|
00025eb0  65 20 3c 4f 53 5f 42 79  74 65 20 31 31 3d 3e 4f  |e <OS_Byte 11=>O|
00025ec0  53 5f 42 79 74 65 30 31  31 3e 20 66 6f 72 20 6d  |S_Byte011> for m|
00025ed0  6f 72 65 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 2e  |ore information.|
00025ee0  44 41 54 41 4d 01 00 00  4f 53 5f 42 79 74 65 20  |DATAM...OS_Byte |
00025ef0  31 39 37 20 20 52 65 61  64 2f 57 72 69 74 65 20  |197  Read/Write |
00025f00  6b 65 79 62 6f 61 72 64  20 61 75 74 6f 20 72 65  |keyboard auto re|
00025f10  70 65 61 74 20 72 61 74  65 0a 3d 3e 09 52 30 20  |peat rate.=>.R0 |
00025f20  3d 09 31 39 37 0a 09 52  31 20 3d 09 45 4f 52 20  |=.197..R1 =.EOR |
00025f30  76 61 6c 75 65 0a 09 52  32 20 3d 09 41 4e 44 20  |value..R2 =.AND |
00025f40  76 61 6c 75 65 0a 0a 3c  3d 09 52 30 20 70 72 65  |value..<=.R0 pre|
00025f50  73 65 72 76 65 64 0a 09  52 31 20 3d 09 76 61 6c  |served..R1 =.val|
00025f60  75 65 20 62 65 66 6f 72  65 20 62 65 69 6e 67 20  |ue before being |
00025f70  6f 76 65 72 77 72 69 74  74 65 6e 0a 09 52 32 20  |overwritten..R2 |
00025f80  3d 09 63 6f 72 72 75 70  74 65 64 0a 0a 4e 6f 74  |=.corrupted..Not|
00025f90  65 2c 20 74 68 61 74 20  2a 46 58 20 31 32 2c 30  |e, that *FX 12,0|
00025fa0  20 72 65 73 65 74 73 20  74 68 65 20 61 75 74 6f  | resets the auto|
00025fb0  20 72 65 70 65 61 74 20  72 61 74 65 2f 64 65 6c  | repeat rate/del|
00025fc0  61 79 20 74 6f 20 64 65  66 61 75 6c 74 20 2a 46  |ay to default *F|
00025fd0  58 20 31 39 37 2c 30 20  73 65 74 73 20 74 68 65  |X 197,0 sets the|
00025fe0  20 61 75 74 6f 20 72 65  70 65 61 74 20 72 61 74  | auto repeat rat|
00025ff0  65 20 74 6f 20 7a 65 72  6f 2e 20 53 65 65 20 3c  |e to zero. See <|
00026000  4f 53 5f 42 79 74 65 20  31 32 3d 3e 4f 53 5f 42  |OS_Byte 12=>OS_B|
00026010  79 74 65 30 31 32 3e 20  66 6f 72 20 6d 6f 72 65  |yte012> for more|
00026020  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 2e 00 00 00  | information....|
00026030  44 41 54 41 db 03 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00026040  32 30 32 20 20 52 65 61  64 2f 57 72 69 74 65 20  |202  Read/Write |
00026050  6b 65 79 62 6f 61 72 64  20 73 74 61 74 75 73 20  |keyboard status |
00026060  62 79 74 65 0a 3d 3e 09  52 30 20 3d 09 32 30 32  |byte.=>.R0 =.202|
00026070  0a 09 52 31 20 3d 09 45  4f 52 20 76 61 6c 75 65  |..R1 =.EOR value|
00026080  0a 09 52 32 20 3d 09 41  4e 44 20 76 61 6c 75 65  |..R2 =.AND value|
00026090  0a 0a 5c 3c 3d 20 52 30  20 70 72 65 73 65 72 76  |..\<= R0 preserv|
000260a0  65 64 0a 09 52 31 20 3d  09 3c 73 74 61 74 75 73  |ed..R1 =.<status|
000260b0  20 62 65 66 6f 72 65 20  6f 76 65 72 77 72 69 74  | before overwrit|
000260c0  74 65 6e 3d 3e 2e 73 74  61 74 75 73 3e 0a 09 52  |ten=>.status>..R|
000260d0  32 20 3d 09 73 65 72 69  61 6c 20 69 6e 70 75 74  |2 =.serial input|
000260e0  20 62 75 66 66 65 72 20  73 70 61 63 65 0a 0a 54  | buffer space..T|
000260f0  68 65 20 6b 65 79 62 6f  61 72 64 20 73 74 61 74  |he keyboard stat|
00026100  75 73 20 62 79 74 65 20  68 6f 6c 64 73 20 69 6e  |us byte holds in|
00026110  66 6f 72 6d 61 74 69 6f  6e 20 6f 6e 20 74 68 65  |formation on the|
00026120  20 63 75 72 72 65 6e 74  20 73 74 61 74 75 73 20  | current status |
00026130  6f 66 20 74 68 65 20 6b  65 79 62 6f 61 72 64 2c  |of the keyboard,|
00026140  20 73 75 63 68 20 61 73  20 74 68 65 20 73 65 74  | such as the set|
00026150  74 69 6e 67 20 6f 66 20  43 61 70 73 20 4c 6f 63  |ting of Caps Loc|
00026160  6b 2e 20 54 68 69 73 20  63 61 6c 6c 20 65 6e 61  |k. This call ena|
00026170  62 6c 65 73 20 79 6f 75  20 74 6f 20 72 65 61 64  |bles you to read|
00026180  20 61 6e 64 20 63 68 61  6e 67 65 20 74 68 65 73  | and change thes|
00026190  65 20 73 65 74 74 69 6e  67 73 2e 20 4e 6f 74 65  |e settings. Note|
000261a0  20 74 68 61 74 20 74 68  69 73 20 63 61 6c 6c 20  | that this call |
000261b0  64 6f 65 73 20 6e 6f 74  20 75 70 64 61 74 65 20  |does not update |
000261c0  74 68 65 20 4c 45 44 73  2e 20 49 66 20 79 6f 75  |the LEDs. If you|
000261d0  20 64 6f 6e 27 74 20 73  74 61 6d 70 20 74 68 69  | don't stamp thi|
000261e0  73 20 73 74 61 74 65 20  77 69 74 68 20 3c 4f 53  |s state with <OS|
000261f0  5f 42 79 74 65 20 31 31  38 3d 3e 4f 53 5f 42 79  |_Byte 118=>OS_By|
00026200  74 65 31 31 38 3e 2c 20  74 68 65 20 4c 45 44 73  |te118>, the LEDs|
00026210  20 77 6f 6e 27 74 20 62  65 20 73 77 69 74 63 68  | won't be switch|
00026220  65 64 20 6f 6e 20 6f 72  20 6f 66 66 2e 0a 23 53  |ed on or off..#S|
00026230  75 62 70 61 67 65 20 73  74 61 74 75 73 0a 53 74  |ubpage status.St|
00026240  61 74 75 73 20 62 79 74  65 20 66 6f 72 6d 61 74  |atus byte format|
00026250  0a 42 69 74 09 56 61 6c  75 65 09 53 74 61 74 65  |.Bit.Value.State|
00026260  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.Meaning.#Line.0|
00026270  09 2d 09 2d 09 52 65 73  65 72 76 65 64 20 66 6f  |.-.-.Reserved fo|
00026280  72 20 74 68 65 20 6b 65  79 62 6f 61 72 64 20 68  |r the keyboard h|
00026290  61 6e 64 6c 65 72 2c 20  6d 75 73 74 20 62 65 20  |andler, must be |
000262a0  70 72 65 73 65 72 76 65  64 20 77 68 65 6e 20 77  |preserved when w|
000262b0  72 69 74 69 6e 67 0a 31  09 30 09 6f 66 66 09 53  |riting.1.0.off.S|
000262c0  63 72 6f 6c 6c 20 6c 6f  63 6b 0a 09 31 09 6f 6e  |croll lock..1.on|
000262d0  0a 32 09 30 09 6f 6e 09  4e 75 6d 20 4c 6f 63 6b  |.2.0.on.Num Lock|
000262e0  0a 09 31 09 6f 66 66 0a  33 09 30 09 6f 66 66 09  |..1.off.3.0.off.|
000262f0  53 68 69 66 74 0a 09 31  09 6f 6e 0a 34 09 30 09  |Shift..1.on.4.0.|
00026300  6f 6e 09 43 61 70 73 20  4c 6f 63 6b 0a 09 31 09  |on.Caps Lock..1.|
00026310  6f 66 66 0a 35 09 20 09  20 09 4e 6f 72 6d 61 6c  |off.5. . .Normal|
00026320  6c 79 20 73 65 74 0a 36  09 30 09 6f 66 66 09 43  |ly set.6.0.off.C|
00026330  6f 6e 74 72 6f 6c 0a 09  31 09 6f 6e 0a 37 09 30  |ontrol..1.on.7.0|
00026340  09 6f 66 66 09 53 68 69  66 74 20 45 6e 61 62 6c  |.off.Shift Enabl|
00026350  65 0a 09 31 09 6f 6e 0a  0a 4f 6e 20 6d 65 61 6e  |e..1.on..On mean|
00026360  73 20 4c 45 44 20 6f 6e  20 6f 72 20 6b 65 79 20  |s LED on or key |
00026370  70 72 65 73 73 65 64 2c  20 6f 66 66 20 74 68 65  |pressed, off the|
00026380  20 6f 70 70 6f 73 69 74  65 2e 20 49 66 20 43 61  | opposite. If Ca|
00026390  70 73 20 4c 6f 63 6b 20  69 73 20 6f 6e 20 61 6e  |ps Lock is on an|
000263a0  64 20 53 68 69 66 74 20  45 6e 61 62 6c 65 20 6f  |d Shift Enable o|
000263b0  66 66 2c 20 53 68 69 66  74 20 77 69 6c 6c 20 68  |ff, Shift will h|
000263c0  61 76 65 20 6e 6f 20 65  66 66 65 63 74 20 6f 6e  |ave no effect on|
000263d0  20 74 68 65 20 6c 65 74  74 65 72 73 2c 20 69 66  | the letters, if|
000263e0  20 53 68 69 66 74 20 65  6e 61 62 6c 65 20 69 73  | Shift enable is|
000263f0  20 6f 6e 2c 20 79 6f 75  27 6c 6c 20 67 65 74 20  | on, you'll get |
00026400  6c 6f 77 65 72 20 63 61  73 65 2e 00 44 41 54 41  |lower case..DATA|
00026410  53 02 00 00 4f 53 5f 42  79 74 65 20 32 35 35 20  |S...OS_Byte 255 |
00026420  20 52 65 61 64 2f 57 72  69 74 65 20 62 6f 6f 74  | Read/Write boot|
00026430  20 6f 70 74 69 6f 6e 0a  3d 3e 09 52 30 20 3d 09  | option.=>.R0 =.|
00026440  32 35 35 0a 09 52 31 20  3d 09 45 4f 52 20 76 61  |255..R1 =.EOR va|
00026450  6c 75 65 0a 09 52 32 20  3d 20 41 4e 44 20 76 61  |lue..R2 = AND va|
00026460  6c 75 65 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |lue..<=.R0 prese|
00026470  72 76 65 64 0a 09 52 31  20 3d 09 70 72 65 76 69  |rved..R1 =.previ|
00026480  6f 75 73 20 73 74 61 74  65 0a 09 52 32 20 63 6f  |ous state..R2 co|
00026490  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 63 61  |rrupted..This ca|
000264a0  6c 6c 20 72 65 61 64 73  20 6f 72 20 73 65 74 73  |ll reads or sets|
000264b0  20 74 68 65 20 63 75 72  72 65 6e 74 20 61 75 74  | the current aut|
000264c0  6f 20 62 6f 6f 74 20 66  6c 61 67 20 69 6e 20 3c  |o boot flag in <|
000264d0  43 4d 4f 53 3d 3e 4f 53  5f 62 79 74 65 63 6d 6f  |CMOS=>OS_bytecmo|
000264e0  73 3e 20 52 41 4d 2e 20  42 65 63 61 75 73 65 20  |s> RAM. Because |
000264f0  74 68 69 73 20 63 61 6c  6c 20 69 73 20 6f 62 73  |this call is obs|
00026500  6f 6c 65 74 65 2c 20 79  6f 75 20 73 68 6f 75 6c  |olete, you shoul|
00026510  64 20 75 73 65 20 4f 53  5f 46 53 43 6f 6e 74 72  |d use OS_FSContr|
00026520  6f 6c 20 31 30 20 69 6e  20 70 72 65 66 65 72 65  |ol 10 in prefere|
00026530  6e 63 65 2e 20 49 66 20  4e 6f 42 6f 6f 74 20 69  |nce. If NoBoot i|
00026540  73 20 73 65 74 2c 20 61  66 74 65 72 20 61 20 72  |s set, after a r|
00026550  65 73 65 74 20 74 68 65  20 63 6f 6d 70 75 74 65  |eset the compute|
00026560  72 20 69 73 6e 27 74 20  61 75 74 6f 6d 61 74 69  |r isn't automati|
00026570  63 61 6c 6c 79 20 62 6f  6f 74 65 64 2e 20 49 66  |cally booted. If|
00026580  20 42 6f 6f 74 20 69 73  20 73 65 74 2c 20 74 68  | Boot is set, th|
00026590  65 20 62 6f 6f 74 20 66  69 6c 65 20 6f 6e 20 74  |e boot file on t|
000265a0  68 65 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |he filing system|
000265b0  20 69 73 20 61 63 63 65  73 73 65 64 20 6f 6e 20  | is accessed on |
000265c0  72 65 73 65 74 2e 20 54  6f 20 69 6e 76 65 72 74  |reset. To invert|
000265d0  20 74 68 69 73 20 73 65  74 74 69 6e 67 2c 20 68  | this setting, h|
000265e0  6f 6c 64 20 53 68 69 66  74 20 64 6f 77 6e 20 61  |old Shift down a|
000265f0  66 74 65 72 20 72 65 6c  65 61 73 69 6e 67 20 74  |fter releasing t|
00026600  68 65 20 72 65 73 65 74  20 6b 65 79 73 2e 20 54  |he reset keys. T|
00026610  68 65 20 62 69 74 20 33  20 6f 66 20 52 31 20 69  |he bit 3 of R1 i|
00026620  6e 64 69 63 61 74 65 73  20 74 68 65 20 6e 61 6d  |ndicates the nam|
00026630  65 64 20 6f 70 74 69 6f  6e 2e 20 53 65 74 20 6d  |ed option. Set m|
00026640  65 61 6e 73 20 4e 6f 42  6f 6f 74 2c 20 43 6c 65  |eans NoBoot, Cle|
00026650  61 72 20 6d 65 61 6e 73  20 42 6f 6f 74 2e 0a 00  |ar means Boot...|
00026660  44 41 54 41 e7 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00026670  31 32 20 20 57 72 69 74  65 20 6b 65 79 62 6f 61  |12  Write keyboa|
00026680  72 64 20 61 75 74 6f 20  72 65 70 65 61 74 20 72  |rd auto repeat r|
00026690  61 74 65 0a 3d 3e 09 52  30 20 3d 09 31 32 0a 09  |ate.=>.R0 =.12..|
000266a0  52 31 20 3d 09 72 65 70  65 61 74 20 72 61 74 65  |R1 =.repeat rate|
000266b0  20 69 6e 20 63 65 6e 74  69 73 65 63 6f 6e 64 73  | in centiseconds|
000266c0  20 28 30 20 74 6f 20 73  65 74 20 72 65 70 65 61  | (0 to set repea|
000266d0  74 20 64 65 6c 61 79 2f  72 61 74 65 20 74 6f 20  |t delay/rate to |
000266e0  64 65 66 61 75 6c 74 29  0a 0a 3c 3d 09 52 30 20  |default)..<=.R0 |
000266f0  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
00026700  70 72 65 76 69 6f 75 73  20 72 65 70 65 61 74 20  |previous repeat |
00026710  72 61 74 65 0a 09 52 32  20 63 6f 72 72 75 70 74  |rate..R2 corrupt|
00026720  65 64 0a 0a 41 66 74 65  72 20 74 68 65 20 61 75  |ed..After the au|
00026730  74 6f 2d 72 65 70 65 61  74 20 64 65 6c 61 79 20  |to-repeat delay |
00026740  73 70 65 63 69 66 69 65  64 20 62 79 20 3c 4f 53  |specified by <OS|
00026750  5f 42 79 74 65 20 31 31  3d 3e 6f 73 5f 62 79 74  |_Byte 11=>os_byt|
00026760  65 30 31 31 3e 2c 20 65  61 63 68 20 6b 65 79 20  |e011>, each key |
00026770  77 69 6c 6c 20 72 65 70  65 61 74 20 75 6e 74 69  |will repeat unti|
00026780  6c 20 72 65 6c 65 61 73  65 64 20 61 74 20 74 68  |l released at th|
00026790  65 20 72 61 74 65 20 70  61 73 73 65 64 20 74 6f  |e rate passed to|
000267a0  20 74 68 69 73 20 63 61  6c 6c 2e 20 54 68 69 73  | this call. This|
000267b0  20 65 6e 61 62 6c 65 73  20 79 6f 75 20 74 6f 20  | enables you to |
000267c0  63 68 61 6e 67 65 20 74  68 65 20 69 6e 69 74 69  |change the initi|
000267d0  61 6c 20 72 61 74 65 20  66 72 6f 6d 20 74 68 65  |al rate from the|
000267e0  20 64 65 66 61 75 6c 74  20 73 65 74 20 62 79 20  | default set by |
000267f0  3c 2a 43 6f 6e 66 69 67  75 72 65 20 52 65 70 65  |<*Configure Repe|
00026800  61 74 3d 3e 2a 53 74 61  74 75 73 20 52 65 70 65  |at=>*Status Repe|
00026810  61 74 3e 20 54 68 69 73  20 76 61 72 69 61 62 6c  |at> This variabl|
00026820  65 20 6d 61 79 20 61 6c  73 6f 20 62 65 20 73 65  |e may also be se|
00026830  74 2f 72 65 61 64 20 62  79 20 3c 4f 53 5f 42 79  |t/read by <OS_By|
00026840  74 65 31 39 37 3e 2e 00  44 49 52 24 98 01 00 00  |te197>..DIR$....|
00026850  98 01 00 00 e0 69 02 00  47 ff ff ff ef 3c 15 0a  |.....i..G....<..|
00026860  42 05 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |B...........!Roo|
00026870  74 00 00 00 24 6f 02 00  46 fd ff ff 43 94 67 a8  |t...$o..F...C.g.|
00026880  7b 01 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |{...........0...|
00026890  a0 70 02 00 46 fd ff ff  12 f7 73 4c 1c 02 00 00  |.p..F.....sL....|
000268a0  13 00 00 00 00 00 00 00  31 00 00 00 bc 72 02 00  |........1....r..|
000268b0  46 fd ff ff 92 36 74 4c  f6 01 00 00 13 00 00 00  |F....6tL........|
000268c0  00 00 00 00 31 32 00 00  b4 74 02 00 46 fd ff ff  |....12...t..F...|
000268d0  a8 1d 74 4c bd 01 00 00  13 00 00 00 00 00 00 00  |..tL............|
000268e0  35 00 00 00 74 76 02 00  46 fd ff ff ae 2b 74 4c  |5...tv..F....+tL|
000268f0  6d 01 00 00 13 00 00 00  00 00 00 00 36 00 00 00  |m...........6...|
00026900  e4 77 02 00 45 fd ff ff  b7 19 ea ff e4 00 00 00  |.w..E...........|
00026910  13 00 00 00 00 00 00 00  61 00 00 00 c8 78 02 00  |........a....x..|
00026920  46 fd ff ff 65 10 cf 14  23 01 00 00 13 00 00 00  |F...e...#.......|
00026930  00 00 00 00 62 00 00 00  ec 79 02 00 46 fd ff ff  |....b....y..F...|
00026940  5e df d9 21 e7 00 00 00  13 00 00 00 00 00 00 00  |^..!............|
00026950  31 31 00 00 d4 7a 02 00  46 fd ff ff 68 bb d9 21  |11...z..F...h..!|
00026960  f7 00 00 00 13 00 00 00  00 00 00 00 37 00 00 00  |............7...|
00026970  cc 7b 02 00 46 fd ff ff  6c 12 3b 58 a1 00 00 00  |.{..F...l.;X....|
00026980  13 00 00 00 00 00 00 00  38 00 00 00 70 7c 02 00  |........8...p|..|
00026990  46 fd ff ff ab 91 76 4c  ea 01 00 00 13 00 00 00  |F.....vL........|
000269a0  00 00 00 00 32 30 00 00  5c 7e 02 00 46 fd ff ff  |....20..\~..F...|
000269b0  07 dc 73 4c 99 01 00 00  13 00 00 00 00 00 00 00  |..sL............|
000269c0  63 00 00 00 f8 7f 02 00  46 fd ff ff ac f1 93 1f  |c.......F.......|
000269d0  b4 01 00 00 13 00 00 00  00 00 00 00 32 34 00 00  |............24..|
000269e0  44 41 54 41 42 05 00 00  4f 53 5f 46 69 6c 65 20  |DATAB...OS_File |
000269f0  20 28 26 30 38 29 0a 23  50 61 72 65 6e 74 20 4f  | (&08).#Parent O|
00026a00  53 5f 0a 3d 3e 20 52 30  20 3d 20 72 65 61 73 6f  |S_.=> R0 = reaso|
00026a10  6e 20 63 6f 64 65 0a 0a  4d 69 73 63 65 6c 6c 61  |n code..Miscella|
00026a20  6e 65 6f 75 73 20 6f 70  65 72 61 74 69 6f 6e 73  |neous operations|
00026a30  20 6f 6e 20 77 68 6f 6c  65 20 66 69 6c 65 73 20  | on whole files |
00026a40  3a 0a 0a 30 09 3c 53 61  76 65 20 62 6c 6f 63 6b  |:..0.<Save block|
00026a50  20 6f 66 20 6d 65 6d 6f  72 79 20 61 73 20 61 20  | of memory as a |
00026a60  66 69 6c 65 3d 3e 4f 53  5f 46 69 6c 65 30 3e 0a  |file=>OS_File0>.|
00026a70  31 09 3c 57 72 69 74 65  20 63 61 74 61 6c 6f 67  |1.<Write catalog|
00026a80  75 65 20 69 6e 66 6f 20  66 6f 72 20 6e 61 6d 65  |ue info for name|
00026a90  64 20 6f 62 6a 65 63 74  3d 3e 4f 53 5f 46 69 6c  |d object=>OS_Fil|
00026aa0  65 31 3e 0a 32 09 3c 57  72 69 74 65 20 6c 6f 61  |e1>.2.<Write loa|
00026ab0  64 20 61 64 64 72 65 73  73 20 66 6f 72 20 6e 61  |d address for na|
00026ac0  6d 65 64 20 6f 62 6a 65  63 74 3d 3e 4f 53 5f 46  |med object=>OS_F|
00026ad0  69 6c 65 31 3e 0a 33 09  3c 57 72 69 74 65 20 65  |ile1>.3.<Write e|
00026ae0  78 65 63 20 61 64 64 72  65 73 73 20 66 6f 72 20  |xec address for |
00026af0  6e 61 6d 65 64 20 6f 62  6a 65 63 74 3d 3e 4f 53  |named object=>OS|
00026b00  5f 46 69 6c 65 31 3e 0a  34 09 3c 57 72 69 74 65  |_File1>.4.<Write|
00026b10  20 61 74 74 72 69 62 75  74 65 73 20 66 6f 72 20  | attributes for |
00026b20  6e 61 6d 65 64 20 6f 62  6a 65 63 74 3d 3e 4f 53  |named object=>OS|
00026b30  5f 46 69 6c 65 31 3e 0a  35 09 3c 52 65 61 64 20  |_File1>.5.<Read |
00026b40  63 61 74 61 6c 6f 67 75  65 20 69 6e 66 6f 20 66  |catalogue info f|
00026b50  6f 72 20 6f 62 6a 65 63  74 3d 3e 4f 53 5f 46 69  |or object=>OS_Fi|
00026b60  6c 65 35 3e 0a 36 09 3c  44 65 6c 65 74 65 20 6e  |le5>.6.<Delete n|
00026b70  61 6d 65 64 20 6f 62 6a  65 63 74 3d 3e 4f 53 5f  |amed object=>OS_|
00026b80  46 69 6c 65 36 3e 0a 37  09 3c 43 72 65 61 74 65  |File6>.7.<Create|
00026b90  20 65 6d 70 74 79 20 75  6e 2d 73 74 61 6d 70 65  | empty un-stampe|
00026ba0  64 20 66 69 6c 65 3d 3e  4f 53 5f 46 69 6c 65 37  |d file=>OS_File7|
00026bb0  3e 0a 38 09 3c 43 72 65  61 74 65 20 64 69 72 65  |>.8.<Create dire|
00026bc0  63 74 6f 72 79 3d 3e 4f  53 5f 46 69 6c 65 38 3e  |ctory=>OS_File8>|
00026bd0  0a 39 09 3c 44 61 74 65  20 73 74 61 6d 70 20 6e  |.9.<Date stamp n|
00026be0  61 6d 65 64 20 6f 62 6a  65 63 74 3d 3e 4f 53 5f  |amed object=>OS_|
00026bf0  46 69 6c 65 31 3e 0a 31  30 09 3c 53 61 76 65 20  |File1>.10.<Save |
00026c00  62 6c 6f 63 6b 20 6f 66  20 6d 65 6d 6f 72 79 20  |block of memory |
00026c10  61 73 20 61 20 74 79 70  65 64 20 66 69 6c 65 3d  |as a typed file=|
00026c20  3e 4f 53 5f 46 69 6c 65  30 3e 0a 31 31 09 3c 43  |>OS_File0>.11.<C|
00026c30  72 65 61 74 65 20 65 6d  70 74 79 20 66 69 6c 65  |reate empty file|
00026c40  3d 3e 4f 53 5f 46 69 6c  65 31 31 3e 0a 31 32 09  |=>OS_File11>.12.|
00026c50  3c 4c 6f 61 64 20 6e 61  6d 65 64 20 66 69 6c 65  |<Load named file|
00026c60  20 67 69 76 65 6e 20 70  61 74 68 3d 3e 4f 53 5f  | given path=>OS_|
00026c70  46 69 6c 65 31 32 3e 0a  31 33 09 3c 52 65 61 64  |File12>.13.<Read|
00026c80  20 63 61 74 61 6c 6f 67  75 65 20 69 6e 66 6f 20  | catalogue info |
00026c90  66 6f 72 20 6f 62 6a 65  63 74 20 67 69 76 65 6e  |for object given|
00026ca0  20 70 61 74 68 3d 3e 4f  53 5f 46 69 6c 65 35 3e  | path=>OS_File5>|
00026cb0  0a 31 34 09 3c 4c 6f 61  64 20 6e 61 6d 65 64 20  |.14.<Load named |
00026cc0  66 69 6c 65 20 67 69 76  65 6e 20 70 61 74 68 20  |file given path |
00026cd0  76 61 72 69 61 62 6c 65  3d 3e 4f 53 5f 46 69 6c  |variable=>OS_Fil|
00026ce0  65 31 32 3e 0a 31 35 09  3c 52 65 61 64 20 63 61  |e12>.15.<Read ca|
00026cf0  74 61 6c 6f 67 75 65 20  69 6e 66 6f 20 66 6f 72  |talogue info for|
00026d00  20 6f 62 6a 65 63 74 20  67 69 76 65 6e 20 70 61  | object given pa|
00026d10  74 68 20 76 61 72 69 61  62 6c 65 3d 3e 4f 53 5f  |th variable=>OS_|
00026d20  46 69 6c 65 35 3e 0a 31  36 09 3c 4c 6f 61 64 20  |File5>.16.<Load |
00026d30  6e 61 6d 65 64 20 66 69  6c 65 20 77 69 74 68 6f  |named file witho|
00026d40  75 74 20 70 61 74 68 3d  3e 4f 53 5f 46 69 6c 65  |ut path=>OS_File|
00026d50  31 32 3e 0a 31 37 09 3c  52 65 61 64 20 63 61 74  |12>.17.<Read cat|
00026d60  61 6c 6f 67 75 65 20 69  6e 66 6f 20 66 6f 72 20  |alogue info for |
00026d70  6f 62 6a 65 63 74 20 77  69 74 68 6f 75 74 20 70  |object without p|
00026d80  61 74 68 3d 3e 4f 53 5f  46 69 6c 65 35 3e 0a 31  |ath=>OS_File5>.1|
00026d90  38 09 3c 53 65 74 20 74  79 70 65 20 6f 66 20 6e  |8.<Set type of n|
00026da0  61 6d 65 64 20 6f 62 6a  65 63 74 3d 3e 4f 53 5f  |amed object=>OS_|
00026db0  46 69 6c 65 31 3e 0a 31  39 09 47 65 6e 65 72 61  |File1>.19.Genera|
00026dc0  74 65 20 65 72 72 6f 72  20 6d 65 73 73 61 67 65  |te error message|
00026dd0  0a 32 30 09 3c 52 65 61  64 20 63 61 74 61 6c 6f  |.20.<Read catalo|
00026de0  67 75 65 20 69 6e 66 6f  20 66 6f 72 20 73 74 61  |gue info for sta|
00026df0  6d 70 65 64 20 6f 62 6a  65 63 74 3d 3e 4f 53 5f  |mped object=>OS_|
00026e00  46 69 6c 65 32 30 3e 0a  32 31 09 3c 52 65 61 64  |File20>.21.<Read|
00026e10  20 63 61 74 61 6c 6f 67  75 65 20 69 6e 66 6f 20  | catalogue info |
00026e20  66 6f 72 20 73 74 61 6d  70 65 64 20 6f 62 6a 65  |for stamped obje|
00026e30  63 74 20 67 69 76 65 6e  20 70 61 74 68 3d 3e 4f  |ct given path=>O|
00026e40  53 5f 46 69 6c 65 32 30  3e 0a 32 32 09 3c 52 65  |S_File20>.22.<Re|
00026e50  61 64 20 63 61 74 61 6c  6f 67 75 65 20 69 6e 66  |ad catalogue inf|
00026e60  6f 20 66 6f 72 20 73 74  61 6d 70 65 64 20 6f 62  |o for stamped ob|
00026e70  6a 65 63 74 20 67 69 76  65 6e 20 70 61 74 68 20  |ject given path |
00026e80  76 61 72 69 61 62 6c 65  3d 3e 4f 53 5f 46 69 6c  |variable=>OS_Fil|
00026e90  65 32 30 3e 0a 32 33 09  3c 52 65 61 64 20 63 61  |e20>.23.<Read ca|
00026ea0  74 61 6c 6f 67 75 65 20  69 6e 66 6f 20 66 6f 72  |talogue info for|
00026eb0  20 73 74 61 6d 70 65 64  20 6f 62 6a 65 63 74 20  | stamped object |
00026ec0  77 69 74 68 6f 75 74 20  70 61 74 68 3d 3e 4f 53  |without path=>OS|
00026ed0  5f 46 69 6c 65 32 30 3e  0a 32 34 09 3c 52 65 61  |_File20>.24.<Rea|
00026ee0  64 20 62 6c 6f 63 6b 20  73 69 7a 65 20 6f 66 20  |d block size of |
00026ef0  66 69 6c 65 3d 3e 4f 53  5f 46 69 6c 65 32 30 3e  |file=>OS_File20>|
00026f00  0a 32 35 35 09 3c 4c 6f  61 64 20 6e 61 6d 65 64  |.255.<Load named|
00026f10  20 66 69 6c 65 3d 3e 4f  53 5f 46 69 6c 65 31 32  | file=>OS_File12|
00026f20  3e 0a 00 00 44 41 54 41  7b 01 00 00 4f 53 5f 46  |>...DATA{...OS_F|
00026f30  69 6c 65 20 30 20 61 6e  64 20 31 30 0a 53 61 76  |ile 0 and 10.Sav|
00026f40  65 20 61 20 62 6c 6f 63  6b 20 6f 66 20 6d 65 6d  |e a block of mem|
00026f50  6f 72 79 20 61 73 20 61  20 66 69 6c 65 0a 0a 3d  |ory as a file..=|
00026f60  3e 09 52 30 20 3d 20 30  20 6f 72 20 31 30 0a 09  |>.R0 = 0 or 10..|
00026f70  52 31 20 3d 20 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 = pointer to |
00026f80  66 69 6c 65 6e 61 6d 65  0a 09 69 66 20 52 30 20  |filename..if R0 |
00026f90  3d 20 20 30 20 3a 09 52  32 20 3d 20 3c 6c 6f 61  |=  0 :.R2 = <loa|
00026fa0  64 20 61 64 64 72 65 73  73 3d 3e 6f 73 5f 66 69  |d address=>os_fi|
00026fb0  6c 65 61 3e 0a 09 20 09  09 52 33 20 3d 20 3c 65  |lea>.. ..R3 = <e|
00026fc0  78 65 63 20 61 64 64 72  65 73 73 3d 3e 6f 73 5f  |xec address=>os_|
00026fd0  66 69 6c 65 61 3e 0a 09  69 66 20 52 30 20 3d 20  |filea>..if R0 = |
00026fe0  31 30 20 3a 09 52 32 20  3d 20 3c 66 69 6c 65 74  |10 :.R2 = <filet|
00026ff0  79 70 65 3d 3e 46 69 6c  65 74 79 70 65 73 3a 21  |ype=>Filetypes:!|
00027000  52 6f 6f 74 3e 0a 09 52  34 20 3d 20 73 74 61 72  |Root>..R4 = star|
00027010  74 20 61 64 64 72 65 73  73 20 69 6e 20 6d 65 6d  |t address in mem|
00027020  6f 72 79 0a 09 52 35 20  3d 20 65 6e 64 20 61 64  |ory..R5 = end ad|
00027030  64 72 65 73 73 20 69 6e  20 6d 65 6d 6f 72 79 0a  |dress in memory.|
00027040  0a 5c 3c 3d 20 72 65 67  69 73 74 65 72 73 20 70  |.\<= registers p|
00027050  72 65 73 65 72 76 65 64  0a 0a 41 6e 20 65 72 72  |reserved..An err|
00027060  6f 72 20 69 73 20 72 65  74 75 72 6e 65 64 20 69  |or is returned i|
00027070  66 20 6f 62 6a 65 63 74  20 69 73 20 6c 6f 63 6b  |f object is lock|
00027080  65 64 2c 20 69 73 20 6f  70 65 6e 20 6f 72 20 69  |ed, is open or i|
00027090  73 20 61 20 64 69 72 65  63 74 6f 72 79 2e 0a 00  |s a directory...|
000270a0  44 41 54 41 1c 02 00 00  4f 53 5f 46 69 6c 65 20  |DATA....OS_File |
000270b0  31 2c 32 2c 33 2c 34 2c  39 20 61 6e 64 20 31 38  |1,2,3,4,9 and 18|
000270c0  0a 57 72 69 74 65 20 63  61 74 61 6c 6f 67 75 65  |.Write catalogue|
000270d0  20 69 6e 66 6f 20 66 6f  72 20 6e 61 6d 65 64 20  | info for named |
000270e0  6f 62 6a 65 63 74 0a 0a  3d 3e 09 52 30 20 3d 20  |object..=>.R0 = |
000270f0  31 2c 32 2c 33 2c 34 2c  39 20 6f 72 20 31 38 0a  |1,2,3,4,9 or 18.|
00027100  09 52 31 20 3d 20 70 6f  69 6e 74 65 72 20 74 6f  |.R1 = pointer to|
00027110  20 66 69 6c 65 6e 61 6d  65 0a 09 69 66 20 52 30  | filename..if R0|
00027120  20 69 6e 20 28 31 2c 32  29 09 3a 20 52 32 20 3d  | in (1,2).: R2 =|
00027130  20 3c 6c 6f 61 64 20 61  64 64 72 65 73 73 3d 3e  | <load address=>|
00027140  6f 73 5f 66 69 6c 65 61  3e 0a 09 69 66 20 52 30  |os_filea>..if R0|
00027150  20 3d 20 31 38 09 3a 20  52 32 20 3d 20 3c 66 69  | = 18.: R2 = <fi|
00027160  6c 65 74 79 70 65 3d 3e  46 69 6c 65 74 79 70 65  |letype=>Filetype|
00027170  73 3a 21 52 6f 6f 74 3e  0a 09 69 66 20 52 30 20  |s:!Root>..if R0 |
00027180  69 6e 20 28 31 2c 33 29  09 3a 20 52 33 20 3d 20  |in (1,3).: R3 = |
00027190  3c 65 78 65 63 20 61 64  64 72 65 73 73 3d 3e 6f  |<exec address=>o|
000271a0  73 5f 66 69 6c 65 61 3e  0a 09 69 66 20 52 30 20  |s_filea>..if R0 |
000271b0  69 6e 20 28 31 2c 34 29  09 3a 20 52 35 20 3d 20  |in (1,4).: R5 = |
000271c0  3c 61 74 74 72 69 62 75  74 65 73 3d 3e 6f 73 5f  |<attributes=>os_|
000271d0  66 69 6c 65 62 3e 0a 0a  5c 3c 3d 09 72 65 67 69  |fileb>..\<=.regi|
000271e0  73 74 65 72 73 20 70 72  65 73 65 72 76 65 64 0a  |sters preserved.|
000271f0  0a 52 30 09 49 6e 66 6f  20 77 72 69 74 74 65 6e  |.R0.Info written|
00027200  0a 23 4c 69 6e 65 0a 31  09 4c 6f 61 64 20 61 6e  |.#Line.1.Load an|
00027210  64 20 65 78 65 63 20 61  64 64 72 65 73 73 20 2b  |d exec address +|
00027220  20 6f 62 6a 65 63 74 20  61 74 74 72 69 62 75 74  | object attribut|
00027230  65 73 0a 32 09 4c 6f 61  64 20 61 64 64 72 65 73  |es.2.Load addres|
00027240  73 0a 33 09 45 78 65 63  20 61 64 64 72 65 73 73  |s.3.Exec address|
00027250  0a 34 09 4f 62 6a 65 63  74 20 61 74 74 72 69 62  |.4.Object attrib|
00027260  75 74 65 73 0a 39 09 44  61 74 65 2f 74 69 6d 65  |utes.9.Date/time|
00027270  20 73 74 61 6d 70 20 2b  20 66 69 6c 65 74 79 70  | stamp + filetyp|
00027280  65 20 74 6f 20 26 46 46  44 20 69 66 20 6e 6f 74  |e to &FFD if not|
00027290  20 73 65 74 2e 0a 31 38  09 46 69 6c 65 74 79 70  | set..18.Filetyp|
000272a0  65 2c 20 61 6e 64 20 64  61 74 65 2f 74 69 6d 65  |e, and date/time|
000272b0  20 69 66 20 6e 6f 74 20  73 65 74 2e 44 41 54 41  | if not set.DATA|
000272c0  f6 01 00 00 4f 53 5f 46  69 6c 65 20 31 32 2c 31  |....OS_File 12,1|
000272d0  34 2c 31 36 20 61 6e 64  20 32 35 35 0a 4c 6f 61  |4,16 and 255.Loa|
000272e0  64 20 6e 61 6d 65 64 20  66 69 6c 65 0a 0a 3d 3e  |d named file..=>|
000272f0  09 52 30 20 3d 20 31 32  2c 31 34 2c 31 36 20 6f  |.R0 = 12,14,16 o|
00027300  72 20 32 35 35 0a 09 52  31 20 3d 20 70 6f 69 6e  |r 255..R1 = poin|
00027310  74 65 72 20 74 6f 20 66  69 6c 65 6e 61 6d 65 0a  |ter to filename.|
00027320  09 69 66 20 52 33 20 26  20 46 46 20 3d 20 30 20  |.if R3 & FF = 0 |
00027330  3a 0a 09 52 32 20 3d 20  6c 6f 61 64 20 61 64 64  |:..R2 = load add|
00027340  72 65 73 73 0a 09 69 66  20 52 30 20 3d 20 32 35  |ress..if R0 = 25|
00027350  35 20 3a 09 75 73 65 20  46 69 6c 65 24 50 61 74  |5 :.use File$Pat|
00027360  68 0a 09 69 66 20 52 30  20 3d 20 20 31 32 20 3a  |h..if R0 =  12 :|
00027370  09 52 34 20 3d 20 70 6f  69 6e 74 65 72 20 74 6f  |.R4 = pointer to|
00027380  20 70 61 74 68 20 73 74  72 69 6e 67 0a 09 69 66  | path string..if|
00027390  20 52 30 20 3d 20 20 31  34 20 3a 09 52 34 20 3d  | R0 =  14 :.R4 =|
000273a0  20 70 6f 69 6e 74 65 72  20 74 6f 20 70 61 74 68  | pointer to path|
000273b0  20 76 61 72 69 61 62 6c  65 0a 09 69 66 20 52 30  | variable..if R0|
000273c0  20 3d 20 20 31 36 20 3a  09 75 73 65 20 6e 6f 20  | =  16 :.use no |
000273d0  70 61 74 68 0a 0a 5c 3c  3d 09 52 30 20 3d 20 3c  |path..\<=.R0 = <|
000273e0  6f 62 6a 65 63 74 20 74  79 70 65 3d 3e 6f 73 5f  |object type=>os_|
000273f0  66 69 6c 65 63 3e 0a 09  52 32 20 3d 20 3c 6c 6f  |filec>..R2 = <lo|
00027400  61 64 20 61 64 64 72 65  73 73 3d 3e 6f 73 5f 66  |ad address=>os_f|
00027410  69 6c 65 61 3e 0a 09 52  33 20 3d 20 3c 65 78 65  |ilea>..R3 = <exe|
00027420  63 20 61 64 64 72 65 73  73 3d 3e 6f 73 5f 66 69  |c address=>os_fi|
00027430  6c 65 61 3e 0a 09 52 34  20 3d 20 6f 62 6a 65 63  |lea>..R4 = objec|
00027440  74 20 6c 65 6e 67 74 68  0a 09 52 35 20 3d 20 3c  |t length..R5 = <|
00027450  6f 62 6a 65 63 74 20 61  74 74 72 69 62 75 74 65  |object attribute|
00027460  73 3d 3e 6f 73 5f 66 69  6c 65 62 3e 0a 0a 45 72  |s=>os_fileb>..Er|
00027470  72 6f 72 20 69 66 20 6e  6f 74 20 66 6f 75 6e 64  |ror if not found|
00027480  2c 20 69 73 20 64 69 72  65 63 74 6f 72 79 2c 20  |, is directory, |
00027490  6e 6f 20 72 65 61 64 20  61 63 63 65 73 73 20 6f  |no read access o|
000274a0  72 20 62 61 64 20 6c 6f  61 64 20 61 64 64 72 65  |r bad load addre|
000274b0  73 73 00 00 44 41 54 41  bd 01 00 00 4f 53 5f 46  |ss..DATA....OS_F|
000274c0  69 6c 65 20 35 2c 31 33  2c 31 35 20 61 6e 64 20  |ile 5,13,15 and |
000274d0  31 37 0a 52 65 61 64 20  63 61 74 61 6c 6f 67 75  |17.Read catalogu|
000274e0  65 20 69 6e 66 6f 20 66  6f 72 20 6e 61 6d 65 64  |e info for named|
000274f0  20 6f 62 6a 65 63 74 0a  0a 3d 3e 09 52 30 20 3d  | object..=>.R0 =|
00027500  20 35 2c 31 33 2c 31 35  20 6f 72 20 31 37 0a 09  | 5,13,15 or 17..|
00027510  52 31 20 3d 20 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 = pointer to |
00027520  66 69 6c 65 6e 61 6d 65  0a 09 69 66 20 52 30 20  |filename..if R0 |
00027530  3d 20 20 35 20 3a 20 75  73 65 20 46 69 6c 65 24  |=  5 : use File$|
00027540  50 61 74 68 0a 09 69 66  20 52 30 20 3d 20 31 33  |Path..if R0 = 13|
00027550  20 3a 20 52 34 20 3d 20  70 6f 69 6e 74 65 72 20  | : R4 = pointer |
00027560  74 6f 20 70 61 74 68 20  73 74 72 69 6e 67 0a 09  |to path string..|
00027570  69 66 20 52 30 20 3d 20  31 35 20 3a 20 52 34 20  |if R0 = 15 : R4 |
00027580  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 70 61 74  |= pointer to pat|
00027590  68 20 76 61 72 69 61 62  6c 65 0a 09 69 66 20 52  |h variable..if R|
000275a0  30 20 3d 20 31 37 20 3a  20 75 73 65 20 6e 6f 20  |0 = 17 : use no |
000275b0  70 61 74 68 0a 0a 5c 3c  3d 09 52 30 20 3d 20 3c  |path..\<=.R0 = <|
000275c0  6f 62 6a 65 63 74 20 74  79 70 65 3d 3e 6f 73 5f  |object type=>os_|
000275d0  66 69 6c 65 63 3e 0a 09  52 32 20 3d 20 3c 6c 6f  |filec>..R2 = <lo|
000275e0  61 64 20 61 64 64 72 65  73 73 3d 3e 6f 73 5f 66  |ad address=>os_f|
000275f0  69 6c 65 61 3e 0a 09 52  33 20 3d 20 3c 65 78 65  |ilea>..R3 = <exe|
00027600  63 20 61 64 64 72 65 73  73 3d 3e 6f 73 5f 66 69  |c address=>os_fi|
00027610  6c 65 61 3e 0a 09 52 34  20 3d 20 6f 62 6a 65 63  |lea>..R4 = objec|
00027620  74 20 6c 65 6e 67 74 68  0a 09 52 35 20 3d 20 3c  |t length..R5 = <|
00027630  6f 62 6a 65 63 74 20 61  74 74 72 69 62 75 74 65  |object attribute|
00027640  73 3d 3e 6f 73 5f 66 69  6c 65 62 3e 0a 0a 52 32  |s=>os_fileb>..R2|
00027650  2d 52 35 20 63 6f 72 72  75 70 74 65 64 20 69 66  |-R5 corrupted if|
00027660  20 6f 62 6a 65 63 74 20  6e 6f 74 20 66 6f 75 6e  | object not foun|
00027670  64 00 00 00 44 41 54 41  6d 01 00 00 4f 53 5f 46  |d...DATAm...OS_F|
00027680  69 6c 65 20 36 0a 44 65  6c 65 74 65 73 20 61 20  |ile 6.Deletes a |
00027690  6e 61 6d 65 64 20 6f 62  6a 65 63 74 0a 0a 3d 3e  |named object..=>|
000276a0  09 52 30 20 3d 20 36 0a  09 52 31 20 3d 20 70 74  |.R0 = 6..R1 = pt|
000276b0  72 20 74 6f 20 6e 6f 6e  2d 77 69 6c 64 63 61 72  |r to non-wildcar|
000276c0  64 65 64 20 6f 62 6a 65  63 74 20 6e 61 6d 65 0a  |ded object name.|
000276d0  0a 5c 3c 3d 09 52 30 20  3d 20 3c 6f 62 6a 65 63  |.\<=.R0 = <objec|
000276e0  74 20 74 79 70 65 3d 3e  6f 73 5f 66 69 6c 65 63  |t type=>os_filec|
000276f0  3e 0a 09 52 32 20 3d 20  3c 6c 6f 61 64 20 61 64  |>..R2 = <load ad|
00027700  64 72 65 73 73 3d 3e 6f  73 5f 66 69 6c 65 61 3e  |dress=>os_filea>|
00027710  0a 09 52 33 20 3d 20 3c  65 78 65 63 20 61 64 64  |..R3 = <exec add|
00027720  72 65 73 73 3d 3e 6f 73  5f 66 69 6c 65 61 3e 0a  |ress=>os_filea>.|
00027730  09 52 34 20 3d 20 6f 62  6a 65 63 74 20 6c 65 6e  |.R4 = object len|
00027740  67 74 68 0a 09 52 35 20  3d 20 3c 6f 62 6a 65 63  |gth..R5 = <objec|
00027750  74 20 61 74 74 72 69 62  75 74 65 73 3d 3e 6f 73  |t attributes=>os|
00027760  5f 66 69 6c 65 62 3e 0a  0a 49 74 20 69 73 20 6e  |_fileb>..It is n|
00027770  6f 74 20 61 6e 20 65 72  72 6f 72 20 69 66 20 74  |ot an error if t|
00027780  68 65 20 6f 62 6a 65 63  74 20 64 6f 65 73 20 6e  |he object does n|
00027790  6f 74 20 65 78 69 73 74  2e 20 41 6e 20 65 72 72  |ot exist. An err|
000277a0  6f 72 20 69 73 20 67 65  6e 65 72 61 74 65 64 20  |or is generated |
000277b0  69 66 20 6f 62 6a 65 63  74 20 69 73 20 6c 6f 63  |if object is loc|
000277c0  6b 65 64 2c 20 6f 70 65  6e 20 6f 72 20 6e 6f 6e  |ked, open or non|
000277d0  2d 65 6d 70 74 79 20 64  69 72 65 63 74 6f 72 79  |-empty directory|
000277e0  2e 00 00 00 44 41 54 41  e4 00 00 00 4c 6f 61 64  |....DATA....Load|
000277f0  20 61 6e 64 20 45 78 65  63 20 61 64 64 72 65 73  | and Exec addres|
00027800  73 0a 49 66 20 61 6c 6c  20 31 32 20 75 70 70 65  |s.If all 12 uppe|
00027810  72 20 62 69 74 73 20 6f  66 20 74 68 65 20 6c 6f  |r bits of the lo|
00027820  61 64 20 61 64 64 72 65  73 73 20 61 72 65 20 73  |ad address are s|
00027830  65 74 20 3a 0a 0a 20 4c  6f 61 64 20 61 64 64 72  |et :.. Load addr|
00027840  09 3a 09 46 46 46 74 74  74 63 63 09 74 74 74 20  |.:.FFFtttcc.ttt |
00027850  69 73 20 66 69 6c 65 74  79 70 65 0a 20 45 78 65  |is filetype. Exe|
00027860  63 20 61 64 64 72 09 3a  09 64 64 64 64 64 64 64  |c addr.:.ddddddd|
00027870  64 09 63 63 64 64 64 64  64 64 64 64 20 69 73 20  |d.ccdddddddd is |
00027880  64 61 74 65 0a 0a 6f 74  68 65 72 77 69 73 65 20  |date..otherwise |
00027890  6c 6f 61 64 20 61 6e 64  20 65 78 65 63 20 61 64  |load and exec ad|
000278a0  64 72 65 73 73 20 61 72  65 20 65 78 61 63 74 6c  |dress are exactl|
000278b0  79 20 77 68 61 74 20 74  68 65 79 20 63 6c 61 69  |y what they clai|
000278c0  6d 20 74 6f 20 62 65 2e  44 41 54 41 23 01 00 00  |m to be.DATA#...|
000278d0  46 69 6c 65 20 41 74 74  72 69 62 75 74 65 73 0a  |File Attributes.|
000278e0  42 69 74 09 4d 65 61 6e  69 6e 67 20 77 68 65 6e  |Bit.Meaning when|
000278f0  20 73 65 74 0a 23 4c 69  6e 65 0a 30 09 52 65 61  | set.#Line.0.Rea|
00027900  64 20 61 63 63 65 73 73  20 66 6f 72 20 79 6f 75  |d access for you|
00027910  0a 31 09 57 72 69 74 65  20 61 63 63 65 73 73 20  |.1.Write access |
00027920  66 6f 72 20 79 6f 75 0a  32 09 2d 0a 33 09 4c 6f  |for you.2.-.3.Lo|
00027930  63 6b 65 64 0a 34 09 52  65 61 64 20 61 63 63 65  |cked.4.Read acce|
00027940  73 73 20 66 6f 72 20 6f  74 68 65 72 73 0a 35 09  |ss for others.5.|
00027950  57 72 69 74 65 20 61 63  63 65 73 73 20 66 6f 72  |Write access for|
00027960  20 6f 74 68 65 72 73 0a  36 09 48 69 64 64 65 6e  | others.6.Hidden|
00027970  20 28 46 69 6c 65 72 2b  29 0a 37 09 41 70 70 6c  | (Filer+).7.Appl|
00027980  69 63 61 74 69 6f 6e 20  28 46 69 6c 65 72 2b 29  |ication (Filer+)|
00027990  0a 0a 49 66 20 62 6f 74  68 20 36 20 26 20 37 20  |..If both 6 & 7 |
000279a0  73 65 74 20 74 68 65 6e  20 66 69 6c 65 20 69 73  |set then file is|
000279b0  20 73 75 70 65 72 20 68  69 64 64 65 6e 2e 20 54  | super hidden. T|
000279c0  68 65 20 74 6f 70 20 32  34 20 62 69 74 73 20 61  |he top 24 bits a|
000279d0  72 65 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |re filing system|
000279e0  20 64 65 70 65 6e 64 61  6e 74 2e 00 44 41 54 41  | dependant..DATA|
000279f0  e7 00 00 00 4f 53 5f 46  69 6c 65 20 31 31 0a 43  |....OS_File 11.C|
00027a00  72 65 61 74 65 20 61 20  73 74 61 6d 70 65 64 20  |reate a stamped |
00027a10  65 6d 70 74 79 20 66 69  6c 65 0a 0a 3d 3e 09 52  |empty file..=>.R|
00027a20  30 20 3d 20 31 31 0a 09  52 31 20 3d 20 70 74 72  |0 = 11..R1 = ptr|
00027a30  20 74 6f 20 6e 6f 6e 2d  77 69 6c 64 63 61 72 64  | to non-wildcard|
00027a40  65 64 20 6f 62 6a 65 63  74 20 6e 61 6d 65 0a 09  |ed object name..|
00027a50  52 32 20 3d 20 66 69 6c  65 20 74 79 70 65 0a 09  |R2 = file type..|
00027a60  52 34 20 3d 20 30 0a 09  52 35 20 3d 20 73 69 7a  |R4 = 0..R5 = siz|
00027a70  65 20 6f 66 20 66 69 6c  65 0a 09 0a 54 68 69 73  |e of file...This|
00027a80  20 53 57 49 20 61 74 74  65 6d 70 74 73 20 74 6f  | SWI attempts to|
00027a90  20 63 72 65 61 74 65 20  61 20 73 74 61 6d 70 65  | create a stampe|
00027aa0  64 20 66 69 6c 65 20 6f  66 20 61 20 67 69 76 65  |d file of a give|
00027ab0  6e 20 73 69 7a 65 20 77  69 74 68 20 61 20 70 61  |n size with a pa|
00027ac0  72 74 69 63 75 6c 61 72  20 66 69 6c 65 20 74 79  |rticular file ty|
00027ad0  70 65 2e 00 44 41 54 41  f7 00 00 00 4f 53 5f 46  |pe..DATA....OS_F|
00027ae0  69 6c 65 20 37 0a 43 72  65 61 74 65 20 61 6e 20  |ile 7.Create an |
00027af0  75 6e 2d 73 74 61 6d 70  65 64 20 65 6d 70 74 79  |un-stamped empty|
00027b00  20 66 69 6c 65 0a 0a 3d  3e 09 52 30 20 3d 20 37  | file..=>.R0 = 7|
00027b10  0a 09 52 31 20 3d 20 70  74 72 20 74 6f 20 6e 6f  |..R1 = ptr to no|
00027b20  6e 2d 77 69 6c 64 63 61  72 64 65 64 20 6f 62 6a  |n-wildcarded obj|
00027b30  65 63 74 20 6e 61 6d 65  0a 09 52 32 20 3d 20 6c  |ect name..R2 = l|
00027b40  6f 61 64 20 61 64 64 72  65 73 73 0a 09 52 33 20  |oad address..R3 |
00027b50  3d 20 65 78 65 63 20 61  64 64 72 65 73 73 0a 09  |= exec address..|
00027b60  52 34 20 3d 20 30 0a 09  52 35 20 3d 20 73 69 7a  |R4 = 0..R5 = siz|
00027b70  65 20 6f 66 20 66 69 6c  65 0a 09 0a 54 68 69 73  |e of file...This|
00027b80  20 53 57 49 20 61 74 74  65 6d 70 74 73 20 74 6f  | SWI attempts to|
00027b90  20 63 72 65 61 74 65 20  61 20 66 69 6c 65 20 6f  | create a file o|
00027ba0  66 20 61 20 67 69 76 65  6e 20 73 69 7a 65 20 77  |f a given size w|
00027bb0  69 74 68 20 61 20 70 61  72 74 69 63 75 6c 61 72  |ith a particular|
00027bc0  20 66 69 6c 65 20 74 79  70 65 2e 00 44 41 54 41  | file type..DATA|
00027bd0  a1 00 00 00 4f 53 5f 46  69 6c 65 20 38 0a 43 72  |....OS_File 8.Cr|
00027be0  65 61 74 65 20 61 20 64  69 72 65 63 74 6f 72 79  |eate a directory|
00027bf0  0a 0a 3d 3e 09 52 30 20  3d 20 38 0a 09 52 31 20  |..=>.R0 = 8..R1 |
00027c00  3d 20 70 74 72 20 74 6f  20 6e 6f 6e 2d 77 69 6c  |= ptr to non-wil|
00027c10  64 63 61 72 64 65 64 20  66 69 6c 65 6e 61 6d 65  |dcarded filename|
00027c20  0a 09 52 34 20 3d 20 6e  75 6d 62 65 72 20 6f 66  |..R4 = number of|
00027c30  20 65 6e 74 72 69 65 73  0a 0a 49 74 20 69 73 20  | entries..It is |
00027c40  6e 6f 74 20 61 6e 20 65  72 72 6f 72 20 69 66 20  |not an error if |
00027c50  74 68 65 20 64 69 72 65  63 74 6f 72 79 20 61 6c  |the directory al|
00027c60  72 65 61 64 79 20 65 78  69 73 74 73 2e 00 00 00  |ready exists....|
00027c70  44 41 54 41 ea 01 00 00  4f 53 5f 46 69 6c 65 20  |DATA....OS_File |
00027c80  32 30 2c 32 31 2c 32 32  20 61 6e 64 20 32 33 0a  |20,21,22 and 23.|
00027c90  52 65 61 64 20 63 61 74  61 6c 6f 67 75 65 20 69  |Read catalogue i|
00027ca0  6e 66 6f 20 66 6f 72 20  6e 61 6d 65 64 20 73 74  |nfo for named st|
00027cb0  61 6d 70 65 64 20 6f 62  6a 65 63 74 0a 0a 3d 3e  |amped object..=>|
00027cc0  09 52 30 20 3d 20 32 30  2c 32 31 2c 32 32 20 6f  |.R0 = 20,21,22 o|
00027cd0  72 20 32 33 0a 09 52 31  20 3d 20 70 6f 69 6e 74  |r 23..R1 = point|
00027ce0  65 72 20 74 6f 20 66 69  6c 65 6e 61 6d 65 0a 09  |er to filename..|
00027cf0  69 66 20 52 30 20 3d 20  32 30 20 3a 20 75 73 65  |if R0 = 20 : use|
00027d00  20 46 69 6c 65 24 50 61  74 68 0a 09 69 66 20 52  | File$Path..if R|
00027d10  30 20 3d 20 32 31 20 3a  20 52 34 20 3d 20 70 6f  |0 = 21 : R4 = po|
00027d20  69 6e 74 65 72 20 74 6f  20 70 61 74 68 20 73 74  |inter to path st|
00027d30  72 69 6e 67 0a 09 69 66  20 52 30 20 3d 20 32 32  |ring..if R0 = 22|
00027d40  20 3a 20 52 34 20 3d 20  70 6f 69 6e 74 65 72 20  | : R4 = pointer |
00027d50  74 6f 20 70 61 74 68 20  76 61 72 69 61 62 6c 65  |to path variable|
00027d60  0a 09 69 66 20 52 30 20  3d 20 32 33 20 3a 20 75  |..if R0 = 23 : u|
00027d70  73 65 20 6e 6f 20 70 61  74 68 0a 0a 5c 3c 3d 09  |se no path..\<=.|
00027d80  52 30 20 3d 20 3c 6f 62  6a 65 63 74 20 74 79 70  |R0 = <object typ|
00027d90  65 3d 3e 6f 73 5f 66 69  6c 65 63 3e 0a 09 52 32  |e=>os_filec>..R2|
00027da0  20 3d 20 3c 6c 6f 61 64  20 61 64 64 72 65 73 73  | = <load address|
00027db0  3d 3e 6f 73 5f 66 69 6c  65 61 3e 0a 09 52 33 20  |=>os_filea>..R3 |
00027dc0  3d 20 3c 65 78 65 63 20  61 64 64 72 65 73 73 3d  |= <exec address=|
00027dd0  3e 6f 73 5f 66 69 6c 65  61 3e 0a 09 52 34 20 3d  |>os_filea>..R4 =|
00027de0  20 6f 62 6a 65 63 74 20  6c 65 6e 67 74 68 0a 09  | object length..|
00027df0  52 35 20 3d 20 3c 6f 62  6a 65 63 74 20 61 74 74  |R5 = <object att|
00027e00  72 69 62 75 74 65 73 3d  3e 6f 73 5f 66 69 6c 65  |ributes=>os_file|
00027e10  62 3e 0a 09 52 36 20 3d  20 3c 66 69 6c 65 74 79  |b>..R6 = <filety|
00027e20  70 65 3d 3e 46 69 6c 65  74 79 70 65 73 3a 21 52  |pe=>Filetypes:!R|
00027e30  6f 6f 74 3e 0a 09 0a 52  32 2d 52 35 20 63 6f 72  |oot>...R2-R5 cor|
00027e40  72 75 70 74 65 64 20 69  66 20 6f 62 6a 65 63 74  |rupted if object|
00027e50  20 6e 6f 74 20 66 6f 75  6e 64 00 00 44 41 54 41  | not found..DATA|
00027e60  99 01 00 00 4f 62 6a 65  63 74 20 74 79 70 65 73  |....Object types|
00027e70  0a 54 79 70 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |.Type.Meaning.#L|
00027e80  69 6e 65 0a 30 09 4f 62  6a 65 63 74 20 6e 6f 74  |ine.0.Object not|
00027e90  20 66 6f 75 6e 64 0a 31  09 46 69 6c 65 0a 32 09  | found.1.File.2.|
00027ea0  44 69 72 65 63 74 6f 72  79 0a 33 09 49 6d 61 67  |Directory.3.Imag|
00027eb0  65 0a 0a 49 6d 61 67 65  20 66 69 6c 65 73 20 6f  |e..Image files o|
00027ec0  6e 6c 79 20 65 78 69 73  74 20 75 6e 64 65 72 20  |nly exist under |
00027ed0  52 4f 33 2e 20 54 68 65  79 20 61 72 65 20 74 79  |RO3. They are ty|
00027ee0  70 65 64 20 66 69 6c 65  73 20 77 68 69 63 68 20  |ped files which |
00027ef0  63 61 6e 20 62 65 20 61  63 63 65 73 73 65 64 20  |can be accessed |
00027f00  61 73 20 6e 6f 72 6d 61  6c 20 64 69 72 65 63 74  |as normal direct|
00027f10  6f 72 69 65 73 2c 20 61  6e 64 20 74 68 65 72 65  |ories, and there|
00027f20  66 6f 72 65 20 68 61 76  65 20 71 75 61 6c 69 74  |fore have qualit|
00027f30  69 65 73 20 6f 66 20 62  6f 74 68 20 66 69 6c 65  |ies of both file|
00027f40  73 20 61 6e 64 20 64 69  72 65 63 74 6f 72 69 65  |s and directorie|
00027f50  73 2e 20 49 6d 61 67 65  73 20 6d 61 79 20 62 65  |s. Images may be|
00027f60  20 6c 6f 63 6b 65 64 20  74 6f 20 70 72 65 76 65  | locked to preve|
00027f70  6e 74 20 6d 6f 64 69 66  69 63 61 74 69 6f 6e 20  |nt modification |
00027f80  6f 66 20 74 68 65 69 72  20 65 6e 74 69 72 65 20  |of their entire |
00027f90  63 6f 6e 74 65 6e 74 73  2c 20 61 6e 64 20 64 65  |contents, and de|
00027fa0  6c 65 74 69 6f 6e 20 77  69 6c 6c 20 64 65 6c 65  |letion will dele|
00027fb0  74 65 20 74 68 65 20 77  68 6f 6c 65 20 74 72 65  |te the whole tre|
00027fc0  65 20 77 69 74 68 6f 75  74 20 63 68 65 63 6b 69  |e without checki|
00027fd0  6e 67 20 66 6f 72 20 6c  6f 63 6b 65 64 20 66 69  |ng for locked fi|
00027fe0  6c 65 73 20 77 69 74 68  69 6e 20 74 68 65 20 74  |les within the t|
00027ff0  72 65 65 2e 0a 00 00 00  44 41 54 41 b4 01 00 00  |ree.....DATA....|
00028000  4f 53 5f 46 69 6c 65 20  32 34 20 20 28 26 30 38  |OS_File 24  (&08|
00028010  29 0a 3d 3e 09 52 30 20  3d 09 32 34 0a 09 52 31  |).=>.R0 =.24..R1|
00028020  20 3d 09 70 74 72 20 74  6f 20 66 69 6c 65 20 6e  | =.ptr to file n|
00028030  61 6d 65 0a 5c 3c 3d 09  52 32 20 3d 09 6e 61 74  |ame.\<=.R2 =.nat|
00028040  75 72 61 6c 20 62 6c 6f  63 6b 20 73 69 7a 65 20  |ural block size |
00028050  69 6e 20 62 79 74 65 73  0a 23 6c 69 6e 65 0a 2a  |in bytes.#line.*|
00028060  55 73 65 2a 3a 09 54 68  69 73 20 63 61 6c 6c 20  |Use*:.This call |
00028070  61 6c 6c 6f 77 73 20 79  6f 75 20 74 6f 20 66 69  |allows you to fi|
00028080  6e 64 20 74 68 65 20 2f  6e 61 74 75 72 61 6c 20  |nd the /natural |
00028090  62 6c 6f 63 6b 20 73 69  7a 65 2f 20 6f 66 20 61  |block size/ of a|
000280a0  20 67 69 76 65 6e 20 66  69 6c 65 2e 20 57 68 65  | given file. Whe|
000280b0  6e 20 79 6f 75 20 63 72  65 61 74 65 20 6f 72 20  |n you create or |
000280c0  65 78 74 65 6e 64 20 61  20 66 69 6c 65 2c 20 64  |extend a file, d|
000280d0  69 73 63 20 73 70 61 63  65 20 63 61 6e 20 6f 6e  |isc space can on|
000280e0  6c 79 20 62 65 20 61 6c  6c 6f 63 61 74 65 64 20  |ly be allocated |
000280f0  69 6e 20 63 68 75 6e 6b  73 20 6f 66 20 61 20 6d  |in chunks of a m|
00028100  69 6e 69 6d 75 6d 20 73  69 7a 65 20 28 35 31 32  |inimum size (512|
00028110  20 62 79 74 65 73 2c 20  66 6f 72 20 65 78 61 6d  | bytes, for exam|
00028120  70 6c 65 29 2e 20 49 66  20 79 6f 75 72 20 66 69  |ple). If your fi|
00028130  6c 65 20 69 73 20 6a 75  73 74 20 31 20 62 79 74  |le is just 1 byt|
00028140  65 20 6c 6f 6e 67 20 66  6f 72 20 65 78 61 6d 70  |e long for examp|
00028150  6c 65 2c 20 35 31 31 20  62 79 74 65 73 20 6f 66  |le, 511 bytes of|
00028160  20 64 69 73 63 20 73 70  61 63 65 20 6d 61 79 20  | disc space may |
00028170  68 61 76 65 20 74 6f 20  62 65 20 77 61 73 74 65  |have to be waste|
00028180  64 20 61 66 74 65 72 20  69 74 20 69 66 20 74 68  |d after it if th|
00028190  65 20 6e 61 74 75 72 61  6c 20 62 6c 6f 63 6b 20  |e natural block |
000281a0  73 69 7a 65 20 69 73 20  35 31 32 2e 44 49 52 24  |size is 512.DIR$|
000281b0  10 03 00 00 10 03 00 00  bc 84 02 00 47 ff ff ff  |............G...|
000281c0  4f 6e 16 0a 0a 09 00 00  13 00 00 00 00 00 00 00  |On..............|
000281d0  21 52 6f 6f 74 00 00 00  c8 8d 02 00 46 fd ff ff  |!Root.......F...|
000281e0  a1 82 bc 88 78 02 00 00  13 00 00 00 00 00 00 00  |....x...........|
000281f0  46 6c 61 67 73 00 00 00  40 90 02 00 46 fd ff ff  |Flags...@...F...|
00028200  a1 6d 83 1a 0b 01 00 00  13 00 00 00 00 00 00 00  |.m..............|
00028210  44 65 73 63 72 69 70 74  6f 72 00 00 4c 91 02 00  |Descriptor..L...|
00028220  46 fd ff ff c9 c6 83 1a  25 01 00 00 13 00 00 00  |F.......%.......|
00028230  00 00 00 00 32 37 00 00  74 92 02 00 46 fd ff ff  |....27..t...F...|
00028240  7f 4a 84 1a 55 01 00 00  13 00 00 00 00 00 00 00  |.J..U...........|
00028250  32 38 00 00 cc 93 02 00  45 fd ff ff 15 0a ea ff  |28......E.......|
00028260  bf 00 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |............0...|
00028270  8c 94 02 00 45 fd ff ff  5e b0 e6 ff 16 01 00 00  |....E...^.......|
00028280  13 00 00 00 00 00 00 00  31 00 00 00 a4 95 02 00  |........1.......|
00028290  46 fd ff ff 87 64 37 56  c4 00 00 00 13 00 00 00  |F....d7V........|
000282a0  00 00 00 00 31 38 00 00  68 96 02 00 45 fd ff ff  |....18..h...E...|
000282b0  61 05 ea ff 03 01 00 00  13 00 00 00 00 00 00 00  |a...............|
000282c0  33 31 00 00 6c 97 02 00  46 fd ff ff 76 c0 84 1a  |31..l...F...v...|
000282d0  4e 01 00 00 13 00 00 00  00 00 00 00 32 36 00 00  |N...........26..|
000282e0  bc 98 02 00 46 fd ff ff  45 e3 9f 96 7b 00 00 00  |....F...E...{...|
000282f0  13 00 00 00 00 00 00 00  32 35 00 00 38 99 02 00  |........25..8...|
00028300  46 fd ff ff 25 1f 5f f5  ce 02 00 00 13 00 00 00  |F...%._.........|
00028310  00 00 00 00 31 33 00 00  08 9c 02 00 47 fd ff ff  |....13......G...|
00028320  66 4c 16 0a 98 01 00 00  13 00 00 00 00 00 00 00  |fL..............|
00028330  33 33 00 00 a0 9d 02 00  47 fd ff ff 32 55 16 0a  |33......G...2U..|
00028340  2e 02 00 00 13 00 00 00  00 00 00 00 33 37 00 00  |............37..|
00028350  d0 9f 02 00 47 fd ff ff  ea 15 16 0a 2c 01 00 00  |....G.......,...|
00028360  13 00 00 00 00 00 00 00  33 38 00 00 fc a0 02 00  |........38......|
00028370  47 fd ff ff 2f 47 16 0a  92 00 00 00 13 00 00 00  |G.../G..........|
00028380  00 00 00 00 33 39 00 00  90 a1 02 00 47 fd ff ff  |....39......G...|
00028390  73 45 16 0a ac 00 00 00  13 00 00 00 00 00 00 00  |sE..............|
000283a0  34 30 00 00 3c a2 02 00  47 fd ff ff f1 3f 16 0a  |40..<...G....?..|
000283b0  5f 00 00 00 13 00 00 00  00 00 00 00 34 33 00 00  |_...........43..|
000283c0  9c a2 02 00 47 fd ff ff  53 3e 16 0a 61 00 00 00  |....G...S>..a...|
000283d0  13 00 00 00 00 00 00 00  34 34 00 00 00 a3 02 00  |........44......|
000283e0  47 fd ff ff 96 3c 16 0a  5f 00 00 00 13 00 00 00  |G....<.._.......|
000283f0  00 00 00 00 34 35 00 00  60 a3 02 00 47 fd ff ff  |....45..`...G...|
00028400  f3 3a 16 0a 96 00 00 00  13 00 00 00 00 00 00 00  |.:..............|
00028410  34 37 00 00 f8 a3 02 00  47 fd ff ff 1d 39 16 0a  |47......G....9..|
00028420  9d 00 00 00 13 00 00 00  00 00 00 00 34 38 00 00  |............48..|
00028430  98 a4 02 00 47 fd ff ff  85 37 16 0a e2 00 00 00  |....G....7......|
00028440  13 00 00 00 00 00 00 00  34 39 00 00 7c a5 02 00  |........49..|...|
00028450  47 fd ff ff 7a 35 16 0a  ae 00 00 00 13 00 00 00  |G...z5..........|
00028460  00 00 00 00 35 30 00 00  2c a6 02 00 47 fd ff ff  |....50..,...G...|
00028470  1c 33 16 0a 75 02 00 00  13 00 00 00 00 00 00 00  |.3..u...........|
00028480  35 32 00 00 a4 a8 02 00  47 fd ff ff 21 2e 16 0a  |52......G...!...|
00028490  b1 01 00 00 13 00 00 00  00 00 00 00 35 33 00 00  |............53..|
000284a0  58 aa 02 00 47 fd ff ff  32 2a 16 0a f2 02 00 00  |X...G...2*......|
000284b0  13 00 00 00 00 00 00 00  35 34 00 00 44 41 54 41  |........54..DATA|
000284c0  0a 09 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
000284d0  20 20 28 26 32 39 29 0a  23 50 61 72 65 6e 74 20  |  (&29).#Parent |
000284e0  4f 53 5f 0a 54 68 69 73  20 53 57 49 20 63 6f 6e  |OS_.This SWI con|
000284f0  74 72 6f 6c 73 20 74 68  65 20 66 69 6c 69 6e 67  |trols the filing|
00028500  20 73 79 73 74 65 6d 20  6d 61 6e 61 67 65 72 20  | system manager |
00028510  61 6e 64 20 74 68 65 20  66 69 6c 69 6e 67 20 73  |and the filing s|
00028520  79 73 74 65 6d 73 20 74  68 65 6d 73 65 6c 76 65  |ystems themselve|
00028530  73 2e 0a 41 63 74 69 6f  6e 20 74 61 6b 65 6e 20  |s..Action taken |
00028540  64 65 70 65 6e 64 73 20  6f 6e 20 52 30 3a 0a 0a  |depends on R0:..|
00028550  23 49 6e 64 65 6e 74 20  31 0a 23 54 61 62 6c 65  |#Indent 1.#Table|
00028560  20 43 6f 6c 75 6d 6e 73  20 32 0a 30 30 20 26 30  | Columns 2.00 &0|
00028570  30 20 20 3c 53 65 74 20  63 75 72 72 65 6e 74 20  |0  <Set current |
00028580  64 69 72 3d 3e 6f 73 5f  66 73 63 6f 6e 74 72 6f  |dir=>os_fscontro|
00028590  6c 30 3e 0a 30 31 20 26  30 31 20 20 3c 53 65 74  |l0>.01 &01  <Set|
000285a0  20 6c 69 62 72 61 72 79  20 64 69 72 3d 3e 6f 73  | library dir=>os|
000285b0  5f 66 73 63 6f 6e 74 72  6f 6c 31 3e 0a 30 32 20  |_fscontrol1>.02 |
000285c0  26 30 32 20 20 49 6e 66  6f 72 6d 20 6f 66 20 73  |&02  Inform of s|
000285d0  74 61 72 74 20 6f 66 20  6e 65 77 20 61 70 70 0a  |tart of new app.|
000285e0  30 33 20 26 30 33 20 20  49 6e 74 65 72 6e 61 6c  |03 &03  Internal|
000285f0  0a 30 34 20 26 30 34 20  20 52 75 6e 20 61 20 66  |.04 &04  Run a f|
00028600  69 6c 65 0a 30 35 20 26  30 35 20 20 43 61 74 61  |ile.05 &05  Cata|
00028610  6c 6f 67 75 65 20 61 20  64 69 72 0a 30 36 20 26  |logue a dir.06 &|
00028620  30 36 20 20 45 78 61 6d  69 6e 65 20 63 75 72 72  |06  Examine curr|
00028630  65 6e 74 20 64 69 72 0a  30 37 20 26 30 37 20 20  |ent dir.07 &07  |
00028640  43 61 74 61 6c 6f 67 75  65 20 6c 69 62 72 61 72  |Catalogue librar|
00028650  79 0a 30 38 20 26 30 38  20 20 45 78 61 6d 69 6e  |y.08 &08  Examin|
00028660  65 20 6c 69 62 72 61 72  79 0a 30 39 20 26 30 39  |e library.09 &09|
00028670  20 20 45 78 61 6d 69 6e  65 20 6f 62 6a 65 63 74  |  Examine object|
00028680  73 0a 31 30 20 26 30 41  20 20 53 65 74 20 46 53  |s.10 &0A  Set FS|
00028690  20 6f 70 74 69 6f 6e 73  0a 31 31 20 26 30 42 20  | options.11 &0B |
000286a0  20 53 65 74 20 74 65 6d  70 6f 72 61 72 79 20 46  | Set temporary F|
000286b0  53 0a 31 32 20 26 30 43  20 20 41 64 64 20 61 20  |S.12 &0C  Add a |
000286c0  46 53 0a 31 33 20 26 30  44 20 20 3c 43 68 65 63  |FS.13 &0D  <Chec|
000286d0  6b 20 66 6f 72 20 46 53  3d 3e 6f 73 5f 66 73 63  |k for FS=>os_fsc|
000286e0  6f 6e 74 72 6f 6c 31 33  3e 0a 31 34 20 26 30 45  |ontrol13>.14 &0E|
000286f0  20 20 53 65 6c 65 63 74  20 46 53 0a 31 35 20 26  |  Select FS.15 &|
00028700  30 46 20 20 42 6f 6f 74  20 66 72 6f 6d 20 46 53  |0F  Boot from FS|
00028710  0a 31 36 20 26 31 30 20  20 52 65 6d 6f 76 65 20  |.16 &10  Remove |
00028720  46 53 0a 31 37 20 26 31  31 20 20 41 64 64 20 73  |FS.17 &11  Add s|
00028730  65 63 6f 6e 64 61 72 79  20 6d 6f 64 75 6c 65 0a  |econdary module.|
00028740  31 38 20 26 31 32 20 20  3c 66 69 6c 65 74 79 70  |18 &12  <filetyp|
00028750  65 20 5c 3d 5c 3e 20 74  65 78 74 3d 3e 4f 53 5f  |e \=\> text=>OS_|
00028760  46 53 43 6f 6e 74 72 6f  6c 31 38 3e 0a 31 39 20  |FSControl18>.19 |
00028770  26 31 33 20 20 52 65 73  74 6f 72 65 20 63 75 72  |&13  Restore cur|
00028780  72 65 6e 74 20 46 53 0a  32 30 20 26 31 34 20 20  |rent FS.20 &14  |
00028790  52 65 61 64 20 6c 6f 63  61 74 69 6f 6e 20 6f 66  |Read location of|
000287a0  20 74 65 6d 70 20 46 53  0a 32 31 20 26 31 35 20  | temp FS.21 &15 |
000287b0  20 52 65 74 75 72 6e 20  61 20 66 69 6c 65 20 68  | Return a file h|
000287c0  61 6e 64 6c 65 0a 32 32  20 26 31 36 20 20 43 6c  |andle.22 &16  Cl|
000287d0  6f 73 65 20 61 6c 6c 20  6f 70 65 6e 20 66 69 6c  |ose all open fil|
000287e0  65 73 0a 32 33 20 26 31  37 20 20 53 68 75 74 64  |es.23 &17  Shutd|
000287f0  6f 77 6e 20 46 53 0a 32  34 20 26 31 38 20 20 53  |own FS.24 &18  S|
00028800  65 74 20 61 74 74 72 69  62 73 20 6f 66 20 6f 62  |et attribs of ob|
00028810  6a 65 63 74 73 0a 32 35  20 26 31 39 20 20 3c 52  |jects.25 &19  <R|
00028820  65 6e 61 6d 65 20 6f 62  6a 65 63 74 3d 3e 4f 53  |ename object=>OS|
00028830  5f 46 53 43 6f 6e 74 72  6f 6c 32 35 3e 0a 32 36  |_FSControl25>.26|
00028840  20 26 31 41 20 20 3c 43  6f 70 79 20 6f 62 6a 65  | &1A  <Copy obje|
00028850  63 74 73 3d 3e 4f 53 5f  46 53 43 6f 6e 74 72 6f  |cts=>OS_FSContro|
00028860  6c 32 36 3e 0a 32 37 20  26 31 42 20 20 3c 57 69  |l26>.27 &1B  <Wi|
00028870  70 65 20 6f 62 6a 65 63  74 73 3d 3e 4f 53 5f 46  |pe objects=>OS_F|
00028880  53 43 6f 6e 74 72 6f 6c  32 37 3e 0a 32 38 20 26  |SControl27>.28 &|
00028890  31 43 20 20 3c 43 6f 75  6e 74 20 6f 62 6a 65 63  |1C  <Count objec|
000288a0  74 73 3d 3e 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |ts=>OS_FSControl|
000288b0  32 38 3e 0a 32 39 20 26  31 44 20 20 49 6e 74 65  |28>.29 &1D  Inte|
000288c0  72 6e 61 6c 0a 33 30 20  26 31 45 20 20 49 6e 74  |rnal.30 &1E  Int|
000288d0  65 72 6e 61 6c 0a 33 31  20 26 31 46 20 20 3c 74  |ernal.31 &1F  <t|
000288e0  65 78 74 20 5c 3d 5c 3e  20 66 69 6c 65 74 79 70  |ext \=\> filetyp|
000288f0  65 3d 3e 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 33  |e=>OS_FSControl3|
00028900  31 3e 0a 33 32 20 26 32  30 20 20 4f 75 74 70 75  |1>.32 &20  Outpu|
00028910  74 20 61 20 6c 69 73 74  20 6f 66 20 6f 62 6a 65  |t a list of obje|
00028920  63 74 20 6e 61 6d 65 73  20 61 6e 64 20 69 6e 66  |ct names and inf|
00028930  6f 72 6d 61 74 69 6f 6e  0a 33 33 20 26 32 31 20  |ormation.33 &21 |
00028940  20 3c 43 6f 6e 76 65 72  74 20 61 20 66 69 6c 69  | <Convert a fili|
00028950  6e 67 20 73 79 73 74 65  6d 20 6e 75 6d 62 65 72  |ng system number|
00028960  20 74 6f 20 61 20 6e 61  6d 65 3d 3e 4f 53 5f 46  | to a name=>OS_F|
00028970  53 43 6f 6e 74 72 6f 6c  33 33 3e 0a 33 34 20 26  |SControl33>.34 &|
00028980  32 32 20 20 52 65 73 65  72 76 65 64 0a 33 35 20  |22  Reserved.35 |
00028990  26 32 33 20 20 41 64 64  20 61 6e 20 69 6d 61 67  |&23  Add an imag|
000289a0  65 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 0a  |e filing system.|
000289b0  33 36 20 26 32 34 20 20  52 65 6d 6f 76 65 20 61  |36 &24  Remove a|
000289c0  6e 20 69 6d 61 67 65 20  66 69 6c 69 6e 67 20 73  |n image filing s|
000289d0  79 73 74 65 6d 0a 33 37  20 26 32 35 20 20 3c 43  |ystem.37 &25  <C|
000289e0  61 6e 6f 6e 69 63 61 6c  69 73 65 20 70 61 74 68  |anonicalise path|
000289f0  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 33 37  |=>OS_FSControl37|
00028a00  3e 0a 33 38 20 26 32 36  20 20 3c 45 78 74 72 61  |>.38 &26  <Extra|
00028a10  63 74 20 66 69 6c 65 74  79 70 65 20 66 72 6f 6d  |ct filetype from|
00028a20  20 66 69 6c 65 20 69 6e  66 6f 72 6d 61 74 69 6f  | file informatio|
00028a30  6e 3d 3e 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 33  |n=>OS_FSControl3|
00028a40  38 3e 0a 33 39 20 26 32  37 20 20 3c 53 65 74 20  |8>.39 &27  <Set |
00028a50  55 73 65 72 20 52 6f 6f  74 20 44 69 72 65 63 74  |User Root Direct|
00028a60  6f 72 79 3d 3e 4f 53 5f  46 53 43 6f 6e 74 72 6f  |ory=>OS_FSContro|
00028a70  6c 33 39 3e 0a 34 30 20  26 32 38 20 20 3c 53 77  |l39>.40 &28  <Sw|
00028a80  61 70 20 63 75 72 72 65  6e 74 20 61 6e 64 20 70  |ap current and p|
00028a90  72 65 76 69 6f 75 73 20  64 69 72 65 63 74 6f 72  |revious director|
00028aa0  69 65 73 3d 3e 4f 53 5f  46 53 43 6f 6e 74 72 6f  |ies=>OS_FSContro|
00028ab0  6c 34 30 3e 0a 34 31 20  26 32 39 20 20 52 65 74  |l40>.41 &29  Ret|
00028ac0  75 72 6e 20 64 65 66 65  63 74 20 6c 69 73 74 20  |urn defect list |
00028ad0  66 6f 72 20 61 6e 20 69  6d 61 67 65 20 66 69 6c  |for an image fil|
00028ae0  65 0a 34 32 20 26 32 41  20 20 4d 61 70 20 6f 75  |e.42 &2A  Map ou|
00028af0  74 20 64 65 66 65 63 74  20 66 72 6f 6d 20 61 6e  |t defect from an|
00028b00  20 69 6d 61 67 65 20 66  69 6c 65 0a 34 33 20 26  | image file.43 &|
00028b10  32 42 20 20 3c 55 6e 73  65 74 20 74 68 65 20 43  |2B  <Unset the C|
00028b20  75 72 72 65 6e 74 20 44  69 72 65 63 74 6f 72 79  |urrent Directory|
00028b30  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 34 33  |=>OS_FSControl43|
00028b40  3e 0a 34 34 20 26 32 43  20 20 3c 55 6e 73 65 74  |>.44 &2C  <Unset|
00028b50  20 74 68 65 20 55 73 65  72 20 52 6f 6f 74 20 44  | the User Root D|
00028b60  69 72 65 63 74 6f 72 79  3d 3e 4f 53 5f 46 53 43  |irectory=>OS_FSC|
00028b70  6f 6e 74 72 6f 6c 34 34  3e 0a 34 35 20 26 32 44  |ontrol44>.45 &2D|
00028b80  20 20 3c 55 6e 73 65 74  20 74 68 65 20 4c 69 62  |  <Unset the Lib|
00028b90  72 61 72 79 20 44 69 72  65 63 74 6f 72 79 3d 3e  |rary Directory=>|
00028ba0  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 34 35 3e 0a  |OS_FSControl45>.|
00028bb0  34 36 20 26 32 45 20 20  52 65 74 75 72 6e 20 2f  |46 &2E  Return /|
00028bc0  75 73 65 64 20 73 70 61  63 65 20 6d 61 70 2f 20  |used space map/ |
00028bd0  6f 66 20 69 6d 61 67 65  20 66 69 6c 65 0a 34 37  |of image file.47|
00028be0  20 26 32 46 20 20 3c 52  65 61 64 20 62 6f 6f 74  | &2F  <Read boot|
00028bf0  20 6f 70 74 69 6f 6e 20  66 6f 72 20 64 69 73 63  | option for disc|
00028c00  20 6f 72 20 69 6d 61 67  65 20 66 69 6c 65 3d 3e  | or image file=>|
00028c10  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 34 37 3e 0a  |OS_FSControl47>.|
00028c20  34 38 20 26 33 30 20 20  3c 57 72 69 74 65 20 62  |48 &30  <Write b|
00028c30  6f 6f 74 20 6f 70 74 69  6f 6e 20 66 6f 72 20 64  |oot option for d|
00028c40  69 73 63 20 6f 72 20 69  6d 61 67 65 20 66 69 6c  |isc or image fil|
00028c50  65 3d 3e 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 34  |e=>OS_FSControl4|
00028c60  38 3e 0a 34 39 20 26 33  31 20 20 3c 52 65 61 64  |8>.49 &31  <Read|
00028c70  20 66 72 65 65 20 73 70  61 63 65 20 66 6f 72 20  | free space for |
00028c80  64 69 73 63 20 6f 72 20  69 6d 61 67 65 20 66 69  |disc or image fi|
00028c90  6c 65 3d 3e 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |le=>OS_FSControl|
00028ca0  34 39 3e 0a 35 30 20 26  33 32 20 20 3c 52 65 6e  |49>.50 &32  <Ren|
00028cb0  61 6d 65 20 64 69 73 63  20 6f 72 20 69 6d 61 67  |ame disc or imag|
00028cc0  65 20 66 69 6c 65 3d 3e  4f 53 5f 46 53 43 6f 6e  |e file=>OS_FSCon|
00028cd0  74 72 6f 6c 35 30 3e 0a  35 31 20 26 33 33 20 20  |trol50>.51 &33  |
00028ce0  52 65 71 75 65 73 74 20  75 70 64 61 74 65 20 6f  |Request update o|
00028cf0  66 20 69 6d 61 67 65 20  66 69 6c 65 20 73 74 61  |f image file sta|
00028d00  6d 70 0a 35 32 20 26 33  34 20 20 3c 46 69 6e 64  |mp.52 &34  <Find|
00028d10  20 6f 62 6a 65 63 74 20  61 74 20 6f 66 66 73 65  | object at offse|
00028d20  74 20 77 69 74 68 69 6e  20 69 6d 61 67 65 20 66  |t within image f|
00028d30  69 6c 65 3d 3e 4f 53 5f  46 53 43 6f 6e 74 72 6f  |ile=>OS_FSContro|
00028d40  6c 35 32 3e 0a 35 33 20  26 33 35 20 20 3c 53 65  |l52>.53 &35  <Se|
00028d50  74 20 67 69 76 65 6e 20  64 69 72 65 63 74 6f 72  |t given director|
00028d60  79 20 74 6f 20 70 61 74  68 20 75 6e 63 68 65 63  |y to path unchec|
00028d70  6b 65 64 3d 3e 4f 53 5f  46 53 43 6f 6e 74 72 6f  |ked=>OS_FSContro|
00028d80  6c 35 33 3e 0a 35 34 20  26 33 36 20 20 3c 52 65  |l53>.54 &36  <Re|
00028d90  61 64 20 70 61 74 68 20  6f 66 20 67 69 76 65 6e  |ad path of given|
00028da0  20 64 69 72 65 63 74 6f  72 79 3d 3e 4f 53 5f 46  | directory=>OS_F|
00028db0  53 43 6f 6e 74 72 6f 6c  35 34 3e 0a 23 45 6e 64  |SControl54>.#End|
00028dc0  54 61 62 6c 65 0a 00 00  44 41 54 41 78 02 00 00  |Table...DATAx...|
00028dd0  46 6c 61 67 73 20 66 6f  72 20 66 69 6c 65 20 6f  |Flags for file o|
00028de0  70 65 72 61 74 69 6f 6e  73 0a 42 69 74 09 55 73  |perations.Bit.Us|
00028df0  65 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 0a  |e.Meaning.#Line.|
00028e00  30 09 43 57 4e 09 52 65  63 75 72 73 65 0a 31 09  |0.CWN.Recurse.1.|
00028e10  43 57 09 46 6f 72 63 65  0a 32 09 43 57 4e 09 47  |CW.Force.2.CWN.G|
00028e20  69 76 65 6e 20 74 69 6d  65 73 20 69 6e 20 62 6c  |iven times in bl|
00028e30  6f 63 6b 0a 33 09 43 57  4e 09 43 6f 6e 66 69 72  |ock.3.CWN.Confir|
00028e40  6d 20 6f 70 65 72 61 74  69 6f 6e 0a 34 09 43 57  |m operation.4.CW|
00028e50  4e 09 56 65 72 62 6f 73  65 0a 35 09 43 09 51 75  |N.Verbose.5.C.Qu|
00028e60  69 63 6b 20 28 75 73 65  20 61 70 70 6c 69 63 61  |ick (use applica|
00028e70  74 69 6f 6e 20 61 72 65  61 20 2d 20 6e 6f 74 20  |tion area - not |
00028e80  72 65 61 6c 6c 79 20 73  61 66 65 29 0a 36 09 43  |really safe).6.C|
00028e90  09 50 72 6f 6d 70 74 20  66 6f 72 20 6e 65 77 20  |.Prompt for new |
00028ea0  64 69 73 63 0a 37 09 43  09 44 65 6c 65 74 65 20  |disc.7.C.Delete |
00028eb0  61 66 74 65 72 20 63 6f  70 79 0a 38 09 43 57 4e  |after copy.8.CWN|
00028ec0  09 41 6c 6c 6f 77 20 70  72 69 6e 74 69 6e 67 20  |.Allow printing |
00028ed0  6f 66 20 70 72 6f 67 72  65 73 73 0a 39 09 43 09  |of progress.9.C.|
00028ee0  41 63 63 65 73 73 20 61  74 74 72 69 62 75 74 65  |Access attribute|
00028ef0  73 20 61 73 20 69 6e 20  73 6f 75 72 63 65 0a 31  |s as in source.1|
00028f00  30 09 43 09 53 74 61 6d  70 20 66 69 6c 65 73 0a  |0.C.Stamp files.|
00028f10  31 31 09 43 09 53 74 72  75 63 74 75 72 65 20 63  |11.C.Structure c|
00028f20  6f 70 79 20 6f 6e 6c 79  0a 31 32 09 43 09 4e 65  |opy only.12.C.Ne|
00028f30  77 65 72 20 74 68 61 6e  20 64 65 73 74 69 6e 61  |wer than destina|
00028f40  74 69 6f 6e 0a 31 33 09  43 09 3c 55 73 65 20 64  |tion.13.C.<Use d|
00028f50  65 73 63 72 69 70 74 6f  72 20 62 6c 6f 63 6b 3d  |escriptor block=|
00028f60  3e 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 44 65 73  |>OS_FSControlDes|
00028f70  63 72 69 70 74 6f 72 3e  0a 31 34 09 43 09 4c 6f  |criptor>.14.C.Lo|
00028f80  6f 6b 20 61 74 20 64 65  73 74 69 6e 61 74 69 6f  |ok at destinatio|
00028f90  6e 20 66 69 72 73 74 0a  0a 55 73 61 67 65 73 20  |n first..Usages |
00028fa0  3a 0a 43 09 43 6f 70 79  0a 57 09 57 69 70 65 0a  |:.C.Copy.W.Wipe.|
00028fb0  4e 09 43 6f 75 6e 74 20  28 4e 75 6d 62 65 72 29  |N.Count (Number)|
00028fc0  0a 0a 56 65 72 62 6f 73  65 20 77 69 6c 6c 20 6c  |..Verbose will l|
00028fd0  69 73 74 20 65 76 65 72  79 20 66 69 6c 65 20 69  |ist every file i|
00028fe0  74 20 70 65 72 66 6f 72  6d 73 20 61 6e 20 6f 70  |t performs an op|
00028ff0  65 72 61 74 69 6f 6e 20  6f 6e 2e 0a 41 6c 6c 6f  |eration on..Allo|
00029000  77 20 70 72 69 6e 74 69  6e 67 20 77 69 6c 6c 20  |w printing will |
00029010  70 72 69 6e 74 20 61 20  73 75 6d 6d 61 72 79 20  |print a summary |
00029020  6f 66 20 65 76 65 72 79  20 64 69 72 65 63 74 6f  |of every directo|
00029030  72 79 20 69 74 20 61 63  74 73 20 75 70 6f 6e 2e  |ry it acts upon.|
00029040  44 41 54 41 0b 01 00 00  46 69 6c 65 20 64 65 73  |DATA....File des|
00029050  63 72 69 70 74 6f 72 20  62 6c 6f 63 6b 73 0a 4f  |criptor blocks.O|
00029060  66 66 73 65 74 09 43 6f  6e 74 65 6e 74 73 0a 23  |ffset.Contents.#|
00029070  4c 69 6e 65 0a 30 09 41  64 64 72 65 73 73 20 6f  |Line.0.Address o|
00029080  66 20 66 69 6c 65 6e 61  6d 65 0a 34 09 4c 65 6e  |f filename.4.Len|
00029090  67 74 68 20 6f 66 20 66  69 6c 65 6e 61 6d 65 0a  |gth of filename.|
000290a0  0a 54 68 69 73 20 6d 61  79 20 6e 6f 74 20 62 65  |.This may not be|
000290b0  20 65 78 61 63 74 6c 79  20 77 68 61 74 20 74 68  | exactly what th|
000290c0  65 20 64 65 73 63 72 69  70 74 6f 72 20 63 6f 6e  |e descriptor con|
000290d0  73 69 73 74 73 20 6f 66  2e 20 49 74 20 69 73 20  |sists of. It is |
000290e0  6d 6f 73 74 20 6c 69 6b  65 6c 79 20 74 68 61 74  |most likely that|
000290f0  20 74 68 65 20 61 64 64  72 65 73 73 20 61 6e 64  | the address and|
00029100  20 6c 65 6e 67 74 68 73  20 61 72 65 20 72 65 70  | lengths are rep|
00029110  65 61 74 65 64 2c 20 6f  72 20 74 68 61 74 20 74  |eated, or that t|
00029120  68 65 20 61 64 64 72 65  73 73 20 69 73 20 74 68  |he address is th|
00029130  61 74 20 6f 66 20 61 20  62 6c 6f 63 6b 20 6f 66  |at of a block of|
00029140  20 66 69 6c 65 6e 61 6d  65 73 2e 00 44 41 54 41  | filenames..DATA|
00029150  25 01 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |%...OS_FSControl|
00029160  20 32 37 20 20 28 26 32  39 29 0a 3d 3e 09 52 30  | 27  (&29).=>.R0|
00029170  20 3d 20 32 37 0a 09 52  31 20 3d 20 61 6d 62 69  | = 27..R1 = ambi|
00029180  67 6f 75 73 20 66 69 6c  65 6e 61 6d 65 20 6f 66  |gous filename of|
00029190  20 66 69 6c 65 73 20 74  6f 20 77 69 70 65 0a 09  | files to wipe..|
000291a0  52 33 20 3d 20 3c 66 6c  61 67 73 3d 3e 4f 53 5f  |R3 = <flags=>OS_|
000291b0  46 53 43 6f 6e 74 72 6f  6c 46 6c 61 67 73 3e 0a  |FSControlFlags>.|
000291c0  09 52 34 20 3d 20 73 74  61 72 74 20 6c 6f 61 64  |.R4 = start load|
000291d0  0a 09 52 35 20 3d 20 73  74 61 72 74 20 65 78 65  |..R5 = start exe|
000291e0  63 0a 09 52 36 20 3d 20  65 6e 64 20 6c 6f 61 64  |c..R6 = end load|
000291f0  0a 09 52 37 20 3d 20 65  6e 64 20 65 78 65 63 0a  |..R7 = end exec.|
00029200  09 52 38 20 3d 20 3c 70  6f 69 6e 74 65 72 20 74  |.R8 = <pointer t|
00029210  6f 20 64 65 73 63 72 69  70 74 6f 72 3d 3e 4f 53  |o descriptor=>OS|
00029220  5f 46 53 43 6f 6e 74 72  6f 6c 44 65 73 63 72 69  |_FSControlDescri|
00029230  70 74 6f 72 3e 0a 0a 54  68 69 73 20 53 57 49 20  |ptor>..This SWI |
00029240  61 6c 6c 6f 77 73 20 79  6f 75 20 74 6f 20 77 69  |allows you to wi|
00029250  70 65 20 66 69 6c 65 73  20 61 73 20 69 6e 20 74  |pe files as in t|
00029260  68 65 20 2a 57 69 70 65  20 63 6f 6d 6d 61 6e 64  |he *Wipe command|
00029270  2e 00 00 00 44 41 54 41  55 01 00 00 4f 53 5f 46  |....DATAU...OS_F|
00029280  53 43 6f 6e 74 72 6f 6c  20 32 38 20 20 28 26 32  |SControl 28  (&2|
00029290  39 29 0a 3d 3e 09 52 30  20 3d 20 32 38 0a 09 52  |9).=>.R0 = 28..R|
000292a0  31 20 3d 20 41 6d 62 69  67 6f 75 73 20 66 69 6c  |1 = Ambigous fil|
000292b0  65 6e 61 6d 65 20 6f 66  20 66 69 6c 65 73 20 74  |ename of files t|
000292c0  6f 20 63 6f 75 6e 74 0a  09 52 33 20 3d 20 3c 66  |o count..R3 = <f|
000292d0  6c 61 67 73 3d 3e 4f 53  5f 46 53 43 6f 6e 74 72  |lags=>OS_FSContr|
000292e0  6f 6c 46 6c 61 67 73 3e  0a 09 52 34 20 3d 20 73  |olFlags>..R4 = s|
000292f0  74 61 72 74 20 6c 6f 61  64 0a 09 52 35 20 3d 20  |tart load..R5 = |
00029300  73 74 61 72 74 20 65 78  65 63 0a 09 52 36 20 3d  |start exec..R6 =|
00029310  20 65 6e 64 20 6c 6f 61  64 0a 09 52 37 20 3d 20  | end load..R7 = |
00029320  65 6e 64 20 65 78 65 63  0a 09 52 38 20 3d 20 3c  |end exec..R8 = <|
00029330  70 6f 69 6e 74 65 72 20  74 6f 20 64 65 73 63 72  |pointer to descr|
00029340  69 70 74 6f 72 3d 3e 4f  53 5f 46 53 43 6f 6e 74  |iptor=>OS_FSCont|
00029350  72 6f 6c 44 65 73 63 72  69 70 74 6f 72 3e 0a 0a  |rolDescriptor>..|
00029360  5c 3c 3d 09 52 32 20 3d  20 74 6f 74 61 6c 20 6c  |\<=.R2 = total l|
00029370  65 6e 67 74 68 0a 09 52  33 20 3d 20 6e 75 6d 62  |ength..R3 = numb|
00029380  65 72 20 6f 66 20 66 69  6c 65 73 0a 0a 54 68 69  |er of files..Thi|
00029390  73 20 53 57 49 20 61 6c  6c 6f 77 73 20 79 6f 75  |s SWI allows you|
000293a0  20 74 6f 20 63 6f 75 6e  74 20 66 69 6c 65 73 20  | to count files |
000293b0  61 73 20 69 6e 20 74 68  65 20 2a 43 6f 75 6e 74  |as in the *Count|
000293c0  20 63 6f 6d 6d 61 6e 64  2e 00 00 00 44 41 54 41  | command....DATA|
000293d0  bf 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
000293e0  20 30 20 20 28 26 32 39  29 0a 3d 3e 09 52 30 20  | 0  (&29).=>.R0 |
000293f0  3d 20 30 0a 09 52 31 20  3d 20 28 77 69 6c 64 63  |= 0..R1 = (wildc|
00029400  61 72 64 65 64 29 20 66  69 6c 65 6e 61 6d 65 0a  |arded) filename.|
00029410  0a 54 68 69 73 20 53 57  49 20 73 65 74 73 20 63  |.This SWI sets c|
00029420  75 72 72 65 6e 74 20 64  69 72 65 63 74 6f 72 79  |urrent directory|
00029430  20 61 6e 64 20 66 69 6c  69 6e 67 20 73 79 73 74  | and filing syst|
00029440  65 6d 2e 20 49 66 20 61  20 30 20 70 6f 69 6e 74  |em. If a 0 point|
00029450  65 72 20 69 73 20 75 73  65 64 2c 20 74 68 65 20  |er is used, the |
00029460  64 69 72 65 63 74 6f 72  79 20 69 73 20 73 65 74  |directory is set|
00029470  20 74 6f 20 74 68 65 20  55 73 65 72 20 52 6f 6f  | to the User Roo|
00029480  74 20 44 69 72 65 63 74  6f 72 79 00 44 41 54 41  |t Directory.DATA|
00029490  16 01 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
000294a0  20 31 20 20 28 26 32 39  29 0a 3d 3e 09 52 30 20  | 1  (&29).=>.R0 |
000294b0  3d 20 31 0a 09 52 31 20  3d 20 28 77 69 6c 64 63  |= 1..R1 = (wildc|
000294c0  61 72 64 65 64 29 20 66  69 6c 65 6e 61 6d 65 0a  |arded) filename.|
000294d0  0a 54 68 69 73 20 53 57  49 20 73 65 74 73 20 74  |.This SWI sets t|
000294e0  68 65 20 6c 69 62 72 61  72 79 20 64 69 72 65 63  |he library direc|
000294f0  74 6f 72 79 20 61 6e 64  20 66 69 6c 69 6e 67 20  |tory and filing |
00029500  73 79 73 74 65 6d 2e 20  49 66 20 61 20 30 20 70  |system. If a 0 p|
00029510  6f 69 6e 74 65 72 20 69  73 20 75 73 65 64 2c 20  |ointer is used, |
00029520  74 68 65 20 64 65 66 61  75 6c 74 20 66 6f 72 20  |the default for |
00029530  74 68 69 73 20 66 69 6c  69 6e 67 20 73 79 73 74  |this filing syst|
00029540  65 6d 20 69 73 20 75 73  65 64 2e 0a 0a 4f 6e 20  |em is used...On |
00029550  46 69 6c 65 43 6f 72 65  2d 62 61 73 65 64 20 66  |FileCore-based f|
00029560  69 6c 69 6e 67 20 73 79  73 74 65 6d 73 2c 20 74  |iling systems, t|
00029570  68 65 20 64 65 66 61 75  6c 74 20 69 73 20 74 6f  |he default is to|
00029580  20 73 65 61 72 63 68 20  26 2e 4c 69 62 72 61 72  | search &.Librar|
00029590  79 2c 20 24 2e 4c 69 62  72 61 72 79 20 61 6e 64  |y, $.Library and|
000295a0  20 40 00 00 44 41 54 41  c4 00 00 00 4f 53 5f 46  | @..DATA....OS_F|
000295b0  53 43 6f 6e 74 72 6f 6c  20 31 38 20 20 28 26 32  |SControl 18  (&2|
000295c0  39 29 0a 3d 3e 09 52 30  20 3d 20 31 38 0a 09 52  |9).=>.R0 = 18..R|
000295d0  32 20 3d 20 66 69 6c 65  74 79 70 65 20 28 62 69  |2 = filetype (bi|
000295e0  74 73 20 30 2d 31 31 29  0a 0a 5c 3c 3d 09 52 32  |ts 0-11)..\<=.R2|
000295f0  20 3d 20 66 69 72 73 74  20 66 6f 75 72 20 63 68  | = first four ch|
00029600  61 72 73 0a 09 52 33 20  3d 20 66 69 6e 61 6c 20  |ars..R3 = final |
00029610  66 6f 75 72 20 63 68 61  72 73 0a 0a 54 68 69 73  |four chars..This|
00029620  20 53 57 49 20 69 73 73  75 65 73 20 4f 53 5f 53  | SWI issues OS_S|
00029630  65 72 76 69 63 65 43 61  6c 6c 20 36 36 2e 20 49  |erviceCall 66. I|
00029640  66 20 75 6e 63 6c 61 69  6d 65 64 2c 20 69 74 20  |f unclaimed, it |
00029650  62 75 69 6c 64 73 20 61  20 64 65 66 61 75 6c 74  |builds a default|
00029660  20 73 74 72 69 6e 67 2e  44 41 54 41 03 01 00 00  | string.DATA....|
00029670  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 33 31 20  |OS_FSControl 31 |
00029680  20 28 26 32 39 29 0a 3d  3e 09 52 30 20 3d 20 33  | (&29).=>.R0 = 3|
00029690  31 0a 09 52 31 20 3d 20  70 74 72 20 74 6f 20 66  |1..R1 = ptr to f|
000296a0  69 6c 65 74 79 70 65 20  73 74 72 69 6e 67 0a 0a  |iletype string..|
000296b0  5c 3c 3d 09 52 32 20 3d  20 66 69 6c 65 74 79 70  |\<=.R2 = filetyp|
000296c0  65 0a 0a 54 68 69 73 20  53 57 49 20 63 6f 6e 76  |e..This SWI conv|
000296d0  65 72 74 73 20 73 74 72  69 6e 67 20 74 6f 20 61  |erts string to a|
000296e0  20 66 69 6c 65 74 79 70  65 20 6e 75 6d 62 65 72  | filetype number|
000296f0  2e 20 54 68 65 20 73 74  72 69 6e 67 20 63 61 6e  |. The string can|
00029700  20 62 65 20 61 20 66 69  6c 65 74 79 70 65 2d 6e  | be a filetype-n|
00029710  61 6d 65 20 28 22 4f 62  65 79 22 29 2c 20 6f 72  |ame ("Obey"), or|
00029720  20 61 20 66 69 6c 65 74  79 70 65 2d 6e 75 6d 62  | a filetype-numb|
00029730  65 72 20 28 22 46 45 42  22 29 0a 0a 41 6e 20 65  |er ("FEB")..An e|
00029740  72 72 6f 72 20 69 73 20  67 65 6e 65 72 61 74 65  |rror is generate|
00029750  64 20 69 66 20 63 6f 6e  76 65 72 73 69 6f 6e 20  |d if conversion |
00029760  69 6d 70 6f 73 73 69 62  6c 65 2e 00 44 41 54 41  |impossible..DATA|
00029770  4e 01 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |N...OS_FSControl|
00029780  20 32 36 20 20 28 26 32  39 29 0a 3d 3e 09 52 30  | 26  (&29).=>.R0|
00029790  20 3d 20 32 36 0a 09 52  31 20 3d 20 61 6d 62 69  | = 26..R1 = ambi|
000297a0  67 6f 75 73 20 66 69 6c  65 6e 61 6d 65 20 6f 66  |gous filename of|
000297b0  20 66 69 6c 65 73 20 74  6f 20 63 6f 70 79 0a 09  | files to copy..|
000297c0  52 32 20 3d 20 64 65 73  74 69 6e 61 74 69 6f 6e  |R2 = destination|
000297d0  0a 09 52 33 20 3d 20 3c  66 6c 61 67 73 3d 3e 4f  |..R3 = <flags=>O|
000297e0  53 5f 46 53 43 6f 6e 74  72 6f 6c 46 6c 61 67 73  |S_FSControlFlags|
000297f0  3e 0a 09 52 34 20 3d 20  73 74 61 72 74 20 6c 6f  |>..R4 = start lo|
00029800  61 64 0a 09 52 35 20 3d  20 73 74 61 72 74 20 65  |ad..R5 = start e|
00029810  78 65 63 0a 09 52 36 20  3d 20 65 6e 64 20 6c 6f  |xec..R6 = end lo|
00029820  61 64 0a 09 52 37 20 3d  20 65 6e 64 20 65 78 65  |ad..R7 = end exe|
00029830  63 0a 09 52 38 20 3d 20  3c 70 6f 69 6e 74 65 72  |c..R8 = <pointer|
00029840  20 74 6f 20 64 65 73 63  72 69 70 74 6f 72 3d 3e  | to descriptor=>|
00029850  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 44 65 73 63  |OS_FSControlDesc|
00029860  72 69 70 74 6f 72 3e 0a  0a 54 68 69 73 20 53 57  |riptor>..This SW|
00029870  49 20 61 6c 6c 6f 77 73  20 79 6f 75 20 74 6f 20  |I allows you to |
00029880  63 6f 70 79 20 66 69 6c  65 73 20 66 72 6f 6d 20  |copy files from |
00029890  6f 6e 65 20 64 69 72 65  63 74 6f 72 79 20 74 6f  |one directory to|
000298a0  20 61 6e 6f 74 68 65 72  20 6f 72 20 61 73 20 61  | another or as a|
000298b0  20 6e 65 77 20 6e 61 6d  65 2e 00 00 44 41 54 41  | new name...DATA|
000298c0  7b 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |{...OS_FSControl|
000298d0  20 32 35 20 20 28 26 32  39 29 0a 3d 3e 09 52 30  | 25  (&29).=>.R0|
000298e0  20 3d 20 32 35 0a 09 52  31 20 3d 20 6f 72 69 67  | = 25..R1 = orig|
000298f0  69 6e 61 6c 20 66 69 6c  65 6e 61 6d 65 0a 09 52  |inal filename..R|
00029900  32 20 3d 20 6e 65 77 20  66 69 6c 65 6e 61 6d 65  |2 = new filename|
00029910  0a 0a 54 68 69 73 20 53  57 49 20 61 6c 6c 6f 77  |..This SWI allow|
00029920  73 20 79 6f 75 20 74 6f  20 72 65 6e 61 6d 65 20  |s you to rename |
00029930  61 20 66 69 6c 65 2e 00  44 41 54 41 ce 02 00 00  |a file..DATA....|
00029940  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 31 33 20  |OS_FSControl 13 |
00029950  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&29).#Parent O|
00029960  53 5f 46 53 43 6f 6e 74  72 6f 6c 0a 3d 3e 09 52  |S_FSControl.=>.R|
00029970  30 20 3d 09 31 33 0a 09  52 31 20 3d 09 66 69 6c  |0 =.13..R1 =.fil|
00029980  69 6e 67 20 73 79 73 74  65 6d 20 6e 75 6d 62 65  |ing system numbe|
00029990  72 20 6f 72 20 70 6f 69  6e 74 65 72 20 74 6f 20  |r or pointer to |
000299a0  6e 61 6d 65 0a 09 52 32  20 3d 09 64 65 70 65 6e  |name..R2 =.depen|
000299b0  64 73 20 6f 6e 20 52 31  0a 0a 3c 3d 09 52 30 20  |ds on R1..<=.R0 |
000299c0  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
000299d0  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 6e 75  |filing system nu|
000299e0  6d 62 65 72 0a 09 52 32  20 3d 09 70 6f 69 6e 74  |mber..R2 =.point|
000299f0  65 72 20 74 6f 20 66 69  6c 69 6e 67 20 73 79 73  |er to filing sys|
00029a00  74 65 6d 20 63 6f 6e 74  72 6f 6c 20 62 6c 6f 63  |tem control bloc|
00029a10  6b 20 6f 72 20 30 20 69  66 20 6e 6f 74 20 66 6f  |k or 0 if not fo|
00029a20  75 6e 64 0a 0a 54 68 65  20 46 53 20 6e 61 6d 65  |und..The FS name|
00029a30  20 6d 61 74 63 68 20 69  73 20 63 61 73 65 2d 20  | match is case- |
00029a40  69 6e 73 65 6e 73 69 74  69 76 65 2e 20 49 66 20  |insensitive. If |
00029a50  52 32 20 69 73 20 30 2c  20 74 68 65 20 46 53 20  |R2 is 0, the FS |
00029a60  6e 61 6d 65 20 69 73 20  74 61 6b 65 6e 20 74 6f  |name is taken to|
00029a70  20 62 65 20 74 65 72 6d  69 6e 61 74 65 64 20 77  | be terminated w|
00029a80  69 74 68 20 61 6e 79 20  63 6f 6e 74 72 6f 6c 20  |ith any control |
00029a90  63 68 61 72 61 63 74 65  72 20 6f 72 20 74 68 65  |character or the|
00029aa0  20 63 68 61 72 61 63 74  65 72 73 3a 20 22 23 22  | characters: "#"|
00029ab0  2c 22 3a 22 20 6f 72 20  22 2d 22 2e 20 49 66 20  |,":" or "-". If |
00029ac0  52 32 20 69 73 20 6e 6f  74 20 30 2c 20 74 68 65  |R2 is not 0, the|
00029ad0  6e 20 74 68 65 20 46 53  20 6e 61 6d 65 20 69 73  |n the FS name is|
00029ae0  20 74 65 72 6d 69 6e 61  74 65 64 20 62 79 20 61  | terminated by a|
00029af0  6e 79 20 63 6f 6e 74 72  6f 6c 20 63 68 61 72 61  |ny control chara|
00029b00  63 74 65 72 2e 0a 0a 54  68 65 20 46 53 20 63 6f  |cter...The FS co|
00029b10  6e 74 72 6f 6c 20 62 6c  6f 63 6b 20 74 68 61 74  |ntrol block that|
00029b20  20 69 73 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  | is pointed to b|
00029b30  79 20 52 32 20 6f 6e 20  65 78 69 74 20 69 73 20  |y R2 on exit is |
00029b40  66 6f 72 20 74 68 65 20  69 6e 74 65 72 6e 61 6c  |for the internal|
00029b50  20 75 73 65 20 6f 66 20  46 69 6c 65 53 77 69 74  | use of FileSwit|
00029b60  63 68 2c 20 61 6e 64 20  79 6f 75 20 73 68 6f 75  |ch, and you shou|
00029b70  6c 64 20 6e 6f 74 20 75  73 65 20 6f 72 20 61 6c  |ld not use or al|
00029b80  74 65 72 20 69 74 2e 20  59 6f 75 20 73 68 6f 75  |ter it. You shou|
00029b90  6c 64 20 6f 6e 6c 79 20  74 65 73 74 20 52 32 20  |ld only test R2 |
00029ba0  66 6f 72 20 65 71 75 61  6c 69 74 79 20 28 6e 6f  |for equality (no|
00029bb0  74 20 30 29 2e 0a 0a 41  6e 20 65 72 72 6f 72 20  |t 0)...An error |
00029bc0  69 73 20 72 65 74 75 72  6e 65 64 20 69 66 20 74  |is returned if t|
00029bd0  68 65 20 46 53 20 6e 61  6d 65 20 63 6f 6e 74 61  |he FS name conta|
00029be0  69 6e 73 20 62 61 64 20  63 68 61 72 73 20 6f 72  |ins bad chars or|
00029bf0  20 69 73 20 62 61 64 6c  79 20 74 65 72 6d 69 6e  | is badly termin|
00029c00  61 74 65 64 2e 0a 00 00  44 41 54 41 98 01 00 00  |ated....DATA....|
00029c10  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 33 33 20  |OS_FSControl 33 |
00029c20  20 28 26 32 39 29 0a 3d  3e 09 52 30 20 3d 09 33  | (&29).=>.R0 =.3|
00029c30  33 0a 09 52 31 20 3d 09  3c 66 69 6c 69 6e 67 20  |3..R1 =.<filing |
00029c40  73 79 73 74 65 6d 20 6e  75 6d 62 65 72 3d 3e 66  |system number=>f|
00029c50  73 79 73 5f 69 64 65 6e  74 3e 0a 09 52 32 20 3d  |sys_ident>..R2 =|
00029c60  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
00029c70  65 72 0a 09 52 33 20 3d  09 6c 65 6e 67 74 68 20  |er..R3 =.length |
00029c80  6f 66 20 62 75 66 66 65  72 0a 0a 5c 3c 3d 09 52  |of buffer..\<=.R|
00029c90  65 67 69 73 74 65 72 73  20 70 72 65 73 65 72 76  |egisters preserv|
00029ca0  65 64 0a 0a 54 68 69 73  20 63 61 6c 6c 20 63 6f  |ed..This call co|
00029cb0  6e 76 65 72 74 73 20 74  68 65 20 66 69 6c 69 6e  |nverts the filin|
00029cc0  67 20 73 79 73 74 65 6d  20 6e 75 6d 62 65 72 20  |g system number |
00029cd0  70 61 73 73 65 64 20 69  6e 20 52 31 20 74 6f 20  |passed in R1 to |
00029ce0  61 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |a filing system |
00029cf0  6e 61 6d 65 2e 20 54 68  65 20 6e 61 6d 65 20 69  |name. The name i|
00029d00  73 20 73 74 6f 72 65 64  20 69 6e 20 74 68 65 20  |s stored in the |
00029d10  62 75 66 66 65 72 20 70  6f 69 6e 74 65 64 20 74  |buffer pointed t|
00029d20  6f 20 62 79 20 52 32 2c  20 61 6e 64 20 69 73 20  |o by R2, and is |
00029d30  6e 75 6c 6c 2d 74 65 72  6d 69 6e 61 74 65 64 2e  |null-terminated.|
00029d40  20 49 46 20 46 69 6c 65  53 77 69 74 63 68 20 64  | IF FileSwitch d|
00029d50  6f 65 73 20 6e 6f 74 20  6b 6e 6f 77 20 6f 66 20  |oes not know of |
00029d60  74 68 65 20 66 69 6c 69  6e 67 20 73 79 73 74 65  |the filing syste|
00029d70  6d 20 6e 75 6d 62 65 72  20 79 6f 75 20 70 61 73  |m number you pas|
00029d80  73 20 69 74 2c 20 61 20  6e 75 6c 6c 20 73 74 72  |s it, a null str|
00029d90  69 6e 67 20 69 73 20 72  65 74 75 72 6e 65 64 2e  |ing is returned.|
00029da0  44 41 54 41 2e 02 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00029db0  74 72 6f 6c 20 33 37 20  20 28 26 32 39 29 0a 3d  |trol 37  (&29).=|
00029dc0  3e 09 52 30 20 3d 09 33  37 0a 09 52 31 20 3d 09  |>.R0 =.37..R1 =.|
00029dd0  70 74 72 20 74 6f 20 70  61 74 68 6e 61 6d 65 20  |ptr to pathname |
00029de0  74 6f 20 63 6f 6e 76 65  72 74 0a 09 52 32 20 3d  |to convert..R2 =|
00029df0  09 62 75 66 66 65 72 0a  09 52 35 20 3d 09 62 75  |.buffer..R5 =.bu|
00029e00  66 66 65 72 20 73 69 7a  65 0a 5c 3c 3d 09 52 35  |ffer size.\<=.R5|
00029e10  20 3d 09 4e 6f 20 6f 66  20 73 70 61 72 65 20 62  | =.No of spare b|
00029e20  79 74 65 73 20 69 6e 20  62 75 66 66 65 72 20 28  |ytes in buffer (|
00029e30  69 6e 63 2e 20 74 65 72  6d 29 0a 0a 54 68 69 73  |inc. term)..This|
00029e40  20 63 61 6c 6c 20 74 61  6b 65 73 20 61 20 66 69  | call takes a fi|
00029e50  6c 65 6e 61 6d 65 20 28  77 68 69 63 68 20 6d 61  |lename (which ma|
00029e60  79 20 63 6f 6e 74 61 69  6e 20 77 69 6c 64 63 61  |y contain wildca|
00029e70  72 64 73 29 20 61 6e 64  20 63 6f 6e 76 65 72 74  |rds) and convert|
00029e80  73 20 69 74 20 69 6e 74  6f 20 61 20 63 6f 6d 70  |s it into a comp|
00029e90  6c 65 74 65 20 70 61 74  68 6d 61 6d 65 2c 20 69  |lete pathmame, i|
00029ea0  6e 63 6c 75 64 69 6e 67  20 64 69 73 63 20 61 6e  |ncluding disc an|
00029eb0  64 20 64 69 72 65 63 74  6f 72 79 20 6e 61 6d 65  |d directory name|
00029ec0  20 77 68 65 6e 20 6e 6f  74 20 70 72 6f 76 69 64  | when not provid|
00029ed0  65 64 2e 0a 0a 23 74 61  62 0a 2a 45 78 61 6d 70  |ed...#tab.*Examp|
00029ee0  6c 65 2a 3a 09 7b 46 63  6f 64 65 7d 66 72 65 64  |le*:.{Fcode}fred|
00029ef0  7b 66 7d 20 6d 61 79 20  63 6f 6e 76 65 72 74 20  |{f} may convert |
00029f00  74 6f 20 7b 46 63 6f 64  65 7d 53 43 53 49 3a 3a  |to {Fcode}SCSI::|
00029f10  47 61 6d 6d 61 2e 24 2e  55 74 69 6c 73 2e 46 72  |Gamma.$.Utils.Fr|
00029f20  65 64 7b 66 7d 0a 0a 2a  4e 6f 74 65 2a 3a 09 49  |ed{f}..*Note*:.I|
00029f30  66 20 79 6f 75 20 63 61  6c 6c 20 6f 6e 63 65 20  |f you call once |
00029f40  77 69 74 68 20 52 32 20  61 6e 64 20 52 35 20 73  |with R2 and R5 s|
00029f50  65 74 20 74 6f 20 7a 65  72 6f 2c 20 52 35 20 77  |et to zero, R5 w|
00029f60  69 6c 6c 20 72 65 74 75  72 6e 20 6d 69 6e 75 73  |ill return minus|
00029f70  20 74 68 65 20 6e 75 6d  62 65 72 20 6f 66 20 62  | the number of b|
00029f80  79 74 65 73 20 6e 65 65  64 65 64 2e 20 4e 6f 77  |ytes needed. Now|
00029f90  20 79 6f 75 20 63 61 6e  20 63 61 6c 6c 20 61 67  | you can call ag|
00029fa0  61 69 6e 20 68 61 76 69  6e 67 20 61 6c 6c 6f 63  |ain having alloc|
00029fb0  61 74 65 64 20 2d 52 35  20 62 79 74 65 73 20 66  |ated -R5 bytes f|
00029fc0  72 6f 6d 20 73 6f 6d 65  77 68 65 72 65 2e 00 00  |rom somewhere...|
00029fd0  44 41 54 41 2c 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATA,...OS_FSCon|
00029fe0  74 72 6f 6c 20 33 38 20  20 28 26 32 39 29 0a 3d  |trol 38  (&29).=|
00029ff0  3e 09 52 30 20 3d 09 33  38 0a 09 52 31 20 3d 09  |>.R0 =.38..R1 =.|
0002a000  70 74 72 20 74 6f 20 70  61 74 68 6e 61 6d 65 0a  |ptr to pathname.|
0002a010  09 52 32 20 3d 09 6c 6f  61 64 20 61 64 64 72 65  |.R2 =.load addre|
0002a020  73 73 0a 09 52 33 20 3d  09 65 78 65 63 20 61 64  |ss..R3 =.exec ad|
0002a030  64 72 65 73 73 0a 09 52  34 20 3d 09 6c 65 6e 67  |dress..R4 =.leng|
0002a040  74 68 0a 09 52 35 20 3d  09 41 74 74 72 69 62 75  |th..R5 =.Attribu|
0002a050  74 65 73 0a 09 52 36 20  3d 09 3c 4f 62 6a 65 63  |tes..R6 =.<Objec|
0002a060  74 20 74 79 70 65 3d 3e  66 73 79 73 5f 6f 62 6a  |t type=>fsys_obj|
0002a070  74 79 70 65 3e 0a 5c 3c  3d 09 52 32 20 3d 09 3c  |type>.\<=.R2 =.<|
0002a080  46 69 6c 65 20 74 79 70  65 3d 3e 46 69 6c 65 54  |File type=>FileT|
0002a090  79 70 65 73 2e 21 52 6f  6f 74 3e 0a 0a 53 75 70  |ypes.!Root>..Sup|
0002a0a0  70 6c 79 20 74 68 65 20  72 65 6c 65 76 61 6e 74  |ply the relevant|
0002a0b0  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 6f 6e 20  | information on |
0002a0c0  65 6e 74 72 79 20 61 6e  64 20 74 68 69 73 20 63  |entry and this c|
0002a0d0  61 6c 6c 20 77 69 6c 6c  20 72 65 74 75 72 6e 20  |all will return |
0002a0e0  74 68 65 20 66 69 6c 65  20 74 79 70 65 20 6f 66  |the file type of|
0002a0f0  20 74 68 65 20 6f 62 6a  65 63 74 2e 44 41 54 41  | the object.DATA|
0002a100  92 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
0002a110  20 33 39 20 20 28 26 32  39 29 0a 3d 3e 09 52 30  | 39  (&29).=>.R0|
0002a120  20 3d 09 33 39 0a 09 52  31 20 3d 09 70 74 72 20  | =.39..R1 =.ptr |
0002a130  74 6f 20 70 61 74 68 6e  61 6d 65 0a 5c 3c 3d 09  |to pathname.\<=.|
0002a140  52 65 67 69 73 74 65 72  73 20 70 72 65 73 65 72  |Registers preser|
0002a150  76 65 64 0a 0a 53 65 74  73 20 74 68 65 20 55 73  |ved..Sets the Us|
0002a160  65 72 20 52 6f 6f 74 20  44 69 72 65 63 74 6f 72  |er Root Director|
0002a170  79 20 28 55 52 44 29 20  74 6f 20 74 68 65 20 67  |y (URD) to the g|
0002a180  69 76 65 6e 20 70 61 74  68 6e 61 6d 65 2e 00 00  |iven pathname...|
0002a190  44 41 54 41 ac 00 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
0002a1a0  74 72 6f 6c 20 34 30 20  20 28 26 32 39 29 0a 3d  |trol 40  (&29).=|
0002a1b0  3e 09 52 30 20 3d 09 34  30 0a 5c 3c 3d 09 52 65  |>.R0 =.40.\<=.Re|
0002a1c0  67 69 73 74 65 72 73 20  70 72 65 73 65 72 76 65  |gisters preserve|
0002a1d0  64 0a 0a 50 65 72 66 6f  72 6d 73 20 74 68 65 20  |d..Performs the |
0002a1e0  65 71 75 69 76 61 6c 65  6e 74 20 6f 66 20 7b 66  |equivalent of {f|
0002a1f0  63 6f 64 65 7d 2a 42 61  63 6b 7b 66 7d 2c 20 69  |code}*Back{f}, i|
0002a200  2e 65 2e 20 73 77 61 70  73 20 74 68 65 20 70 72  |.e. swaps the pr|
0002a210  65 76 69 6f 75 73 20 64  69 72 65 63 74 6f 72 79  |evious directory|
0002a220  20 77 69 74 68 20 74 68  65 20 63 75 72 72 65 6e  | with the curren|
0002a230  74 20 64 69 72 65 63 74  6f 72 79 2e 44 41 54 41  |t directory.DATA|
0002a240  5f 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |_...OS_FSControl|
0002a250  20 34 33 20 20 28 26 32  39 29 0a 3d 3e 09 52 30  | 43  (&29).=>.R0|
0002a260  20 3d 09 34 33 0a 5c 3c  3d 09 52 65 67 69 73 74  | =.43.\<=.Regist|
0002a270  65 72 73 20 70 72 65 73  65 72 76 65 64 0a 0a 55  |ers preserved..U|
0002a280  6e 73 65 74 73 20 74 68  65 20 43 75 72 72 65 6e  |nsets the Curren|
0002a290  74 20 44 69 72 65 63 74  6f 72 79 00 44 41 54 41  |t Directory.DATA|
0002a2a0  61 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |a...OS_FSControl|
0002a2b0  20 34 34 20 20 28 26 32  39 29 0a 3d 3e 09 52 30  | 44  (&29).=>.R0|
0002a2c0  20 3d 09 34 34 0a 5c 3c  3d 09 52 65 67 69 73 74  | =.44.\<=.Regist|
0002a2d0  65 72 73 20 70 72 65 73  65 72 76 65 64 0a 0a 55  |ers preserved..U|
0002a2e0  6e 73 65 74 73 20 74 68  65 20 55 73 65 72 20 52  |nsets the User R|
0002a2f0  6f 6f 74 20 44 69 72 65  63 74 6f 72 79 00 00 00  |oot Directory...|
0002a300  44 41 54 41 5f 00 00 00  4f 53 5f 46 53 43 6f 6e  |DATA_...OS_FSCon|
0002a310  74 72 6f 6c 20 34 35 20  20 28 26 32 39 29 0a 3d  |trol 45  (&29).=|
0002a320  3e 09 52 30 20 3d 09 34  35 0a 5c 3c 3d 09 52 65  |>.R0 =.45.\<=.Re|
0002a330  67 69 73 74 65 72 73 20  70 72 65 73 65 72 76 65  |gisters preserve|
0002a340  64 0a 0a 55 6e 73 65 74  73 20 74 68 65 20 4c 69  |d..Unsets the Li|
0002a350  62 72 61 72 79 20 44 69  72 65 63 74 6f 72 79 00  |brary Directory.|
0002a360  44 41 54 41 96 00 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
0002a370  74 72 6f 6c 20 34 37 20  20 28 26 32 39 29 0a 3d  |trol 47  (&29).=|
0002a380  3e 09 52 30 20 3d 09 34  37 0a 09 52 31 20 3d 09  |>.R0 =.47..R1 =.|
0002a390  70 74 72 20 74 6f 20 6e  61 6d 65 20 6f 66 20 6f  |ptr to name of o|
0002a3a0  62 6a 65 63 74 0a 5c 3c  3d 09 52 30 2c 52 31 09  |bject.\<=.R0,R1.|
0002a3b0  70 72 65 73 65 72 76 65  64 0a 09 52 32 20 3d 09  |preserved..R2 =.|
0002a3c0  62 6f 6f 74 20 6f 70 74  69 6f 6e 0a 0a 52 65 61  |boot option..Rea|
0002a3d0  64 73 20 74 68 65 20 62  6f 6f 74 20 6f 70 74 69  |ds the boot opti|
0002a3e0  6f 6e 20 66 6f 72 20 61  20 64 69 73 63 20 6f 72  |on for a disc or|
0002a3f0  20 69 6d 61 67 65 00 00  44 41 54 41 9d 00 00 00  | image..DATA....|
0002a400  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 34 38 20  |OS_FSControl 48 |
0002a410  20 28 26 32 39 29 0a 3d  3e 09 52 30 20 3d 09 34  | (&29).=>.R0 =.4|
0002a420  38 0a 09 52 31 20 3d 09  70 74 72 20 74 6f 20 6e  |8..R1 =.ptr to n|
0002a430  61 6d 65 20 6f 66 20 6f  62 6a 65 63 74 0a 09 52  |ame of object..R|
0002a440  32 20 3d 09 6e 65 77 20  62 6f 6f 74 20 6f 70 74  |2 =.new boot opt|
0002a450  69 6f 6e 0a 5c 3c 3d 09  52 65 67 69 73 74 65 72  |ion.\<=.Register|
0002a460  73 20 70 72 65 73 65 72  76 65 64 0a 0a 53 65 74  |s preserved..Set|
0002a470  73 20 74 68 65 20 62 6f  6f 74 20 6f 70 74 69 6f  |s the boot optio|
0002a480  6e 20 66 6f 72 20 61 20  64 69 73 63 20 6f 72 20  |n for a disc or |
0002a490  69 6d 61 67 65 00 00 00  44 41 54 41 e2 00 00 00  |image...DATA....|
0002a4a0  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 34 39 20  |OS_FSControl 49 |
0002a4b0  20 28 26 32 39 29 0a 3d  3e 09 52 30 20 3d 09 34  | (&29).=>.R0 =.4|
0002a4c0  39 0a 09 52 31 20 3d 09  70 74 72 20 74 6f 20 6e  |9..R1 =.ptr to n|
0002a4d0  61 6d 65 20 6f 66 20 6f  62 6a 65 63 74 0a 5c 3c  |ame of object.\<|
0002a4e0  3d 09 52 30 20 3d 09 46  72 65 65 20 73 70 61 63  |=.R0 =.Free spac|
0002a4f0  65 0a 09 52 31 20 3d 09  53 69 7a 65 20 6f 66 20  |e..R1 =.Size of |
0002a500  6c 61 72 67 65 73 74 20  6f 62 6a 65 63 74 20 74  |largest object t|
0002a510  68 61 74 20 63 61 6e 20  62 65 20 63 72 65 61 74  |hat can be creat|
0002a520  65 64 2e 0a 09 52 32 20  3d 09 53 69 7a 65 20 6f  |ed...R2 =.Size o|
0002a530  66 20 64 69 73 63 0a 0a  52 65 61 64 73 20 74 68  |f disc..Reads th|
0002a540  65 20 66 72 65 65 20 73  70 61 63 65 20 6f 6e 20  |e free space on |
0002a550  61 20 64 69 73 63 20 6f  72 20 69 6d 61 67 65 20  |a disc or image |
0002a560  63 6f 6e 74 61 69 6e 69  6e 67 20 61 20 6e 61 6d  |containing a nam|
0002a570  65 64 20 6f 62 6a 65 63  74 2e 00 00 44 41 54 41  |ed object...DATA|
0002a580  ae 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
0002a590  20 35 30 20 20 28 26 32  39 29 0a 3d 3e 09 52 30  | 50  (&29).=>.R0|
0002a5a0  20 3d 09 35 30 0a 09 52  31 20 3d 09 70 74 72 20  | =.50..R1 =.ptr |
0002a5b0  74 6f 20 6e 61 6d 65 20  6f 66 20 6f 62 6a 65 63  |to name of objec|
0002a5c0  74 0a 09 52 32 20 3d 09  6e 65 77 20 64 69 73 63  |t..R2 =.new disc|
0002a5d0  20 6e 61 6d 65 0a 5c 3c  3d 09 52 65 67 69 73 74  | name.\<=.Regist|
0002a5e0  65 72 73 20 70 72 65 73  65 72 76 65 64 0a 0a 52  |ers preserved..R|
0002a5f0  65 6e 61 6d 65 73 20 74  68 65 20 64 69 73 63 20  |enames the disc |
0002a600  6f 72 20 69 6d 61 67 65  20 66 69 6c 65 20 63 6f  |or image file co|
0002a610  6e 74 61 69 6e 69 6e 67  20 74 68 65 20 67 69 76  |ntaining the giv|
0002a620  65 6e 20 6f 62 6a 65 63  74 2e 00 00 44 41 54 41  |en object...DATA|
0002a630  75 02 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |u...OS_FSControl|
0002a640  20 35 32 20 20 28 26 32  39 29 0a 3d 3e 09 52 30  | 52  (&29).=>.R0|
0002a650  20 3d 09 35 32 0a 09 52  31 20 3d 09 70 74 72 20  | =.52..R1 =.ptr |
0002a660  74 6f 20 6e 61 6d 65 20  6f 66 20 69 6d 61 67 65  |to name of image|
0002a670  20 66 69 6c 65 20 6f 72  20 64 69 73 63 0a 09 52  | file or disc..R|
0002a680  32 20 3d 09 6f 66 66 73  65 74 20 69 6e 74 6f 20  |2 =.offset into |
0002a690  69 6d 61 67 65 20 66 69  6c 65 20 6f 72 20 64 69  |image file or di|
0002a6a0  73 63 0a 09 52 33 20 3d  09 70 74 72 20 74 6f 20  |sc..R3 =.ptr to |
0002a6b0  62 75 66 66 65 72 20 74  6f 20 72 65 63 65 69 76  |buffer to receiv|
0002a6c0  65 20 6f 62 6a 65 63 74  20 6e 61 6d 65 0a 09 52  |e object name..R|
0002a6d0  34 20 3d 09 62 75 66 66  65 72 20 6c 65 6e 67 74  |4 =.buffer lengt|
0002a6e0  68 0a 5c 3c 3d 09 42 75  66 66 65 72 20 63 6f 6e  |h.\<=.Buffer con|
0002a6f0  74 61 69 6e 73 20 6f 62  6a 65 63 74 20 6e 61 6d  |tains object nam|
0002a700  65 0a 09 52 32 20 3d 09  4f 62 6a 65 63 74 20 74  |e..R2 =.Object t|
0002a710  79 70 65 20 28 73 65 65  20 62 65 6c 6f 77 29 0a  |ype (see below).|
0002a720  09 4f 74 68 65 72 20 72  65 67 69 73 74 65 72 73  |.Other registers|
0002a730  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0002a740  20 63 61 6c 6c 20 73 63  61 6e 73 20 61 20 64 69  | call scans a di|
0002a750  73 63 20 6f 72 20 69 6d  61 67 65 20 66 69 6c 65  |sc or image file|
0002a760  20 74 6f 20 66 69 6e 64  20 77 68 69 63 68 20 6f  | to find which o|
0002a770  62 6a 65 63 74 20 6f 63  63 75 70 69 65 73 20 61  |bject occupies a|
0002a780  20 70 61 72 74 69 63 75  6c 61 72 20 64 69 73 63  | particular disc|
0002a790  20 61 64 64 72 65 73 73  2e 20 54 68 69 73 20 69  | address. This i|
0002a7a0  73 20 75 73 65 66 75 6c  20 69 6e 20 74 72 79 69  |s useful in tryi|
0002a7b0  6e 67 20 74 6f 20 72 65  63 6f 76 65 72 20 66 69  |ng to recover fi|
0002a7c0  6c 65 73 2c 20 6d 61 70  20 6f 75 74 20 61 20 64  |les, map out a d|
0002a7d0  65 66 65 63 74 2e 0a 0a  2a 4f 62 6a 65 63 74 20  |efect...*Object |
0002a7e0  74 79 70 65 2a 3a 0a 09  31 09 4e 6f 20 6f 62 6a  |type*:..1.No obj|
0002a7f0  65 63 74 20 66 6f 75 6e  64 20 28 6f 66 66 73 65  |ect found (offse|
0002a800  74 20 75 73 65 64 20 66  6f 72 20 66 72 65 65 20  |t used for free |
0002a810  73 70 61 63 65 20 6d 61  70 20 6f 72 20 6f 74 68  |space map or oth|
0002a820  65 72 20 6e 6f 6e 2d 66  69 6c 65 20 75 73 65 29  |er non-file use)|
0002a830  2e 0a 09 32 09 4f 62 6a  65 63 74 20 66 6f 75 6e  |...2.Object foun|
0002a840  64 20 28 63 61 6e 6e 6f  74 20 73 68 61 72 65 20  |d (cannot share |
0002a850  6f 66 66 73 65 74 20 77  69 74 68 20 6f 74 68 65  |offset with othe|
0002a860  72 20 6f 62 6a 65 63 74  73 29 0a 09 33 09 4f 62  |r objects)..3.Ob|
0002a870  6a 65 63 74 20 66 6f 75  6e 64 20 28 63 61 6e 20  |ject found (can |
0002a880  73 68 61 72 65 20 6f 66  66 73 65 74 20 77 69 74  |share offset wit|
0002a890  68 20 6f 74 68 65 72 20  6f 62 6a 65 63 74 73 29  |h other objects)|
0002a8a0  0a 00 00 00 44 41 54 41  b1 01 00 00 4f 53 5f 46  |....DATA....OS_F|
0002a8b0  53 43 6f 6e 74 72 6f 6c  20 35 33 20 20 28 26 32  |SControl 53  (&2|
0002a8c0  39 29 0a 3d 3e 09 52 30  20 3d 09 35 33 0a 09 52  |9).=>.R0 =.53..R|
0002a8d0  31 20 3d 09 70 74 72 20  74 6f 20 6e 65 77 20 70  |1 =.ptr to new p|
0002a8e0  61 74 68 0a 09 52 32 20  3d 09 64 69 72 65 63 74  |ath..R2 =.direct|
0002a8f0  6f 72 79 20 74 6f 20 73  65 74 20 28 73 65 65 20  |ory to set (see |
0002a900  62 65 6c 6f 77 29 0a 09  52 33 20 3d 09 70 74 72  |below)..R3 =.ptr|
0002a910  20 74 6f 20 6e 61 6d 65  20 6f 66 20 66 69 6c 69  | to name of fili|
0002a920  6e 67 20 73 79 73 74 65  6d 0a 09 52 36 20 3d 09  |ng system..R6 =.|
0002a930  70 74 72 20 74 6f 20 73  70 65 63 69 61 6c 20 66  |ptr to special f|
0002a940  69 65 6c 64 20 28 6f 72  20 30 20 66 6f 72 20 6e  |ield (or 0 for n|
0002a950  6f 6e 65 29 0a 5c 3c 3d  09 41 6c 6c 20 72 65 67  |one).\<=.All reg|
0002a960  69 73 74 65 72 73 20 70  72 65 73 65 72 76 65 64  |isters preserved|
0002a970  0a 0a 54 68 69 73 20 63  61 6c 6c 20 73 65 74 73  |..This call sets|
0002a980  20 61 20 64 69 72 65 63  74 6f 72 79 20 74 6f 20  | a directory to |
0002a990  61 20 67 69 76 65 6e 20  70 61 74 68 20 77 69 74  |a given path wit|
0002a9a0  68 6f 75 74 20 63 68 65  63 6b 69 6e 67 20 69 66  |hout checking if|
0002a9b0  20 74 68 65 20 70 61 74  68 20 69 73 20 6f 6b 61  | the path is oka|
0002a9c0  79 2e 0a 0a 2a 44 69 72  65 63 74 6f 72 79 20 74  |y...*Directory t|
0002a9d0  79 70 65 73 2a 3a 0a 09  30 09 43 53 44 20 28 43  |ypes*:..0.CSD (C|
0002a9e0  75 72 72 65 6e 74 6c 79  20 53 65 6c 65 63 74 65  |urrently Selecte|
0002a9f0  64 20 44 69 72 65 63 74  6f 72 79 29 0a 09 31 09  |d Directory)..1.|
0002aa00  50 53 44 20 28 50 72 65  76 69 6f 75 73 6c 79 20  |PSD (Previously |
0002aa10  53 65 6c 65 63 74 65 64  20 44 69 72 65 63 74 6f  |Selected Directo|
0002aa20  72 79 29 0a 09 32 09 55  52 44 20 28 55 73 65 72  |ry)..2.URD (User|
0002aa30  20 52 6f 6f 74 20 44 69  72 65 63 74 6f 72 79 29  | Root Directory)|
0002aa40  0a 09 33 09 4c 69 62 72  61 72 79 20 44 69 72 65  |..3.Library Dire|
0002aa50  63 74 6f 72 79 00 00 00  44 41 54 41 f2 02 00 00  |ctory...DATA....|
0002aa60  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 35 34 20  |OS_FSControl 54 |
0002aa70  20 28 26 32 39 29 0a 3d  3e 09 52 30 20 3d 09 35  | (&29).=>.R0 =.5|
0002aa80  34 0a 09 52 31 20 3d 09  70 74 72 20 74 6f 20 62  |4..R1 =.ptr to b|
0002aa90  75 66 66 65 72 20 74 6f  20 68 6f 6c 64 20 70 61  |uffer to hold pa|
0002aaa0  74 68 6e 61 6d 65 0a 09  52 32 20 3d 09 64 69 72  |thname..R2 =.dir|
0002aab0  65 63 74 6f 72 79 20 74  6f 20 73 65 74 20 28 73  |ectory to set (s|
0002aac0  65 65 20 62 65 6c 6f 77  29 0a 09 52 33 20 3d 09  |ee below)..R3 =.|
0002aad0  70 74 72 20 74 6f 20 6e  61 6d 65 20 6f 66 20 66  |ptr to name of f|
0002aae0  69 6c 69 6e 67 20 73 79  73 74 65 6d 0a 09 52 35  |iling system..R5|
0002aaf0  20 3d 09 73 69 7a 65 20  6f 66 20 62 75 66 66 65  | =.size of buffe|
0002ab00  72 20 28 6f 72 20 30 20  74 6f 20 72 65 61 64 20  |r (or 0 to read |
0002ab10  72 65 71 75 69 72 65 64  20 73 69 7a 65 29 0a 5c  |required size).\|
0002ab20  3c 3d 09 42 75 66 66 65  72 20 69 73 20 66 69 6c  |<=.Buffer is fil|
0002ab30  6c 65 64 20 77 69 74 68  20 70 61 74 68 6e 61 6d  |led with pathnam|
0002ab40  65 0a 09 52 31 20 3d 09  70 74 72 20 74 6f 20 72  |e..R1 =.ptr to r|
0002ab50  65 73 74 20 6f 66 20 70  61 74 68 2c 20 6f 72 20  |est of path, or |
0002ab60  30 20 69 66 20 64 69 72  65 63 74 6f 72 79 20 69  |0 if directory i|
0002ab70  73 20 6e 6f 74 20 73 65  74 0a 09 52 35 20 3d 09  |s not set..R5 =.|
0002ab80  28 62 75 66 66 65 72 20  6c 65 6e 67 74 68 29 20  |(buffer length) |
0002ab90  6d 69 6e 75 73 20 28 6c  65 6e 67 74 68 20 6f 66  |minus (length of|
0002aba0  20 73 74 72 69 6e 67 20  28 77 69 74 68 20 74 65  | string (with te|
0002abb0  72 6d 69 6e 61 74 6f 72  29 29 0a 09 52 36 20 3d  |rminator))..R6 =|
0002abc0  09 70 74 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |.ptr to special |
0002abd0  66 69 65 6c 64 2c 20 74  65 72 6d 69 6e 61 74 65  |field, terminate|
0002abe0  64 20 77 69 74 68 20 6e  75 6c 6c 20 6f 72 20 22  |d with null or "|
0002abf0  2c 22 20 28 6f 72 20 30  20 66 6f 72 20 6e 6f 6e  |," (or 0 for non|
0002ac00  65 29 0a 0a 54 68 69 73  20 63 61 6c 6c 20 72 65  |e)..This call re|
0002ac10  61 64 73 20 74 68 65 20  70 61 74 68 20 6f 66 20  |ads the path of |
0002ac20  74 68 65 20 73 70 65 63  69 66 69 65 64 20 64 69  |the specified di|
0002ac30  72 65 63 74 6f 72 79 2e  0a 0a 2a 44 69 72 65 63  |rectory...*Direc|
0002ac40  74 6f 72 79 20 74 79 70  65 73 2a 3a 0a 09 30 09  |tory types*:..0.|
0002ac50  43 53 44 20 28 43 75 72  72 65 6e 74 6c 79 20 53  |CSD (Currently S|
0002ac60  65 6c 65 63 74 65 64 20  44 69 72 65 63 74 6f 72  |elected Director|
0002ac70  79 29 0a 09 31 09 50 53  44 20 28 50 72 65 76 69  |y)..1.PSD (Previ|
0002ac80  6f 75 73 6c 79 20 53 65  6c 65 63 74 65 64 20 44  |ously Selected D|
0002ac90  69 72 65 63 74 6f 72 79  29 0a 09 32 09 55 52 44  |irectory)..2.URD|
0002aca0  20 28 55 73 65 72 20 52  6f 6f 74 20 44 69 72 65  | (User Root Dire|
0002acb0  63 74 6f 72 79 29 0a 09  33 09 4c 69 62 72 61 72  |ctory)..3.Librar|
0002acc0  79 20 44 69 72 65 63 74  6f 72 79 0a 0a 2a 4e 6f  |y Directory..*No|
0002acd0  74 65 73 2a 3a 09 4c 69  6b 65 20 6f 74 68 65 72  |tes*:.Like other|
0002ace0  20 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 20 63 61  | OS_FSControl ca|
0002acf0  6c 6c 73 2c 20 75 73 65  20 74 68 69 73 20 63 61  |lls, use this ca|
0002ad00  6c 6c 20 74 77 69 63 65  3a 20 61 66 74 65 72 20  |ll twice: after |
0002ad10  74 68 65 20 66 69 72 73  74 20 63 61 6c 6c 20 28  |the first call (|
0002ad20  72 35 20 3d 20 30 29 2c  20 61 6e 64 20 6f 6e 20  |r5 = 0), and on |
0002ad30  65 78 69 74 20 72 35 20  3d 20 2d 28 62 79 74 65  |exit r5 = -(byte|
0002ad40  73 20 6e 65 65 64 65 64  29 2e 00 00 44 49 52 24  |s needed)...DIR$|
0002ad50  9c 05 00 00 9c 05 00 00  e8 b2 02 00 46 fd ff ff  |............F...|
0002ad60  7b a1 c7 24 a8 00 00 00  13 00 00 00 00 00 00 00  |{..$............|
0002ad70  31 32 00 00 90 b3 02 00  46 fd ff ff 52 bd cf da  |12......F...R...|
0002ad80  b1 00 00 00 13 00 00 00  00 00 00 00 32 00 00 00  |............2...|
0002ad90  44 b4 02 00 46 fd ff ff  1c 38 cf da be 00 00 00  |D...F....8......|
0002ada0  13 00 00 00 00 00 00 00  32 36 00 00 04 b5 02 00  |........26......|
0002adb0  46 fd ff ff 8a 27 cf da  de 00 00 00 13 00 00 00  |F....'..........|
0002adc0  00 00 00 00 33 00 00 00  e4 b5 02 00 46 fd ff ff  |....3.......F...|
0002add0  6c 1e cf da 45 01 00 00  13 00 00 00 00 00 00 00  |l...E...........|
0002ade0  33 34 00 00 2c b7 02 00  46 fd ff ff 5d 18 cf da  |34..,...F...]...|
0002adf0  e1 01 00 00 13 00 00 00  00 00 00 00 33 36 00 00  |............36..|
0002ae00  10 b9 02 00 46 fd ff ff  61 e2 c8 21 52 01 00 00  |....F...a..!R...|
0002ae10  13 00 00 00 00 00 00 00  34 30 00 00 64 ba 02 00  |........40..d...|
0002ae20  46 fd ff ff cb 6f ce da  34 01 00 00 13 00 00 00  |F....o..4.......|
0002ae30  00 00 00 00 39 00 00 00  98 bb 02 00 46 fd ff ff  |....9.......F...|
0002ae40  32 8e c7 21 35 02 00 00  13 00 00 00 00 00 00 00  |2..!5...........|
0002ae50  41 63 74 69 6f 6e 00 00  d0 bd 02 00 46 fd ff ff  |Action......F...|
0002ae60  19 c0 c2 da 64 01 00 00  13 00 00 00 00 00 00 00  |....d...........|
0002ae70  41 72 65 61 00 00 00 00  34 bf 02 00 47 fd ff ff  |Area....4...G...|
0002ae80  3a a7 17 0a 95 03 00 00  13 00 00 00 00 00 00 00  |:...............|
0002ae90  70 74 72 00 cc c2 02 00  46 fd ff ff dc 39 0f fb  |ptr.....F....9..|
0002aea0  41 07 00 00 13 00 00 00  00 00 00 00 52 65 61 73  |A...........Reas|
0002aeb0  6f 6e 00 00 10 ca 02 00  46 fd ff ff 81 11 ec 4d  |on......F......M|
0002aec0  19 01 00 00 13 00 00 00  00 00 00 00 52 65 61 73  |............Reas|
0002aed0  6f 6e 32 00 2c cb 02 00  46 fd ff ff 3a cb cf da  |on2.,...F...:...|
0002aee0  1b 01 00 00 13 00 00 00  00 00 00 00 38 00 00 00  |............8...|
0002aef0  48 cc 02 00 46 fd ff ff  7c c5 cf da 02 01 00 00  |H...F...|.......|
0002af00  13 00 00 00 00 00 00 00  31 30 00 00 4c cd 02 00  |........10..L...|
0002af10  46 fd ff ff 46 c4 cf da  85 01 00 00 13 00 00 00  |F...F...........|
0002af20  00 00 00 00 31 31 00 00  d4 ce 02 00 46 fd ff ff  |....11......F...|
0002af30  06 54 cf da 1f 01 00 00  13 00 00 00 00 00 00 00  |.T..............|
0002af40  31 33 00 00 f4 cf 02 00  46 fd ff ff 92 4b cf da  |13......F....K..|
0002af50  aa 01 00 00 13 00 00 00  00 00 00 00 31 34 00 00  |............14..|
0002af60  a0 d1 02 00 46 fd ff ff  24 46 cf da 0c 01 00 00  |....F...$F......|
0002af70  13 00 00 00 00 00 00 00  31 35 00 00 ac d2 02 00  |........15......|
0002af80  46 fd ff ff 01 42 cf da  0d 02 00 00 13 00 00 00  |F....B..........|
0002af90  00 00 00 00 31 36 00 00  bc d4 02 00 46 fd ff ff  |....16......F...|
0002afa0  19 3c cf da 08 01 00 00  13 00 00 00 00 00 00 00  |.<..............|
0002afb0  32 34 00 00 c4 d5 02 00  46 fd ff ff 0d 3a cf da  |24......F....:..|
0002afc0  96 00 00 00 13 00 00 00  00 00 00 00 32 35 00 00  |............25..|
0002afd0  5c d6 02 00 46 fd ff ff  af 31 cf da ff 00 00 00  |\...F....1......|
0002afe0  13 00 00 00 00 00 00 00  32 37 00 00 5c d7 02 00  |........27..\...|
0002aff0  46 fd ff ff e6 2d cf da  1b 01 00 00 13 00 00 00  |F....-..........|
0002b000  00 00 00 00 32 38 00 00  78 d8 02 00 46 fd ff ff  |....28..x...F...|
0002b010  3b 29 cf da b1 00 00 00  13 00 00 00 00 00 00 00  |;)..............|
0002b020  32 39 00 00 2c d9 02 00  46 fd ff ff 7c b4 cf da  |29..,...F...|...|
0002b030  aa 00 00 00 13 00 00 00  00 00 00 00 33 30 00 00  |............30..|
0002b040  d8 d9 02 00 46 fd ff ff  4e b2 cf da 0e 01 00 00  |....F...N.......|
0002b050  13 00 00 00 00 00 00 00  33 31 00 00 e8 da 02 00  |........31......|
0002b060  46 fd ff ff 25 b0 cf da  e8 00 00 00 13 00 00 00  |F...%...........|
0002b070  00 00 00 00 33 32 00 00  d0 db 02 00 46 fd ff ff  |....32......F...|
0002b080  0c ae cf da a4 00 00 00  13 00 00 00 00 00 00 00  |................|
0002b090  33 33 00 00 74 dc 02 00  46 fd ff ff 87 aa cf da  |33..t...F.......|
0002b0a0  d2 01 00 00 13 00 00 00  00 00 00 00 33 35 00 00  |............35..|
0002b0b0  48 de 02 00 46 fd ff ff  c2 9f cf da e1 01 00 00  |H...F...........|
0002b0c0  13 00 00 00 00 00 00 00  33 37 00 00 2c e0 02 00  |........37..,...|
0002b0d0  46 fd ff ff d2 f0 ce da  0f 01 00 00 13 00 00 00  |F...............|
0002b0e0  00 00 00 00 34 31 00 00  3c e1 02 00 46 fd ff ff  |....41..<...F...|
0002b0f0  ce ed ce da 02 01 00 00  13 00 00 00 00 00 00 00  |................|
0002b100  34 32 00 00 40 e2 02 00  46 fd ff ff 89 ec ce da  |42..@...F.......|
0002b110  09 01 00 00 13 00 00 00  00 00 00 00 34 33 00 00  |............43..|
0002b120  4c e3 02 00 46 fd ff ff  5a e5 ce da 17 01 00 00  |L...F...Z.......|
0002b130  13 00 00 00 00 00 00 00  34 34 00 00 64 e4 02 00  |........44..d...|
0002b140  46 fd ff ff 4c e4 ce da  13 01 00 00 13 00 00 00  |F...L...........|
0002b150  00 00 00 00 34 35 00 00  78 e5 02 00 46 fd ff ff  |....45..x...F...|
0002b160  42 e3 ce da db 00 00 00  13 00 00 00 00 00 00 00  |B...............|
0002b170  34 36 00 00 54 e6 02 00  46 fd ff ff de e1 ce da  |46..T...F.......|
0002b180  b2 00 00 00 13 00 00 00  00 00 00 00 34 37 00 00  |............47..|
0002b190  08 e7 02 00 46 fd ff ff  fa df ce da ea 00 00 00  |....F...........|
0002b1a0  13 00 00 00 00 00 00 00  34 38 00 00 f4 e7 02 00  |........48......|
0002b1b0  46 fd ff ff e2 de ce da  15 01 00 00 13 00 00 00  |F...............|
0002b1c0  00 00 00 00 34 39 00 00  0c e9 02 00 46 fd ff ff  |....49......F...|
0002b1d0  47 dd ce da 47 01 00 00  13 00 00 00 00 00 00 00  |G...G...........|
0002b1e0  35 30 00 00 54 ea 02 00  46 fd ff ff 22 da ce da  |50..T...F..."...|
0002b1f0  26 01 00 00 13 00 00 00  00 00 00 00 35 31 00 00  |&...........51..|
0002b200  7c eb 02 00 46 fd ff ff  d6 d7 ce da 57 01 00 00  ||...F.......W...|
0002b210  13 00 00 00 00 00 00 00  35 32 00 00 d4 ec 02 00  |........52......|
0002b220  46 fd ff ff 31 d1 ce da  f5 01 00 00 13 00 00 00  |F...1...........|
0002b230  00 00 00 00 35 33 00 00  cc ee 02 00 46 fd ff ff  |....53......F...|
0002b240  3a cf ce da e4 00 00 00  13 00 00 00 00 00 00 00  |:...............|
0002b250  35 34 00 00 b0 ef 02 00  46 fd ff ff 2d cb ce da  |54......F...-...|
0002b260  06 04 00 00 13 00 00 00  00 00 00 00 35 35 35 36  |............5556|
0002b270  00 00 00 00 b8 f3 02 00  46 fd ff ff 28 b7 ce da  |........F...(...|
0002b280  66 01 00 00 13 00 00 00  00 00 00 00 35 37 35 38  |f...........5758|
0002b290  00 00 00 00 20 f5 02 00  46 fd ff ff 83 80 cf da  |.... ...F.......|
0002b2a0  53 02 00 00 13 00 00 00  00 00 00 00 36 30 00 00  |S...........60..|
0002b2b0  74 f7 02 00 46 fd ff ff  db 7b cf da 4d 02 00 00  |t...F....{..M...|
0002b2c0  13 00 00 00 00 00 00 00  36 31 00 00 c4 f9 02 00  |........61......|
0002b2d0  46 fd ff ff d2 68 cf da  ea 01 00 00 13 00 00 00  |F....h..........|
0002b2e0  00 00 00 00 36 32 00 00  44 41 54 41 a8 00 00 00  |....62..DATA....|
0002b2f0  53 61 76 65 20 73 70 72  69 74 65 20 61 72 65 61  |Save sprite area|
0002b300  20 20 28 31 32 29 0a 3d  3e 09 52 30 20 3d 20 3c  |  (12).=>.R0 = <|
0002b310  31 32 3d 3e 4f 53 5f 73  70 72 69 74 65 6f 70 5f  |12=>OS_spriteop_|
0002b320  52 65 61 73 6f 6e 32 3e  0a 09 52 31 20 3d 20 3c  |Reason2>..R1 = <|
0002b330  53 70 72 69 74 65 20 61  72 65 61 3d 3e 4f 53 5f  |Sprite area=>OS_|
0002b340  53 70 72 69 74 65 4f 70  5f 41 72 65 61 3e 0a 09  |SpriteOp_Area>..|
0002b350  52 32 20 3d 20 66 69 6c  65 6e 61 6d 65 0a 0a 54  |R2 = filename..T|
0002b360  68 69 73 20 63 61 6c 6c  20 73 61 76 65 73 20 74  |his call saves t|
0002b370  68 65 20 65 6e 74 69 72  65 20 73 70 72 69 74 65  |he entire sprite|
0002b380  20 61 72 65 61 20 74 6f  20 61 20 66 69 6c 65 2e  | area to a file.|
0002b390  44 41 54 41 b1 00 00 00  53 63 72 65 65 6e 20 73  |DATA....Screen s|
0002b3a0  61 76 65 20 20 28 32 29  0a 3d 3e 09 52 30 20 3d  |ave  (2).=>.R0 =|
0002b3b0  09 3c 32 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |.<2=>os_spriteop|
0002b3c0  5f 72 65 61 73 6f 6e 32  3e 0a 09 52 32 20 3d 09  |_reason2>..R2 =.|
0002b3d0  70 61 74 68 6e 61 6d 65  0a 09 52 33 20 3d 09 70  |pathname..R3 =.p|
0002b3e0  61 6c 65 74 74 65 20 73  61 76 65 20 28 30 2c 31  |alette save (0,1|
0002b3f0  3d 6e 6f 2c 79 65 73 29  0a 0a 54 68 69 73 20 53  |=no,yes)..This S|
0002b400  57 49 20 73 61 76 65 73  20 74 68 65 20 63 75 72  |WI saves the cur|
0002b410  72 65 6e 74 20 67 72 61  70 68 69 63 73 20 77 69  |rent graphics wi|
0002b420  6e 64 6f 77 2e 20 53 70  72 69 74 65 6e 61 6d 65  |ndow. Spritename|
0002b430  20 69 73 20 22 73 63 72  65 65 6e 64 75 6d 70 22  | is "screendump"|
0002b440  2e 00 00 00 44 41 54 41  be 00 00 00 52 65 6e 61  |....DATA....Rena|
0002b450  6d 65 20 73 70 72 69 74  65 20 20 28 32 36 29 0a  |me sprite  (26).|
0002b460  3d 3e 09 52 30 20 3d 09  3c 32 36 3d 3e 4f 53 5f  |=>.R0 =.<26=>OS_|
0002b470  73 70 72 69 74 65 6f 70  5f 52 65 61 73 6f 6e 32  |spriteop_Reason2|
0002b480  3e 0a 09 52 31 20 3d 09  3c 53 70 72 69 74 65 20  |>..R1 =.<Sprite |
0002b490  61 72 65 61 3d 3e 4f 53  5f 53 70 72 69 74 65 4f  |area=>OS_SpriteO|
0002b4a0  70 5f 41 72 65 61 3e 0a  09 52 32 20 3d 09 53 70  |p_Area>..R2 =.Sp|
0002b4b0  72 69 74 65 20 6e 61 6d  65 2f 70 6f 69 6e 74 65  |rite name/pointe|
0002b4c0  72 0a 09 52 33 20 3d 09  6e 65 77 20 6e 61 6d 65  |r..R3 =.new name|
0002b4d0  20 6f 66 20 73 70 72 69  74 65 0a 0a 54 68 69 73  | of sprite..This|
0002b4e0  20 53 57 49 20 72 65 6e  61 6d 65 73 20 74 68 65  | SWI renames the|
0002b4f0  20 73 70 65 63 69 66 69  65 64 20 73 70 72 69 74  | specified sprit|
0002b500  65 2e 00 00 44 41 54 41  de 00 00 00 53 63 72 65  |e...DATA....Scre|
0002b510  65 6e 20 6c 6f 61 64 20  20 28 33 29 0a 3d 3e 09  |en load  (3).=>.|
0002b520  52 30 20 3d 09 3c 33 3d  3e 6f 73 5f 73 70 72 69  |R0 =.<3=>os_spri|
0002b530  74 65 6f 70 5f 72 65 61  73 6f 6e 32 3e 0a 09 52  |teop_reason2>..R|
0002b540  32 20 3d 09 70 61 74 68  6e 61 6d 65 0a 0a 54 68  |2 =.pathname..Th|
0002b550  69 73 20 53 57 49 20 70  6c 6f 74 73 20 74 68 65  |is SWI plots the|
0002b560  20 66 69 72 73 74 20 73  70 72 69 74 65 20 69 6e  | first sprite in|
0002b570  20 74 68 65 20 66 69 6c  65 20 69 6e 20 74 68 65  | the file in the|
0002b580  20 62 6f 74 74 6f 6d 20  6c 65 66 74 20 6f 66 20  | bottom left of |
0002b590  74 68 65 20 67 72 61 70  68 69 63 73 20 77 69 6e  |the graphics win|
0002b5a0  64 6f 77 2e 20 43 68 61  6e 67 65 73 20 6d 6f 64  |dow. Changes mod|
0002b5b0  65 20 69 66 20 6e 65 63  63 65 73 73 61 72 79 2c  |e if neccessary,|
0002b5c0  20 61 6e 64 20 73 65 74  73 20 70 61 6c 65 74 74  | and sets palett|
0002b5d0  65 20 69 66 20 74 68 65  72 65 20 69 73 20 61 6e  |e if there is an|
0002b5e0  79 2e 00 00 44 41 54 41  45 01 00 00 50 75 74 20  |y...DATAE...Put |
0002b5f0  73 70 72 69 74 65 20 61  74 20 63 6f 2d 6f 72 64  |sprite at co-ord|
0002b600  73 20 20 28 33 34 29 0a  3d 3e 09 52 30 20 3d 20  |s  (34).=>.R0 = |
0002b610  3c 33 34 3d 3e 4f 53 5f  73 70 72 69 74 65 6f 70  |<34=>OS_spriteop|
0002b620  5f 52 65 61 73 6f 6e 32  3e 0a 09 52 31 20 3d 20  |_Reason2>..R1 = |
0002b630  3c 53 70 72 69 74 65 20  61 72 65 61 3d 3e 4f 53  |<Sprite area=>OS|
0002b640  5f 53 70 72 69 74 65 4f  70 5f 41 72 65 61 3e 0a  |_SpriteOp_Area>.|
0002b650  09 52 32 20 3d 20 53 70  72 69 74 65 20 6e 61 6d  |.R2 = Sprite nam|
0002b660  65 2f 70 6f 69 6e 74 65  72 0a 09 52 33 20 3d 20  |e/pointer..R3 = |
0002b670  78 0a 09 52 34 20 3d 20  79 0a 09 52 35 20 3d 20  |x..R4 = y..R5 = |
0002b680  3c 61 63 74 69 6f 6e 3d  3e 4f 53 5f 53 70 72 69  |<action=>OS_Spri|
0002b690  74 65 4f 70 5f 41 63 74  69 6f 6e 3e 0a 0a 54 68  |teOp_Action>..Th|
0002b6a0  69 73 20 53 57 49 20 70  6c 6f 74 73 20 74 68 65  |is SWI plots the|
0002b6b0  20 73 70 72 69 74 65 20  73 70 65 63 69 66 69 65  | sprite specifie|
0002b6c0  64 20 61 74 20 74 68 65  20 63 6f 2d 6f 72 64 69  |d at the co-ordi|
0002b6d0  6e 61 74 65 73 20 67 69  76 65 6e 2e 20 44 6f 20  |nates given. Do |
0002b6e0  6e 6f 74 20 75 73 65 20  69 66 20 6e 6f 74 20 69  |not use if not i|
0002b6f0  6e 20 74 68 65 20 73 61  6d 65 20 6d 6f 64 65 20  |n the same mode |
0002b700  73 74 79 6c 65 20 28 63  6f 6c 6f 75 72 73 2f 72  |style (colours/r|
0002b710  65 73 6f 6c 75 74 69 6f  6e 29 20 61 73 20 74 68  |esolution) as th|
0002b720  65 20 73 70 72 69 74 65  2e 00 00 00 44 41 54 41  |e sprite....DATA|
0002b730  e1 01 00 00 53 65 74 20  70 6f 69 6e 74 65 72 20  |....Set pointer |
0002b740  73 68 61 70 65 20 20 28  33 36 29 0a 3d 3e 09 52  |shape  (36).=>.R|
0002b750  30 20 3d 09 3c 33 36 3d  3e 4f 53 5f 53 70 72 69  |0 =.<36=>OS_Spri|
0002b760  74 65 4f 70 5f 52 65 61  73 6f 6e 32 3e 0a 09 52  |teOp_Reason2>..R|
0002b770  31 20 3d 09 3c 53 70 72  69 74 65 20 61 72 65 61  |1 =.<Sprite area|
0002b780  3d 3e 4f 53 5f 53 70 72  69 74 65 4f 70 5f 41 72  |=>OS_SpriteOp_Ar|
0002b790  65 61 3e 0a 09 52 32 20  3d 09 53 70 72 69 74 65  |ea>..R2 =.Sprite|
0002b7a0  20 6e 61 6d 65 2f 70 6f  69 6e 74 65 72 0a 09 52  | name/pointer..R|
0002b7b0  33 20 3d 09 3c 66 6c 61  67 73 3d 3e 2e 66 6c 61  |3 =.<flags=>.fla|
0002b7c0  67 73 3e 0a 09 52 34 20  3d 09 58 20 6f 66 66 73  |gs>..R4 =.X offs|
0002b7d0  65 74 20 6f 66 20 61 63  74 69 76 65 20 70 6f 69  |et of active poi|
0002b7e0  6e 74 0a 09 52 35 20 3d  09 59 20 6f 66 66 73 65  |nt..R5 =.Y offse|
0002b7f0  74 20 6f 66 20 61 63 74  69 76 65 20 70 6f 69 6e  |t of active poin|
0002b800  74 0a 09 52 36 20 3d 09  53 63 61 6c 65 20 66 61  |t..R6 =.Scale fa|
0002b810  63 74 6f 72 73 20 28 30  20 66 6f 72 20 74 68 69  |ctors (0 for thi|
0002b820  73 20 6d 6f 64 65 29 0a  09 52 37 20 3d 09 70 69  |s mode)..R7 =.pi|
0002b830  78 65 6c 20 74 72 61 6e  73 20 74 61 62 6c 65 0a  |xel trans table.|
0002b840  0a 54 68 69 73 20 53 57  49 20 73 65 74 73 20 6f  |.This SWI sets o|
0002b850  6e 65 20 6f 66 20 74 68  65 20 66 6f 75 72 20 70  |ne of the four p|
0002b860  6f 69 6e 74 65 72 20 73  68 61 70 65 73 2e 20 28  |ointer shapes. (|
0002b870  52 34 2c 52 35 29 20 69  73 20 70 69 78 65 6c 2d  |R4,R5) is pixel-|
0002b880  6f 66 66 73 65 74 20 66  72 6f 6d 20 74 6f 70 20  |offset from top |
0002b890  6c 65 66 74 20 63 6f 72  6e 65 72 2e 0a 23 53 75  |left corner..#Su|
0002b8a0  62 70 61 67 65 20 66 6c  61 67 73 0a 42 69 74 73  |bpage flags.Bits|
0002b8b0  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.Meaning.#Line.0|
0002b8c0  2d 33 09 50 74 72 20 6e  72 2e 20 28 31 2d 34 29  |-3.Ptr nr. (1-4)|
0002b8d0  0a 34 09 30 20 3d 3e 20  53 65 74 20 73 68 61 70  |.4.0 => Set shap|
0002b8e0  65 20 64 61 74 61 0a 35  09 30 20 3d 3e 20 53 65  |e data.5.0 => Se|
0002b8f0  74 20 70 61 6c 65 74 74  65 0a 36 09 30 20 3d 3e  |t palette.6.0 =>|
0002b900  20 53 65 74 20 70 74 72  20 6e 72 2e 0a 00 00 00  | Set ptr nr.....|
0002b910  44 41 54 41 52 01 00 00  52 65 61 64 20 73 70 72  |DATAR...Read spr|
0002b920  69 74 65 20 69 6e 66 6f  20 20 28 34 30 29 0a 3d  |ite info  (40).=|
0002b930  3e 09 52 30 20 3d 20 3c  34 30 3d 3e 4f 53 5f 53  |>.R0 = <40=>OS_S|
0002b940  70 72 69 74 65 4f 70 5f  52 65 61 73 6f 6e 32 3e  |priteOp_Reason2>|
0002b950  0a 09 52 31 20 3d 20 3c  53 70 72 69 74 65 20 61  |..R1 = <Sprite a|
0002b960  72 65 61 3d 3e 4f 53 5f  53 70 72 69 74 65 4f 70  |rea=>OS_SpriteOp|
0002b970  5f 41 72 65 61 3e 0a 09  52 32 20 3d 20 53 70 72  |_Area>..R2 = Spr|
0002b980  69 74 65 20 6e 61 6d 65  2f 70 74 72 0a 0a 5c 3c  |ite name/ptr..\<|
0002b990  3d 09 52 33 20 3d 20 77  69 64 74 68 20 69 6e 20  |=.R3 = width in |
0002b9a0  70 69 78 65 6c 73 0a 09  52 34 20 3d 20 68 65 69  |pixels..R4 = hei|
0002b9b0  67 68 74 20 69 6e 20 70  69 78 65 6c 73 0a 09 52  |ght in pixels..R|
0002b9c0  35 20 3d 20 30 2c 31 20  66 6f 72 20 6d 61 73 6b  |5 = 0,1 for mask|
0002b9d0  20 6e 6f 2c 79 65 73 0a  09 52 36 20 3d 20 4d 6f  | no,yes..R6 = Mo|
0002b9e0  64 65 0a 0a 54 68 69 73  20 53 57 49 20 72 65 74  |de..This SWI ret|
0002b9f0  75 72 6e 73 20 69 6e 66  6f 20 61 62 6f 75 74 20  |urns info about |
0002ba00  74 68 65 20 67 69 76 65  6e 20 73 70 72 69 74 65  |the given sprite|
0002ba10  2e 0a 54 6f 20 66 69 6e  64 20 4f 53 20 77 69 64  |..To find OS wid|
0002ba20  74 68 20 61 6e 64 20 68  65 69 67 68 74 2c 20 72  |th and height, r|
0002ba30  65 61 64 20 3c 6d 6f 64  65 20 76 61 72 69 61 62  |ead <mode variab|
0002ba40  6c 65 73 3d 3e 4f 53 5f  52 65 61 64 4d 6f 64 65  |les=>OS_ReadMode|
0002ba50  56 61 72 69 61 62 6c 65  3e 20 34 20 61 6e 64 20  |Variable> 4 and |
0002ba60  35 2e 00 00 44 41 54 41  34 01 00 00 49 6e 69 74  |5...DATA4...Init|
0002ba70  69 61 6c 69 73 65 20 61  72 65 61 20 20 28 39 29  |ialise area  (9)|
0002ba80  0a 3d 3e 09 52 30 20 3d  20 3c 39 3d 3e 4f 53 5f  |.=>.R0 = <9=>OS_|
0002ba90  73 70 72 69 74 65 6f 70  5f 72 65 61 73 6f 6e 32  |spriteop_reason2|
0002baa0  3e 0a 09 52 31 20 3d 20  3c 53 70 72 69 74 65 20  |>..R1 = <Sprite |
0002bab0  61 72 65 61 3d 3e 4f 53  5f 53 70 72 69 74 65 4f  |area=>OS_SpriteO|
0002bac0  70 5f 41 72 65 61 3e 0a  0a 54 68 69 73 20 53 57  |p_Area>..This SW|
0002bad0  49 20 63 6c 65 61 72 73  20 61 6c 6c 20 73 70 72  |I clears all spr|
0002bae0  69 74 65 73 20 66 72 6f  6d 20 74 68 65 20 73 70  |ites from the sp|
0002baf0  72 69 74 65 20 61 72 65  61 20 73 70 65 63 69 66  |rite area specif|
0002bb00  69 65 64 2e 20 54 6f 20  73 74 61 72 74 20 75 73  |ied. To start us|
0002bb10  69 6e 67 20 61 20 73 70  72 69 74 65 20 61 72 65  |ing a sprite are|
0002bb20  61 20 73 65 74 20 74 68  65 20 61 72 65 61 20 62  |a set the area b|
0002bb30  6c 6f 63 6b 20 3a 0a 30  09 53 69 7a 65 20 6f 66  |lock :.0.Size of|
0002bb40  20 61 72 65 61 0a 34 09  30 20 28 6e 75 6d 62 65  | area.4.0 (numbe|
0002bb50  72 20 6f 66 20 73 70 72  69 74 65 73 29 0a 38 09  |r of sprites).8.|
0002bb60  31 36 20 28 70 74 72 20  74 6f 20 66 69 72 73 74  |16 (ptr to first|
0002bb70  20 73 70 72 69 74 65 29  0a 31 32 09 31 36 20 28  | sprite).12.16 (|
0002bb80  70 74 72 20 74 6f 20 66  69 72 73 74 20 66 72 65  |ptr to first fre|
0002bb90  65 20 77 6f 72 64 29 0a  44 41 54 41 35 02 00 00  |e word).DATA5...|
0002bba0  41 63 74 69 6f 6e 20 63  6f 64 65 73 20 77 68 65  |Action codes whe|
0002bbb0  6e 20 70 6c 6f 74 74 69  6e 67 20 73 70 72 69 74  |n plotting sprit|
0002bbc0  65 73 0a 56 61 6c 75 65  09 4d 65 61 6e 69 6e 67  |es.Value.Meaning|
0002bbd0  0a 23 4c 69 6e 65 0a 30  09 4f 76 65 72 77 72 69  |.#Line.0.Overwri|
0002bbe0  74 65 0a 31 09 44 69 73  6a 6f 69 6e 20 28 4f 52  |te.1.Disjoin (OR|
0002bbf0  29 0a 32 09 43 6f 6e 6a  6f 69 6e 20 28 41 4e 44  |).2.Conjoin (AND|
0002bc00  29 0a 33 09 45 78 63 6c  75 73 69 76 65 20 44 69  |).3.Exclusive Di|
0002bc10  73 6a 6f 69 6e 20 28 45  4f 52 29 0a 34 09 49 6e  |sjoin (EOR).4.In|
0002bc20  76 65 72 74 20 73 63 72  65 65 6e 0a 35 09 49 64  |vert screen.5.Id|
0002bc30  65 6e 74 69 74 79 20 28  4e 6f 20 63 68 61 6e 67  |entity (No chang|
0002bc40  65 29 0a 36 09 43 6f 6e  6a 6f 69 6e 20 4e 65 67  |e).6.Conjoin Neg|
0002bc50  61 74 69 6f 6e 20 28 3f  29 0a 37 09 44 69 73 6a  |ation (?).7.Disj|
0002bc60  6f 69 6e 20 4e 65 67 61  74 69 6f 6e 20 28 3f 29  |oin Negation (?)|
0002bc70  0a 38 09 55 73 65 20 6d  61 73 6b 20 28 63 61 6e  |.8.Use mask (can|
0002bc80  20 62 65 20 61 64 64 65  64 29 0a 23 57 72 61 70  | be added).#Wrap|
0002bc90  20 6f 66 66 0a 31 36 09  55 73 65 20 45 43 46 20  | off.16.Use ECF |
0002bca0  31 09 7d 0a 33 32 09 55  73 65 20 45 43 46 20 32  |1.}.32.Use ECF 2|
0002bcb0  09 7d 20 4f 6e 6c 79 20  6f 6e 65 20 6f 66 20 74  |.} Only one of t|
0002bcc0  68 65 73 65 20 6d 61 79  0a 34 38 09 55 73 65 20  |hese may.48.Use |
0002bcd0  45 43 46 20 33 09 7d 20  62 65 20 75 73 65 64 0a  |ECF 3.} be used.|
0002bce0  36 34 09 55 73 65 20 45  43 46 20 34 09 7d 0a 38  |64.Use ECF 4.}.8|
0002bcf0  30 09 55 73 65 20 67 69  61 6e 74 20 45 43 46 09  |0.Use giant ECF.|
0002bd00  7d 0a 0a 23 57 72 61 70  20 6f 6e 0a 49 6e 20 74  |}..#Wrap on.In t|
0002bd10  68 65 20 41 63 6f 72 6e  20 41 61 73 6d 20 68 65  |he Acorn Aasm he|
0002bd20  61 64 65 72 20 66 69 6c  65 73 20 49 20 75 73 65  |ader files I use|
0002bd30  20 66 6f 72 20 72 65 66  65 72 65 6e 63 65 20 69  | for reference i|
0002bd40  74 20 61 6c 73 6f 20 73  70 65 63 69 66 69 65 73  |t also specifies|
0002bd50  20 74 68 61 74 20 33 32  20 6d 61 79 20 62 65 20  | that 32 may be |
0002bd60  75 73 65 64 20 74 6f 20  6d 65 61 6e 20 55 73 65  |used to mean Use|
0002bd70  20 73 70 72 69 74 65 20  70 61 6c 65 74 74 65 2c  | sprite palette,|
0002bd80  20 62 75 74 20 49 20 63  61 6e 6e 6f 74 20 72 65  | but I cannot re|
0002bd90  63 6f 6e 63 69 6c 65 20  74 68 69 73 20 77 69 74  |concile this wit|
0002bda0  68 20 74 68 65 20 72 65  73 74 20 6f 66 20 74 68  |h the rest of th|
0002bdb0  65 20 74 61 62 6c 65 20  6e 6f 72 20 6f 74 68 65  |e table nor othe|
0002bdc0  72 20 6c 69 74 65 72 61  74 75 72 65 2e 00 00 00  |r literature....|
0002bdd0  44 41 54 41 64 01 00 00  46 6f 72 6d 61 74 20 6f  |DATAd...Format o|
0002bde0  66 20 73 70 72 69 74 65  20 61 72 65 61 0a 41 20  |f sprite area.A |
0002bdf0  73 70 72 69 74 65 20 61  72 65 61 20 63 6f 6e 73  |sprite area cons|
0002be00  69 73 74 73 20 6f 66 20  61 20 63 6f 6e 74 72 6f  |ists of a contro|
0002be10  6c 20 62 6c 6f 63 6b 20  66 6f 6c 6c 6f 77 65 64  |l block followed|
0002be20  20 62 79 20 61 6e 20 6f  70 74 69 6f 6e 61 6c 20  | by an optional |
0002be30  65 78 74 65 6e 73 69 6f  6e 20 61 72 65 61 2c 20  |extension area, |
0002be40  73 70 72 69 74 65 73 2c  20 61 6e 64 20 66 72 65  |sprites, and fre|
0002be50  65 20 73 70 61 63 65 2e  20 4e 6f 74 65 20 74 68  |e space. Note th|
0002be60  61 74 20 61 20 73 70 72  69 74 65 20 61 72 65 61  |at a sprite area|
0002be70  20 69 73 20 73 61 76 65  64 20 77 69 74 68 6f 75  | is saved withou|
0002be80  74 20 69 74 73 20 66 69  72 73 74 20 77 6f 72 64  |t its first word|
0002be90  2e 0a 0a 20 30 09 54 6f  74 61 6c 20 73 69 7a 65  |... 0.Total size|
0002bea0  20 6f 66 20 73 70 72 69  74 65 20 61 72 65 61 0a  | of sprite area.|
0002beb0  20 34 09 4e 72 20 6f 66  20 73 70 72 69 74 65 73  | 4.Nr of sprites|
0002bec0  20 69 6e 20 61 72 65 61  0a 20 38 09 4f 66 66 73  | in area. 8.Offs|
0002bed0  65 74 20 74 6f 20 31 73  74 20 3c 73 70 72 69 74  |et to 1st <sprit|
0002bee0  65 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 70  |e=>os_spriteop_p|
0002bef0  74 72 3e 0a 20 31 32 09  4f 66 66 73 65 74 20 74  |tr>. 12.Offset t|
0002bf00  6f 20 31 73 74 20 66 72  65 65 20 77 6f 72 64 0a  |o 1st free word.|
0002bf10  20 31 36 2e 2e 09 45 78  74 65 6e 73 69 6f 6e 20  | 16...Extension |
0002bf20  77 6f 72 64 73 20 28 75  73 75 61 6c 6c 79 20 6e  |words (usually n|
0002bf30  6f 6e 65 29 44 41 54 41  95 03 00 00 46 6f 72 6d  |one)DATA....Form|
0002bf40  61 74 20 6f 66 20 73 70  72 69 74 65 0a 30 09 4f  |at of sprite.0.O|
0002bf50  66 66 73 65 74 20 74 6f  20 6e 65 78 74 20 73 70  |ffset to next sp|
0002bf60  72 69 74 65 0a 34 09 53  70 72 69 74 65 20 6e 61  |rite.4.Sprite na|
0002bf70  6d 65 20 28 6d 61 78 20  31 32 20 63 68 61 72 73  |me (max 12 chars|
0002bf80  29 0a 31 36 09 57 69 64  74 68 20 69 6e 20 77 6f  |).16.Width in wo|
0002bf90  72 64 73 20 2d 20 31 0a  32 30 09 48 65 69 67 68  |rds - 1.20.Heigh|
0002bfa0  74 20 69 6e 20 73 63 61  6e 20 6c 69 6e 65 73 20  |t in scan lines |
0002bfb0  2d 20 31 0a 32 34 09 46  69 72 73 74 20 62 69 74  |- 1.24.First bit|
0002bfc0  20 75 73 65 64 20 28 6c  65 66 74 29 0a 32 38 09  | used (left).28.|
0002bfd0  4c 61 73 74 20 62 69 74  20 75 73 65 64 20 20 28  |Last bit used  (|
0002bfe0  72 69 67 68 74 29 0a 33  32 09 4f 66 66 73 65 74  |right).32.Offset|
0002bff0  20 74 6f 20 73 70 72 69  74 65 20 69 6d 61 67 65  | to sprite image|
0002c000  0a 33 36 09 4f 66 66 73  65 74 20 74 6f 20 73 70  |.36.Offset to sp|
0002c010  72 69 74 65 20 6d 61 73  6b 2c 20 6f 72 20 73 70  |rite mask, or sp|
0002c020  72 69 74 65 20 69 74 73  65 6c 66 20 69 66 20 6e  |rite itself if n|
0002c030  6f 6e 65 0a 34 30 09 3c  73 70 72 69 74 65 20 74  |one.40.<sprite t|
0002c040  79 70 65 3d 3e 2e 74 79  70 65 3e 0a 34 34 2e 2e  |ype=>.type>.44..|
0002c050  09 50 61 6c 65 74 74 65  20 64 61 74 61 0a 23 0a  |.Palette data.#.|
0002c060  23 53 75 62 70 61 67 65  20 74 79 70 65 0a 53 70  |#Subpage type.Sp|
0002c070  72 69 74 65 20 54 79 70  65 20 46 69 65 6c 64 0a  |rite Type Field.|
0002c080  62 69 74 73 20 32 37 2d  33 31 09 4d 65 61 6e 69  |bits 27-31.Meani|
0002c090  6e 67 0a 23 6c 69 6e 65  0a 30 09 4f 6c 64 20 66  |ng.#line.0.Old f|
0002c0a0  6f 72 6d 61 74 20 6d 6f  64 65 20 77 6f 72 64 2e  |ormat mode word.|
0002c0b0  20 4d 6f 64 65 20 69 73  20 69 6e 20 62 69 74 73  | Mode is in bits|
0002c0c0  20 30 2d 36 20 6f 66 20  74 68 65 20 4d 6f 64 65  | 0-6 of the Mode|
0002c0d0  20 57 6f 72 64 0a 0a 31  09 31 20 62 70 70 0a 32  | Word..1.1 bpp.2|
0002c0e0  09 32 20 62 70 70 0a 33  09 34 20 62 70 70 0a 34  |.2 bpp.3.4 bpp.4|
0002c0f0  09 38 20 62 70 70 0a 35  09 31 36 20 62 70 70 0a  |.8 bpp.5.16 bpp.|
0002c100  36 09 32 34 20 62 70 70  0a 37 09 43 4d 59 4b 20  |6.24 bpp.7.CMYK |
0002c110  66 6f 72 6d 61 74 20 61  6c 6c 6f 63 61 74 65 64  |format allocated|
0002c120  20 74 6f 20 43 43 0a 38  09 32 34 20 62 70 70 20  | to CC.8.24 bpp |
0002c130  66 6f 72 6d 61 74 20 61  6c 6c 6f 63 61 74 65 64  |format allocated|
0002c140  20 74 6f 20 43 43 0a 39  2d 33 31 09 46 6f 72 20  | to CC.9-31.For |
0002c150  66 75 74 75 72 65 20 65  78 70 61 6e 73 69 6f 6e  |future expansion|
0002c160  0a 0a 49 66 20 54 79 70  65 20 46 69 65 6c 64 20  |..If Type Field |
0002c170  69 73 20 6e 6f 6e 2d 7a  65 72 6f 2c 20 74 68 65  |is non-zero, the|
0002c180  6e 20 62 69 74 73 20 30  2d 32 36 20 61 72 65 3a  |n bits 0-26 are:|
0002c190  0a 62 69 74 28 73 29 09  4d 65 61 6e 69 6e 67 0a  |.bit(s).Meaning.|
0002c1a0  30 09 54 61 6b 65 73 20  74 68 65 20 76 61 6c 75  |0.Takes the valu|
0002c1b0  65 20 31 2c 20 74 6f 20  64 69 73 74 69 6e 67 75  |e 1, to distingu|
0002c1c0  69 73 68 20 74 68 69 73  20 66 72 6f 6d 20 61 20  |ish this from a |
0002c1d0  73 6f 2d 63 61 6c 6c 65  64 20 3c 6d 6f 64 65 20  |so-called <mode |
0002c1e0  73 65 6c 65 63 74 6f 72  3d 3e 57 69 6d 70 5f 4d  |selector=>Wimp_M|
0002c1f0  6f 64 65 53 65 6c 65 63  74 3e 0a 31 2d 31 33 09  |odeSelect>.1-13.|
0002c200  48 6f 72 69 7a 6f 6e 74  61 6c 20 64 6f 74 73 20  |Horizontal dots |
0002c210  70 65 72 20 69 6e 63 68  20 6f 66 20 73 70 72 69  |per inch of spri|
0002c220  74 65 0a 31 34 2d 32 36  09 56 65 72 74 69 63 61  |te.14-26.Vertica|
0002c230  6c 20 64 6f 74 73 20 70  65 72 20 69 6e 63 68 20  |l dots per inch |
0002c240  6f 66 20 73 70 72 69 74  65 2e 20 4f 6e 6c 79 20  |of sprite. Only |
0002c250  39 30 20 d7 20 34 35 20  61 6e 64 20 39 30 20 d7  |90 . 45 and 90 .|
0002c260  20 39 30 20 77 69 6c 6c  20 69 6e 69 74 69 61 6c  | 90 will initial|
0002c270  6c 79 20 62 65 20 73 75  70 70 6f 72 74 65 64 20  |ly be supported |
0002c280  28 63 6f 72 72 65 73 70  6f 6e 64 69 6e 67 20 74  |(corresponding t|
0002c290  6f 20 74 68 65 20 6c 6f  77 20 61 6e 64 20 68 69  |o the low and hi|
0002c2a0  67 68 20 76 65 72 74 69  63 61 6c 20 72 65 73 6f  |gh vertical reso|
0002c2b0  6c 75 74 69 6f 6e 73 20  63 75 72 72 65 6e 74 6c  |lutions currentl|
0002c2c0  79 20 69 6e 20 75 73 65  29 00 00 00 44 41 54 41  |y in use)...DATA|
0002c2d0  41 07 00 00 4f 53 5f 53  70 72 69 74 65 4f 70 20  |A...OS_SpriteOp |
0002c2e0  72 65 61 73 6f 6e 20 63  6f 64 65 73 0a 52 30 09  |reason codes.R0.|
0002c2f0  41 63 74 69 6f 6e 0a 23  4c 69 6e 65 0a 32 09 3c  |Action.#Line.2.<|
0002c300  53 63 72 65 65 6e 20 73  61 76 65 3d 3e 6f 73 5f  |Screen save=>os_|
0002c310  73 70 72 69 74 65 6f 70  5f 32 3e 0a 33 09 3c 53  |spriteop_2>.3.<S|
0002c320  63 72 65 65 6e 20 6c 6f  61 64 3d 3e 6f 73 5f 73  |creen load=>os_s|
0002c330  70 72 69 74 65 6f 70 5f  33 3e 0a 38 09 3c 52 65  |priteop_3>.8.<Re|
0002c340  61 64 20 61 72 65 61 20  63 6f 6e 74 72 6f 6c 20  |ad area control |
0002c350  62 6c 6f 63 6b 3d 3e 6f  73 5f 73 70 72 69 74 65  |block=>os_sprite|
0002c360  6f 70 5f 38 3e 0a 39 09  3c 49 6e 69 74 69 61 6c  |op_8>.9.<Initial|
0002c370  69 73 65 20 73 70 72 69  74 65 20 61 72 65 61 3d  |ise sprite area=|
0002c380  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 39 3e 0a  |>os_spriteop_9>.|
0002c390  41 09 3c 4c 6f 61 64 20  73 70 72 69 74 65 20 66  |A.<Load sprite f|
0002c3a0  69 6c 65 3d 3e 4f 53 5f  53 70 72 69 74 65 4f 70  |ile=>OS_SpriteOp|
0002c3b0  5f 31 30 3e 0a 42 09 3c  4d 65 72 67 65 20 73 70  |_10>.B.<Merge sp|
0002c3c0  72 69 74 65 20 66 69 6c  65 3d 3e 4f 53 5f 53 70  |rite file=>OS_Sp|
0002c3d0  72 69 74 65 4f 70 5f 31  31 3e 0a 43 09 3c 53 61  |riteOp_11>.C.<Sa|
0002c3e0  76 65 20 73 70 72 69 74  65 20 66 69 6c 65 3d 3e  |ve sprite file=>|
0002c3f0  4f 53 5f 53 70 72 69 74  65 4f 70 5f 31 32 3e 0a  |OS_SpriteOp_12>.|
0002c400  44 09 3c 52 65 74 75 72  6e 20 6e 61 6d 65 3d 3e  |D.<Return name=>|
0002c410  4f 53 5f 53 70 72 69 74  65 4f 70 5f 31 33 3e 0a  |OS_SpriteOp_13>.|
0002c420  45 09 3c 47 65 74 20 73  70 72 69 74 65 3d 3e 4f  |E.<Get sprite=>O|
0002c430  53 5f 53 70 72 69 74 65  4f 70 5f 31 34 3e 0a 46  |S_SpriteOp_14>.F|
0002c440  09 3c 43 72 65 61 74 65  20 73 70 72 69 74 65 3d  |.<Create sprite=|
0002c450  3e 4f 53 5f 53 70 72 69  74 65 4f 70 5f 31 35 3e  |>OS_SpriteOp_15>|
0002c460  0a 31 30 09 3c 47 65 74  20 73 70 72 69 74 65 20  |.10.<Get sprite |
0002c470  66 72 6f 6d 20 75 73 65  72 20 63 6f 6f 72 64 73  |from user coords|
0002c480  3d 3e 4f 53 5f 53 70 72  69 74 65 4f 70 5f 31 36  |=>OS_SpriteOp_16|
0002c490  3e 0a 31 38 09 3c 53 65  6c 65 63 74 20 73 70 72  |>.18.<Select spr|
0002c4a0  69 74 65 3d 3e 4f 53 5f  53 70 72 69 74 65 4f 70  |ite=>OS_SpriteOp|
0002c4b0  5f 32 34 3e 0a 31 39 09  3c 44 65 6c 65 74 65 20  |_24>.19.<Delete |
0002c4c0  73 70 72 69 74 65 3d 3e  4f 53 5f 53 70 72 69 74  |sprite=>OS_Sprit|
0002c4d0  65 4f 70 5f 32 35 3e 0a  31 41 09 3c 52 65 6e 61  |eOp_25>.1A.<Rena|
0002c4e0  6d 65 20 73 70 72 69 74  65 3d 3e 4f 53 5f 53 70  |me sprite=>OS_Sp|
0002c4f0  72 69 74 65 4f 70 5f 32  36 3e 0a 31 42 09 3c 43  |riteOp_26>.1B.<C|
0002c500  6f 70 79 20 73 70 72 69  74 65 3d 3e 4f 53 5f 53  |opy sprite=>OS_S|
0002c510  70 72 69 74 65 4f 70 5f  32 37 3e 0a 31 43 09 3c  |priteOp_27>.1C.<|
0002c520  50 75 74 20 73 70 72 69  74 65 3d 3e 4f 53 5f 53  |Put sprite=>OS_S|
0002c530  70 72 69 74 65 4f 70 5f  32 38 3e 0a 31 44 09 3c  |priteOp_28>.1D.<|
0002c540  43 72 65 61 74 65 20 6d  61 73 6b 3d 3e 4f 53 5f  |Create mask=>OS_|
0002c550  53 70 72 69 74 65 4f 70  5f 32 39 3e 0a 31 45 09  |SpriteOp_29>.1E.|
0002c560  3c 52 65 6d 6f 76 65 20  6d 61 73 6b 3d 3e 4f 53  |<Remove mask=>OS|
0002c570  5f 53 70 72 69 74 65 4f  70 5f 33 30 3e 0a 31 46  |_SpriteOp_30>.1F|
0002c580  09 3c 49 6e 73 65 72 74  20 72 6f 77 3d 3e 4f 53  |.<Insert row=>OS|
0002c590  5f 53 70 72 69 74 65 4f  70 5f 33 31 3e 0a 32 30  |_SpriteOp_31>.20|
0002c5a0  09 3c 44 65 6c 65 74 65  20 72 6f 77 3d 3e 4f 53  |.<Delete row=>OS|
0002c5b0  5f 53 70 72 69 74 65 4f  70 5f 33 32 3e 0a 32 31  |_SpriteOp_32>.21|
0002c5c0  09 3c 46 6c 69 70 20 61  62 6f 75 74 20 78 20 61  |.<Flip about x a|
0002c5d0  78 69 73 3d 3e 4f 53 5f  53 70 72 69 74 65 4f 70  |xis=>OS_SpriteOp|
0002c5e0  5f 33 33 3e 0a 32 32 09  3c 50 75 74 20 73 70 72  |_33>.22.<Put spr|
0002c5f0  69 74 65 20 61 74 20 75  73 65 72 20 63 6f 6f 72  |ite at user coor|
0002c600  64 73 3d 3e 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |ds=>OS_SpriteOp_|
0002c610  33 34 3e 0a 32 33 09 3c  41 70 70 65 6e 64 20 73  |34>.23.<Append s|
0002c620  70 72 69 74 65 3d 3e 4f  53 5f 53 70 72 69 74 65  |prite=>OS_Sprite|
0002c630  4f 70 5f 33 35 3e 0a 32  34 09 3c 53 65 74 20 70  |Op_35>.24.<Set p|
0002c640  6f 69 6e 74 65 72 20 73  68 61 70 65 3d 3e 6f 73  |ointer shape=>os|
0002c650  5f 73 70 72 69 74 65 6f  70 5f 33 36 3e 0a 32 35  |_spriteop_36>.25|
0002c660  09 3c 43 72 65 61 74 65  2f 72 65 6d 6f 76 65 20  |.<Create/remove |
0002c670  70 61 6c 65 74 74 65 3d  3e 6f 73 5f 73 70 72 69  |palette=>os_spri|
0002c680  74 65 6f 70 5f 33 37 3e  0a 32 38 09 3c 52 65 61  |teop_37>.28.<Rea|
0002c690  64 20 73 70 72 69 74 65  20 69 6e 66 6f 3d 3e 6f  |d sprite info=>o|
0002c6a0  73 5f 73 70 72 69 74 65  6f 70 5f 34 30 3e 0a 32  |s_spriteop_40>.2|
0002c6b0  39 09 3c 52 65 61 64 20  70 69 78 65 6c 20 63 6f  |9.<Read pixel co|
0002c6c0  6c 6f 75 72 3d 3e 6f 73  5f 73 70 72 69 74 65 6f  |lour=>os_spriteo|
0002c6d0  70 5f 34 31 3e 0a 32 41  09 3c 57 72 69 74 65 20  |p_41>.2A.<Write |
0002c6e0  70 69 78 65 6c 20 63 6f  6c 6f 75 72 3d 3e 6f 73  |pixel colour=>os|
0002c6f0  5f 73 70 72 69 74 65 6f  70 5f 34 32 3e 0a 32 42  |_spriteop_42>.2B|
0002c700  09 3c 52 65 61 64 20 70  69 78 65 6c 20 6d 61 73  |.<Read pixel mas|
0002c710  6b 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 34  |k=>os_spriteop_4|
0002c720  33 3e 0a 32 43 09 3c 57  72 69 74 65 20 70 69 78  |3>.2C.<Write pix|
0002c730  65 6c 20 6d 61 73 6b 3d  3e 6f 73 5f 73 70 72 69  |el mask=>os_spri|
0002c740  74 65 6f 70 5f 34 34 3e  0a 32 44 09 3c 49 6e 73  |teop_44>.2D.<Ins|
0002c750  65 72 74 20 63 6f 6c 75  6d 6e 3d 3e 6f 73 5f 73  |ert column=>os_s|
0002c760  70 72 69 74 65 6f 70 5f  34 35 3e 0a 32 45 09 3c  |priteop_45>.2E.<|
0002c770  44 65 6c 65 74 65 20 63  6f 6c 75 6d 6e 3d 3e 6f  |Delete column=>o|
0002c780  73 5f 73 70 72 69 74 65  6f 70 5f 34 36 3e 0a 32  |s_spriteop_46>.2|
0002c790  46 09 3c 46 6c 69 70 20  61 62 6f 75 74 20 79 20  |F.<Flip about y |
0002c7a0  61 78 69 73 3d 3e 6f 73  5f 73 70 72 69 74 65 6f  |axis=>os_spriteo|
0002c7b0  70 5f 34 37 3e 0a 33 30  09 3c 50 6c 6f 74 20 73  |p_47>.30.<Plot s|
0002c7c0  70 72 69 74 65 20 6d 61  73 6b 3d 3e 6f 73 5f 73  |prite mask=>os_s|
0002c7d0  70 72 69 74 65 6f 70 5f  34 38 3e 0a 33 31 09 3c  |priteop_48>.31.<|
0002c7e0  50 6c 6f 74 20 6d 61 73  6b 20 61 74 20 75 73 65  |Plot mask at use|
0002c7f0  72 20 63 6f 6f 72 64 73  3d 3e 6f 73 5f 73 70 72  |r coords=>os_spr|
0002c800  69 74 65 6f 70 5f 34 39  3e 0a 33 32 09 3c 50 6c  |iteop_49>.32.<Pl|
0002c810  6f 74 20 6d 61 73 6b 20  73 63 61 6c 65 64 3d 3e  |ot mask scaled=>|
0002c820  6f 73 5f 73 70 72 69 74  65 6f 70 5f 35 30 3e 0a  |os_spriteop_50>.|
0002c830  33 33 09 3c 50 61 69 6e  74 20 63 68 61 72 20 73  |33.<Paint char s|
0002c840  63 61 6c 65 64 3d 3e 6f  73 5f 73 70 72 69 74 65  |caled=>os_sprite|
0002c850  6f 70 5f 35 31 3e 0a 33  34 09 3c 50 61 69 6e 74  |op_51>.34.<Paint|
0002c860  20 73 70 72 69 74 65 20  73 63 61 6c 65 64 3d 3e  | sprite scaled=>|
0002c870  6f 73 5f 73 70 72 69 74  65 6f 70 5f 35 32 3e 0a  |os_spriteop_52>.|
0002c880  33 35 09 3c 50 75 74 20  73 70 72 69 74 65 20 67  |35.<Put sprite g|
0002c890  72 65 79 20 73 63 61 6c  65 64 3d 3e 6f 73 5f 73  |rey scaled=>os_s|
0002c8a0  70 72 69 74 65 6f 70 5f  35 33 3e 0a 33 36 09 3c  |priteop_53>.36.<|
0002c8b0  52 65 6d 6f 76 65 20 6c  65 66 74 68 61 6e 64 20  |Remove lefthand |
0002c8c0  77 61 73 74 61 67 65 3d  3e 6f 73 5f 73 70 72 69  |wastage=>os_spri|
0002c8d0  74 65 6f 70 5f 35 34 3e  0a 33 37 09 3c 50 6c 6f  |teop_54>.37.<Plo|
0002c8e0  74 20 6d 61 73 6b 20 74  72 61 6e 73 66 6f 72 6d  |t mask transform|
0002c8f0  65 64 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |ed=>os_spriteop_|
0002c900  35 35 35 36 3e 0a 33 38  09 3c 50 6c 6f 74 20 73  |5556>.38.<Plot s|
0002c910  70 72 69 74 65 20 74 72  61 6e 73 66 6f 72 6d 65  |prite transforme|
0002c920  64 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 35  |d=>os_spriteop_5|
0002c930  35 35 36 3e 0a 33 39 09  3c 49 6e 73 65 72 74 2f  |556>.39.<Insert/|
0002c940  64 65 6c 65 74 65 20 72  6f 77 73 3d 3e 6f 73 5f  |delete rows=>os_|
0002c950  73 70 72 69 74 65 6f 70  5f 35 37 35 38 3e 0a 33  |spriteop_5758>.3|
0002c960  41 09 3c 49 6e 73 65 72  74 2f 64 65 6c 65 74 65  |A.<Insert/delete|
0002c970  20 63 6f 6c 75 6d 6e 73  3d 3e 6f 73 5f 73 70 72  | columns=>os_spr|
0002c980  69 74 65 6f 70 5f 35 37  35 38 3e 0a 33 43 09 3c  |iteop_5758>.3C.<|
0002c990  53 77 69 74 63 68 20 6f  75 74 70 75 74 20 74 6f  |Switch output to|
0002c9a0  20 73 70 72 69 74 65 3d  3e 6f 73 5f 73 70 72 69  | sprite=>os_spri|
0002c9b0  74 65 6f 70 5f 36 30 3e  0a 33 44 09 3c 53 77 69  |teop_60>.3D.<Swi|
0002c9c0  74 63 68 20 6f 75 74 70  75 74 20 74 6f 20 6d 61  |tch output to ma|
0002c9d0  73 6b 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |sk=>os_spriteop_|
0002c9e0  36 31 3e 0a 33 45 09 3c  52 65 61 64 20 73 61 76  |61>.3E.<Read sav|
0002c9f0  65 20 61 72 65 61 20 73  69 7a 65 3d 3e 6f 73 5f  |e area size=>os_|
0002ca00  73 70 72 69 74 65 6f 70  5f 36 32 3e 0a 00 00 00  |spriteop_62>....|
0002ca10  44 41 54 41 19 01 00 00  50 61 72 61 6d 65 74 65  |DATA....Paramete|
0002ca20  72 73 20 74 6f 20 70 61  73 73 20 74 6f 20 4f 53  |rs to pass to OS|
0002ca30  5f 53 70 72 69 74 65 4f  70 0a 72 65 61 73 6f 6e  |_SpriteOp.reason|
0002ca40  2b 30 09 55 73 65 20 73  79 73 74 65 6d 20 61 72  |+0.Use system ar|
0002ca50  65 61 0a 72 65 61 73 6f  6e 2b 32 35 36 09 55 73  |ea.reason+256.Us|
0002ca60  65 20 75 73 65 72 20 3c  73 70 72 69 74 65 20 61  |e user <sprite a|
0002ca70  72 65 61 3d 3e 4f 53 5f  53 70 72 69 74 65 4f 70  |rea=>OS_SpriteOp|
0002ca80  5f 41 72 65 61 3e 20 70  6f 69 6e 74 65 64 20 74  |_Area> pointed t|
0002ca90  6f 20 62 79 20 52 31 0a  72 65 61 73 6f 6e 2b 35  |o by R1.reason+5|
0002caa0  31 32 09 55 73 65 20 75  73 65 72 20 3c 73 70 72  |12.Use user <spr|
0002cab0  69 74 65 20 61 72 65 61  3d 3e 4f 53 5f 53 70 72  |ite area=>OS_Spr|
0002cac0  69 74 65 4f 70 5f 41 72  65 61 3e 20 70 6f 69 6e  |iteOp_Area> poin|
0002cad0  74 65 64 20 74 6f 20 62  79 20 52 31 2e 20 52 32  |ted to by R1. R2|
0002cae0  20 63 6f 6e 74 61 69 6e  73 20 3c 70 6f 69 6e 74  | contains <point|
0002caf0  65 72 20 74 6f 20 73 70  72 69 74 65 3d 3e 4f 53  |er to sprite=>OS|
0002cb00  5f 53 70 72 69 74 65 4f  70 5f 70 74 72 3e 2c 20  |_SpriteOp_ptr>, |
0002cb10  72 61 74 68 65 72 20 74  68 61 6e 20 73 70 72 69  |rather than spri|
0002cb20  74 65 20 6e 61 6d 65 2e  0a 00 00 00 44 41 54 41  |te name.....DATA|
0002cb30  1b 01 00 00 52 65 61 64  20 61 72 65 61 20 63 6f  |....Read area co|
0002cb40  6e 74 72 6f 6c 20 62 6c  6f 63 6b 20 28 38 29 0a  |ntrol block (8).|
0002cb50  3d 3e 09 52 30 20 3d 09  3c 38 3d 3e 6f 73 5f 73  |=>.R0 =.<8=>os_s|
0002cb60  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0002cb70  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0002cb80  72 65 61 3d 3e 4f 53 5f  53 70 72 69 74 65 4f 70  |rea=>OS_SpriteOp|
0002cb90  5f 41 72 65 61 3e 0a 3c  3d 09 52 32 20 3d 09 53  |_Area>.<=.R2 =.S|
0002cba0  69 7a 65 20 6f 66 20 73  70 72 69 74 65 20 61 72  |ize of sprite ar|
0002cbb0  65 61 0a 09 52 33 20 3d  09 4e 75 6d 62 65 72 20  |ea..R3 =.Number |
0002cbc0  6f 66 20 73 70 72 69 74  65 73 0a 09 52 34 20 3d  |of sprites..R4 =|
0002cbd0  09 4f 66 66 73 65 74 20  74 6f 20 66 69 72 73 74  |.Offset to first|
0002cbe0  20 73 70 72 69 74 65 0a  09 52 35 20 3d 09 4f 66  | sprite..R5 =.Of|
0002cbf0  66 73 65 74 20 74 6f 20  66 69 72 73 74 20 66 72  |fset to first fr|
0002cc00  65 65 20 77 6f 72 64 0a  0a 54 68 69 73 20 63 61  |ee word..This ca|
0002cc10  6c 6c 20 72 65 74 75 72  6e 73 20 69 6e 66 6f 72  |ll returns infor|
0002cc20  6d 61 74 69 6f 6e 20 68  65 6c 64 20 69 6e 20 61  |mation held in a|
0002cc30  20 73 70 72 69 74 65 20  61 72 65 61 27 73 20 68  | sprite area's h|
0002cc40  65 61 64 65 72 2e 0a 00  44 41 54 41 02 01 00 00  |eader...DATA....|
0002cc50  4c 6f 61 64 20 73 70 72  69 74 65 20 66 69 6c 65  |Load sprite file|
0002cc60  20 20 28 31 30 29 0a 3d  3e 09 52 30 20 3d 09 3c  |  (10).=>.R0 =.<|
0002cc70  31 30 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |10=>os_spriteop_|
0002cc80  72 65 61 73 6f 6e 32 3e  0a 09 52 31 20 3d 09 3c  |reason2>..R1 =.<|
0002cc90  53 70 72 69 74 65 20 61  72 65 61 3d 3e 6f 73 5f  |Sprite area=>os_|
0002cca0  73 70 72 69 74 65 6f 70  5f 61 72 65 61 3e 0a 09  |spriteop_area>..|
0002ccb0  52 32 20 3d 09 50 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.Pointer to |
0002ccc0  70 61 74 68 6e 61 6d 65  0a 0a 54 68 69 73 20 6c  |pathname..This l|
0002ccd0  6f 61 64 73 20 74 68 65  20 67 69 76 65 6e 20 73  |oads the given s|
0002cce0  70 72 69 74 65 20 66 69  6c 65 20 69 6e 74 6f 20  |prite file into |
0002ccf0  74 68 65 20 67 69 76 65  6e 20 73 70 72 69 74 65  |the given sprite|
0002cd00  20 61 72 65 61 2e 20 4e  4f 54 45 20 74 68 69 73  | area. NOTE this|
0002cd10  20 77 69 6c 6c 20 6f 76  65 72 20 77 72 69 74 65  | will over write|
0002cd20  20 61 6e 79 20 73 70 72  69 74 65 73 20 74 68 61  | any sprites tha|
0002cd30  74 20 61 72 65 20 61 6c  72 65 61 64 79 20 69 6e  |t are already in|
0002cd40  20 74 68 65 20 61 72 65  61 2e 00 00 44 41 54 41  | the area...DATA|
0002cd50  85 01 00 00 4d 65 72 67  65 20 73 70 72 69 74 65  |....Merge sprite|
0002cd60  20 66 69 6c 65 20 20 28  31 31 29 0a 3d 3e 09 52  | file  (11).=>.R|
0002cd70  30 20 3d 09 3c 31 31 3d  3e 6f 73 5f 73 70 72 69  |0 =.<11=>os_spri|
0002cd80  74 65 6f 70 5f 72 65 61  73 6f 6e 32 3e 0a 09 52  |teop_reason2>..R|
0002cd90  31 20 3d 09 3c 53 70 72  69 74 65 20 61 72 65 61  |1 =.<Sprite area|
0002cda0  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 61 72  |=>os_spriteop_ar|
0002cdb0  65 61 3e 0a 09 52 32 20  3d 09 50 6f 69 6e 74 65  |ea>..R2 =.Pointe|
0002cdc0  72 20 74 6f 20 70 61 74  68 6e 61 6d 65 0a 0a 54  |r to pathname..T|
0002cdd0  68 69 73 20 6c 6f 61 64  73 20 74 68 65 20 73 70  |his loads the sp|
0002cde0  72 69 74 65 73 20 69 6e  20 74 68 65 20 67 69 76  |rites in the giv|
0002cdf0  65 6e 20 73 70 72 69 74  65 20 66 69 6c 65 20 69  |en sprite file i|
0002ce00  6e 74 6f 20 74 68 65 20  73 70 65 63 69 66 69 65  |nto the specifie|
0002ce10  64 20 61 72 65 61 2e 20  49 66 20 61 20 73 70 72  |d area. If a spr|
0002ce20  69 74 65 20 61 6c 72 65  61 64 79 20 65 78 69 73  |ite already exis|
0002ce30  74 73 20 69 74 20 77 69  6c 6c 20 62 65 20 72 65  |ts it will be re|
0002ce40  70 6c 61 63 65 64 2e 20  54 68 65 72 65 20 6d 75  |placed. There mu|
0002ce50  73 74 20 62 65 20 65 6e  6f 75 67 68 20 6d 65 6d  |st be enough mem|
0002ce60  6f 72 79 20 69 6e 20 74  68 65 20 73 70 72 69 74  |ory in the sprit|
0002ce70  65 20 61 72 65 61 20 74  6f 20 68 6f 6c 64 20 62  |e area to hold b|
0002ce80  6f 74 68 20 73 65 74 20  6f 66 20 73 70 72 69 74  |oth set of sprit|
0002ce90  65 73 20 61 73 20 72 65  70 6c 61 63 65 6d 65 6e  |es as replacemen|
0002cea0  74 73 20 61 72 65 20 6d  61 64 65 20 61 66 74 65  |ts are made afte|
0002ceb0  72 20 74 68 65 20 77 68  6f 6c 65 20 66 69 6c 65  |r the whole file|
0002cec0  20 68 61 73 20 62 65 65  6e 20 6c 6f 61 64 65 64  | has been loaded|
0002ced0  2e 00 00 00 44 41 54 41  1f 01 00 00 52 65 74 75  |....DATA....Retu|
0002cee0  72 6e 20 6e 61 6d 65 20  28 31 33 29 0a 3d 3e 09  |rn name (13).=>.|
0002cef0  52 30 20 3d 09 3c 31 33  3d 3e 6f 73 5f 73 70 72  |R0 =.<13=>os_spr|
0002cf00  69 74 65 6f 70 5f 72 65  61 73 6f 6e 32 3e 0a 09  |iteop_reason2>..|
0002cf10  52 31 20 3d 09 3c 53 70  72 69 74 65 20 61 72 65  |R1 =.<Sprite are|
0002cf20  61 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 61  |a=>os_spriteop_a|
0002cf30  72 65 61 3e 0a 09 52 32  20 3d 09 50 6f 69 6e 74  |rea>..R2 =.Point|
0002cf40  65 72 20 74 6f 20 62 75  66 66 65 72 0a 09 52 33  |er to buffer..R3|
0002cf50  20 3d 09 42 75 66 66 65  72 20 73 69 7a 65 0a 09  | =.Buffer size..|
0002cf60  52 34 20 3d 09 53 70 72  69 74 65 20 6e 75 6d 62  |R4 =.Sprite numb|
0002cf70  65 72 20 6e 0a 3c 3d 09  52 33 20 3d 09 4c 65 6e  |er n.<=.R3 =.Len|
0002cf80  67 74 68 20 6f 66 20 6e  61 6d 65 0a 0a 54 68 69  |gth of name..Thi|
0002cf90  73 20 72 65 74 75 72 6e  73 20 74 68 65 20 6e 61  |s returns the na|
0002cfa0  6d 65 20 6f 66 20 74 68  65 20 6e 27 74 68 20 73  |me of the n'th s|
0002cfb0  70 72 69 74 65 20 69 6e  20 74 68 65 20 67 69 76  |prite in the giv|
0002cfc0  65 6e 20 73 70 72 69 74  65 20 61 72 65 61 20 77  |en sprite area w|
0002cfd0  68 65 72 65 20 74 68 65  20 66 69 72 73 74 20 73  |here the first s|
0002cfe0  70 72 69 74 65 20 69 73  20 6e 75 6d 62 65 72 20  |prite is number |
0002cff0  31 2e 0a 00 44 41 54 41  aa 01 00 00 47 65 74 20  |1...DATA....Get |
0002d000  73 70 72 69 74 65 20 28  31 34 29 0a 3d 3e 09 52  |sprite (14).=>.R|
0002d010  30 20 3d 09 3c 31 34 3d  3e 6f 73 5f 73 70 72 69  |0 =.<14=>os_spri|
0002d020  74 65 6f 70 5f 72 65 61  73 6f 6e 32 3e 0a 09 52  |teop_reason2>..R|
0002d030  31 20 3d 09 3c 53 70 72  69 74 65 20 61 72 65 61  |1 =.<Sprite area|
0002d040  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 61 72  |=>os_spriteop_ar|
0002d050  65 61 3e 0a 09 52 32 20  3d 09 53 70 72 69 74 65  |ea>..R2 =.Sprite|
0002d060  20 6e 61 6d 65 2f 70 6f  69 6e 74 65 72 0a 09 52  | name/pointer..R|
0002d070  33 20 3d 09 30 20 3d 3e  20 45 78 63 6c 75 64 65  |3 =.0 => Exclude|
0002d080  20 70 61 6c 65 74 74 65  0a 09 20 09 31 20 3d 3e  | palette.. .1 =>|
0002d090  20 49 6e 63 6c 75 64 65  20 70 61 6c 65 74 74 65  | Include palette|
0002d0a0  0a 3c 3d 09 52 32 20 3d  09 41 64 64 72 65 73 73  |.<=.R2 =.Address|
0002d0b0  2f 4f 66 66 73 65 74 20  6f 66 20 73 70 72 69 74  |/Offset of sprit|
0002d0c0  65 20 75 6e 6c 65 73 73  20 69 6e 20 77 69 6d 70  |e unless in wimp|
0002d0d0  20 6f 72 20 73 79 73 74  65 6d 20 61 72 65 61 2e  | or system area.|
0002d0e0  0a 0a 54 68 69 73 20 67  72 61 62 73 20 74 68 65  |..This grabs the|
0002d0f0  20 61 72 65 61 20 6f 66  20 73 63 72 65 65 6e 20  | area of screen |
0002d100  64 65 66 69 6e 65 64 20  62 79 20 74 68 65 20 63  |defined by the c|
0002d110  75 72 72 65 6e 74 20 61  6e 64 20 6f 6c 64 20 67  |urrent and old g|
0002d120  72 61 70 68 69 63 20 63  75 72 73 6f 72 20 63 6f  |raphic cursor co|
0002d130  6f 72 64 69 6e 61 74 65  73 2e 20 41 6e 79 20 61  |ordinates. Any a|
0002d140  72 65 61 20 6f 75 74 73  69 64 65 20 74 68 65 20  |rea outside the |
0002d150  70 72 65 73 65 6e 74 20  67 72 61 70 68 69 63 73  |present graphics|
0002d160  20 77 69 6e 64 6f 77 20  77 69 6c 6c 20 62 65 20  | window will be |
0002d170  66 69 6c 6c 65 64 20 69  6e 20 77 69 74 68 20 74  |filled in with t|
0002d180  68 65 20 70 72 65 73 65  6e 74 20 62 61 63 6b 67  |he present backg|
0002d190  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 2e 0a 00 00  |round colour....|
0002d1a0  44 41 54 41 0c 01 00 00  43 72 65 61 74 65 20 73  |DATA....Create s|
0002d1b0  70 72 69 74 65 20 28 31  35 29 0a 3d 3e 09 52 30  |prite (15).=>.R0|
0002d1c0  20 3d 09 3c 31 35 3d 3e  6f 73 5f 73 70 72 69 74  | =.<15=>os_sprit|
0002d1d0  65 6f 70 5f 72 65 61 73  6f 6e 32 3e 0a 09 52 31  |eop_reason2>..R1|
0002d1e0  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0002d1f0  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0002d200  61 3e 0a 09 52 32 20 3d  09 53 70 72 69 74 65 20  |a>..R2 =.Sprite |
0002d210  6e 61 6d 65 2f 70 6f 69  6e 74 65 72 0a 09 52 33  |name/pointer..R3|
0002d220  20 3d 09 30 20 3d 3e 20  45 78 63 6c 75 64 65 20  | =.0 => Exclude |
0002d230  70 61 6c 65 74 74 65 0a  09 20 09 31 20 3d 3e 20  |palette.. .1 => |
0002d240  49 6e 63 6c 75 64 65 20  70 61 6c 65 74 74 65 0a  |Include palette.|
0002d250  09 52 34 20 3d 09 57 69  64 74 68 20 69 6e 20 70  |.R4 =.Width in p|
0002d260  69 78 65 6c 73 0a 09 52  35 20 3d 09 48 65 69 67  |ixels..R5 =.Heig|
0002d270  68 74 20 69 6e 20 70 69  78 65 6c 73 0a 09 52 36  |ht in pixels..R6|
0002d280  20 3d 09 4d 6f 64 65 20  6e 75 6d 62 65 72 0a 0a  | =.Mode number..|
0002d290  54 68 69 73 20 63 72 65  61 74 65 73 20 61 20 62  |This creates a b|
0002d2a0  6c 61 6e 6b 20 73 70 72  69 74 65 2e 44 41 54 41  |lank sprite.DATA|
0002d2b0  0d 02 00 00 47 65 74 20  73 70 72 69 74 65 20 66  |....Get sprite f|
0002d2c0  72 6f 6d 20 63 6f 6f 72  64 73 20 28 31 36 29 0a  |rom coords (16).|
0002d2d0  3d 3e 09 52 30 20 3d 09  3c 31 36 3d 3e 6f 73 5f  |=>.R0 =.<16=>os_|
0002d2e0  73 70 72 69 74 65 6f 70  5f 72 65 61 73 6f 6e 32  |spriteop_reason2|
0002d2f0  3e 0a 09 52 31 20 3d 09  3c 53 70 72 69 74 65 20  |>..R1 =.<Sprite |
0002d300  61 72 65 61 3d 3e 6f 73  5f 73 70 72 69 74 65 6f  |area=>os_spriteo|
0002d310  70 5f 61 72 65 61 3e 0a  09 52 32 20 3d 09 53 70  |p_area>..R2 =.Sp|
0002d320  72 69 74 65 20 6e 61 6d  65 2f 70 6f 69 6e 74 65  |rite name/pointe|
0002d330  72 0a 09 52 33 20 3d 09  30 20 3d 3e 20 45 78 63  |r..R3 =.0 => Exc|
0002d340  6c 75 64 65 20 70 61 6c  65 74 74 65 0a 09 20 09  |lude palette.. .|
0002d350  31 20 3d 3e 20 49 6e 63  6c 75 64 65 20 70 61 6c  |1 => Include pal|
0002d360  65 74 74 65 0a 09 52 34  20 3d 09 4d 69 6e 69 6d  |ette..R4 =.Minim|
0002d370  75 6d 20 78 20 63 6f 6f  72 64 69 6e 61 74 65 20  |um x coordinate |
0002d380  28 69 63 29 0a 09 52 35  20 3d 09 4d 69 6e 69 6d  |(ic)..R5 =.Minim|
0002d390  75 6d 20 79 20 63 6f 6f  72 64 69 6e 61 74 65 20  |um y coordinate |
0002d3a0  28 69 63 29 0a 09 52 36  20 3d 09 4d 61 78 69 6d  |(ic)..R6 =.Maxim|
0002d3b0  75 6d 20 78 20 63 6f 6f  72 64 69 6e 61 74 65 20  |um x coordinate |
0002d3c0  28 69 63 29 0a 09 52 37  20 3d 09 4d 61 78 69 6d  |(ic)..R7 =.Maxim|
0002d3d0  75 6d 20 79 20 63 6f 6f  72 64 69 6e 61 74 65 20  |um y coordinate |
0002d3e0  28 69 63 29 0a 3c 3d 09  52 32 20 3d 09 41 64 64  |(ic).<=.R2 =.Add|
0002d3f0  72 65 73 73 2f 4f 66 66  73 65 74 20 6f 66 20 73  |ress/Offset of s|
0002d400  70 72 69 74 65 20 75 6e  6c 65 73 73 20 69 6e 20  |prite unless in |
0002d410  77 69 6d 70 20 6f 72 20  73 79 73 74 65 6d 20 61  |wimp or system a|
0002d420  72 65 61 2e 0a 0a 54 68  69 73 20 67 72 61 62 73  |rea...This grabs|
0002d430  20 74 68 65 20 61 72 65  61 20 6f 66 20 73 63 72  | the area of scr|
0002d440  65 65 6e 20 64 65 66 69  6e 65 64 20 62 79 20 52  |een defined by R|
0002d450  34 2d 52 37 2e 20 41 6e  79 20 61 72 65 61 20 6f  |4-R7. Any area o|
0002d460  75 74 73 69 64 65 20 74  68 65 20 70 72 65 73 65  |utside the prese|
0002d470  6e 74 20 67 72 61 70 68  69 63 73 20 77 69 6e 64  |nt graphics wind|
0002d480  6f 77 20 77 69 6c 6c 20  62 65 20 66 69 6c 6c 65  |ow will be fille|
0002d490  64 20 69 6e 20 77 69 74  68 20 74 68 65 20 70 72  |d in with the pr|
0002d4a0  65 73 65 6e 74 20 62 61  63 6b 67 72 6f 75 6e 64  |esent background|
0002d4b0  20 63 6f 6c 6f 75 72 2e  0a 00 00 00 44 41 54 41  | colour.....DATA|
0002d4c0  08 01 00 00 53 65 6c 65  63 74 20 73 70 72 69 74  |....Select sprit|
0002d4d0  65 20 28 32 34 29 0a 3d  3e 09 52 30 20 3d 09 3c  |e (24).=>.R0 =.<|
0002d4e0  32 34 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |24=>os_spriteop_|
0002d4f0  72 65 61 73 6f 6e 32 3e  0a 09 52 31 20 3d 09 3c  |reason2>..R1 =.<|
0002d500  53 70 72 69 74 65 20 61  72 65 61 3d 3e 6f 73 5f  |Sprite area=>os_|
0002d510  73 70 72 69 74 65 6f 70  5f 61 72 65 61 3e 0a 09  |spriteop_area>..|
0002d520  52 32 20 3d 09 53 70 72  69 74 65 20 6e 61 6d 65  |R2 =.Sprite name|
0002d530  2f 70 6f 69 6e 74 65 72  0a 3c 3d 09 52 32 20 3d  |/pointer.<=.R2 =|
0002d540  09 41 64 64 72 65 73 73  2f 4f 66 66 73 65 74 20  |.Address/Offset |
0002d550  6f 66 20 73 70 72 69 74  65 20 75 6e 6c 65 73 73  |of sprite unless|
0002d560  20 69 6e 20 77 69 6d 70  20 6f 72 20 73 79 73 74  | in wimp or syst|
0002d570  65 6d 20 61 72 65 61 2e  0a 0a 54 68 69 73 20 73  |em area...This s|
0002d580  65 6c 65 63 74 73 20 74  68 65 20 67 69 76 65 6e  |elects the given|
0002d590  20 73 70 72 69 74 65 20  66 6f 72 20 73 75 62 73  | sprite for subs|
0002d5a0  65 71 75 65 6e 74 20 70  6c 6f 74 74 69 6e 67 20  |equent plotting |
0002d5b0  77 69 74 68 20 56 44 55  20 32 35 2c 32 33 32 2d  |with VDU 25,232-|
0002d5c0  32 33 39 2e 44 41 54 41  96 00 00 00 44 65 6c 65  |239.DATA....Dele|
0002d5d0  74 65 20 73 70 72 69 74  65 20 28 32 35 29 0a 3d  |te sprite (25).=|
0002d5e0  3e 09 52 30 20 3d 09 3c  32 35 3d 3e 6f 73 5f 73  |>.R0 =.<25=>os_s|
0002d5f0  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0002d600  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0002d610  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0002d620  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0002d630  69 74 65 20 6e 61 6d 65  2f 70 6f 69 6e 74 65 72  |ite name/pointer|
0002d640  0a 0a 54 68 69 73 20 64  65 6c 65 74 65 73 20 74  |..This deletes t|
0002d650  68 65 20 73 70 72 69 74  65 2e 00 00 44 41 54 41  |he sprite...DATA|
0002d660  ff 00 00 00 43 6f 70 79  20 73 70 72 69 74 65 20  |....Copy sprite |
0002d670  28 32 37 29 0a 3d 3e 09  52 30 20 3d 09 3c 32 37  |(27).=>.R0 =.<27|
0002d680  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 72 65  |=>os_spriteop_re|
0002d690  61 73 6f 6e 32 3e 0a 09  52 31 20 3d 09 3c 53 70  |ason2>..R1 =.<Sp|
0002d6a0  72 69 74 65 20 61 72 65  61 3d 3e 6f 73 5f 73 70  |rite area=>os_sp|
0002d6b0  72 69 74 65 6f 70 5f 61  72 65 61 3e 0a 09 52 32  |riteop_area>..R2|
0002d6c0  20 3d 09 53 70 72 69 74  65 20 6e 61 6d 65 2f 70  | =.Sprite name/p|
0002d6d0  6f 69 6e 74 65 72 0a 09  52 33 20 3d 09 4e 65 77  |ointer..R3 =.New|
0002d6e0  20 6e 61 6d 65 0a 0a 54  68 69 73 20 63 6f 70 69  | name..This copi|
0002d6f0  65 73 20 74 68 65 20 73  70 72 69 74 65 20 75 6e  |es the sprite un|
0002d700  6c 65 73 73 20 61 20 73  70 72 69 74 65 20 61 6c  |less a sprite al|
0002d710  72 65 61 64 79 20 65 78  69 73 74 73 20 75 6e 64  |ready exists und|
0002d720  65 72 20 74 68 65 20 6e  65 77 20 6e 61 6d 65 2c  |er the new name,|
0002d730  20 69 6e 20 77 68 69 63  68 20 63 61 73 65 20 61  | in which case a|
0002d740  6e 20 65 72 72 6f 72 20  77 69 6c 6c 20 62 65 20  |n error will be |
0002d750  67 65 6e 65 72 61 74 65  64 2e 20 00 44 41 54 41  |generated. .DATA|
0002d760  1b 01 00 00 50 75 74 20  73 70 72 69 74 65 20 28  |....Put sprite (|
0002d770  32 38 29 0a 3d 3e 09 52  30 20 3d 09 3c 32 38 3d  |28).=>.R0 =.<28=|
0002d780  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 72 65 61  |>os_spriteop_rea|
0002d790  73 6f 6e 32 3e 0a 09 52  31 20 3d 09 3c 53 70 72  |son2>..R1 =.<Spr|
0002d7a0  69 74 65 20 61 72 65 61  3d 3e 6f 73 5f 73 70 72  |ite area=>os_spr|
0002d7b0  69 74 65 6f 70 5f 61 72  65 61 3e 0a 09 52 32 20  |iteop_area>..R2 |
0002d7c0  3d 09 53 70 72 69 74 65  20 6e 61 6d 65 2f 70 6f  |=.Sprite name/po|
0002d7d0  69 6e 74 65 72 0a 09 52  35 20 3d 09 3c 50 6c 6f  |inter..R5 =.<Plo|
0002d7e0  74 20 61 63 74 69 6f 6e  3d 3e 6f 73 5f 73 70 72  |t action=>os_spr|
0002d7f0  69 74 65 6f 70 5f 61 63  74 69 6f 6e 3e 0a 0a 54  |iteop_action>..T|
0002d800  68 69 73 20 70 6c 6f 74  73 20 74 68 65 20 73 70  |his plots the sp|
0002d810  72 69 74 65 20 77 69 74  68 20 69 74 73 27 20 62  |rite with its' b|
0002d820  6f 74 74 6f 6d 20 6c 65  66 74 20 68 61 6e 64 20  |ottom left hand |
0002d830  63 6f 72 6e 65 72 20 61  74 20 74 68 65 20 67 72  |corner at the gr|
0002d840  61 70 68 69 63 73 20 63  75 72 73 6f 72 2e 20 49  |aphics cursor. I|
0002d850  74 20 75 73 65 73 20 74  68 65 20 70 6c 6f 74 20  |t uses the plot |
0002d860  61 63 74 69 6f 6e 20 73  70 65 63 69 66 69 65 64  |action specified|
0002d870  20 62 79 20 52 35 2e 00  44 41 54 41 b1 00 00 00  | by R5..DATA....|
0002d880  43 72 65 61 74 65 20 6d  61 73 6b 20 28 32 39 29  |Create mask (29)|
0002d890  0a 3d 3e 09 52 30 20 3d  09 3c 32 39 3d 3e 6f 73  |.=>.R0 =.<29=>os|
0002d8a0  5f 73 70 72 69 74 65 6f  70 5f 72 65 61 73 6f 6e  |_spriteop_reason|
0002d8b0  32 3e 0a 09 52 31 20 3d  09 3c 53 70 72 69 74 65  |2>..R1 =.<Sprite|
0002d8c0  20 61 72 65 61 3d 3e 6f  73 5f 73 70 72 69 74 65  | area=>os_sprite|
0002d8d0  6f 70 5f 61 72 65 61 3e  0a 09 52 32 20 3d 09 53  |op_area>..R2 =.S|
0002d8e0  70 72 69 74 65 20 6e 61  6d 65 2f 70 6f 69 6e 74  |prite name/point|
0002d8f0  65 72 0a 0a 54 68 69 73  20 63 72 65 61 74 65 73  |er..This creates|
0002d900  20 61 20 6d 61 73 6b 20  77 69 74 68 20 61 6c 6c  | a mask with all|
0002d910  20 70 69 78 65 6c 73 20  64 65 66 69 6e 65 64 20  | pixels defined |
0002d920  61 73 20 73 6f 6c 69 64  2e 00 00 00 44 41 54 41  |as solid....DATA|
0002d930  aa 00 00 00 52 65 6d 6f  76 65 20 6d 61 73 6b 20  |....Remove mask |
0002d940  28 33 30 29 0a 3d 3e 09  52 30 20 3d 09 3c 3c 33  |(30).=>.R0 =.<<3|
0002d950  30 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 72  |0=>os_spriteop_r|
0002d960  65 61 73 6f 6e 32 3e 3d  3e 6f 73 5f 73 70 72 69  |eason2>=>os_spri|
0002d970  74 65 6f 70 5f 72 65 61  73 6f 6e 32 3e 0a 09 52  |teop_reason2>..R|
0002d980  31 20 3d 09 3c 53 70 72  69 74 65 20 61 72 65 61  |1 =.<Sprite area|
0002d990  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 61 72  |=>os_spriteop_ar|
0002d9a0  65 61 3e 0a 09 52 32 20  3d 09 53 70 72 69 74 65  |ea>..R2 =.Sprite|
0002d9b0  20 6e 61 6d 65 2f 70 6f  69 6e 74 65 72 0a 0a 54  | name/pointer..T|
0002d9c0  68 69 73 20 72 65 6d 6f  76 65 73 20 74 68 65 20  |his removes the |
0002d9d0  6d 61 73 6b 2e 0a 00 00  44 41 54 41 0e 01 00 00  |mask....DATA....|
0002d9e0  49 6e 73 65 72 74 20 72  6f 77 20 28 33 31 29 0a  |Insert row (31).|
0002d9f0  3d 3e 09 52 30 20 3d 09  3c 33 31 3d 3e 6f 73 5f  |=>.R0 =.<31=>os_|
0002da00  73 70 72 69 74 65 6f 70  5f 72 65 61 73 6f 6e 32  |spriteop_reason2|
0002da10  3e 0a 09 52 31 20 3d 09  3c 53 70 72 69 74 65 20  |>..R1 =.<Sprite |
0002da20  61 72 65 61 3d 3e 6f 73  5f 73 70 72 69 74 65 6f  |area=>os_spriteo|
0002da30  70 5f 61 72 65 61 3e 0a  09 52 32 20 3d 09 53 70  |p_area>..R2 =.Sp|
0002da40  72 69 74 65 20 6e 61 6d  65 2f 70 6f 69 6e 74 65  |rite name/pointe|
0002da50  72 0a 09 52 33 20 3d 09  52 6f 77 20 6e 75 6d 62  |r..R3 =.Row numb|
0002da60  65 72 0a 0a 54 68 69 73  20 69 6e 73 65 72 74 73  |er..This inserts|
0002da70  20 61 20 72 6f 77 20 6f  66 20 74 72 61 6e 73 70  | a row of transp|
0002da80  61 72 61 6e 74 20 63 6f  6c 6f 75 72 20 30 20 70  |arant colour 0 p|
0002da90  69 78 65 6c 73 20 61 74  20 74 68 65 20 67 69 76  |ixels at the giv|
0002daa0  65 6e 20 72 6f 77 2c 20  6d 6f 76 69 6e 67 20 61  |en row, moving a|
0002dab0  6c 6c 20 72 6f 77 73 20  61 62 6f 76 65 20 69 74  |ll rows above it|
0002dac0  20 75 70 20 61 20 72 6f  77 2e 20 54 68 65 20 62  | up a row. The b|
0002dad0  6f 74 74 6f 6d 20 72 6f  77 20 69 73 20 6e 75 6d  |ottom row is num|
0002dae0  62 65 72 20 30 2e 00 00  44 41 54 41 e8 00 00 00  |ber 0...DATA....|
0002daf0  44 65 6c 65 74 65 20 72  6f 77 20 28 33 32 29 0a  |Delete row (32).|
0002db00  3d 3e 09 52 30 20 3d 09  3c 33 32 3d 3e 6f 73 5f  |=>.R0 =.<32=>os_|
0002db10  73 70 72 69 74 65 6f 70  5f 72 65 61 73 6f 6e 32  |spriteop_reason2|
0002db20  3e 0a 09 52 31 20 3d 09  3c 53 70 72 69 74 65 20  |>..R1 =.<Sprite |
0002db30  61 72 65 61 3d 3e 6f 73  5f 73 70 72 69 74 65 6f  |area=>os_spriteo|
0002db40  70 5f 61 72 65 61 3e 0a  09 52 32 20 3d 09 53 70  |p_area>..R2 =.Sp|
0002db50  72 69 74 65 20 6e 61 6d  65 2f 70 6f 69 6e 74 65  |rite name/pointe|
0002db60  72 0a 09 52 33 20 3d 09  52 6f 77 20 6e 75 6d 62  |r..R3 =.Row numb|
0002db70  65 72 0a 0a 54 68 69 73  20 64 65 6c 65 74 65 73  |er..This deletes|
0002db80  20 74 68 65 20 67 69 76  65 6e 20 72 6f 77 2c 20  | the given row, |
0002db90  6d 6f 76 69 6e 67 20 61  6c 6c 20 72 6f 77 73 20  |moving all rows |
0002dba0  61 62 6f 76 65 20 69 74  20 64 6f 77 6e 20 61 20  |above it down a |
0002dbb0  72 6f 77 2e 20 54 68 65  20 62 6f 74 74 6f 6d 20  |row. The bottom |
0002dbc0  72 6f 77 20 69 73 20 6e  75 6d 62 65 72 20 30 2e  |row is number 0.|
0002dbd0  44 41 54 41 a4 00 00 00  46 6c 69 70 20 61 62 6f  |DATA....Flip abo|
0002dbe0  75 74 20 78 20 61 78 69  73 20 28 33 33 29 0a 3d  |ut x axis (33).=|
0002dbf0  3e 09 52 30 20 3d 09 3c  33 33 3d 3e 6f 73 5f 73  |>.R0 =.<33=>os_s|
0002dc00  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0002dc10  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0002dc20  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0002dc30  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0002dc40  69 74 65 20 6e 61 6d 65  2f 70 6f 69 6e 74 65 72  |ite name/pointer|
0002dc50  0a 0a 54 68 69 73 20 74  75 72 6e 73 20 74 68 65  |..This turns the|
0002dc60  20 73 70 72 69 74 65 20  75 70 73 69 64 65 20 64  | sprite upside d|
0002dc70  6f 77 6e 2e 44 41 54 41  d2 01 00 00 41 70 70 65  |own.DATA....Appe|
0002dc80  6e 64 20 73 70 72 69 74  65 20 28 33 35 29 0a 3d  |nd sprite (35).=|
0002dc90  3e 09 52 30 20 3d 09 3c  33 35 3d 3e 6f 73 5f 73  |>.R0 =.<35=>os_s|
0002dca0  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0002dcb0  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0002dcc0  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0002dcd0  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0002dce0  69 74 65 20 31 20 6e 61  6d 65 2f 70 6f 69 6e 74  |ite 1 name/point|
0002dcf0  65 72 0a 09 52 33 20 3d  09 53 70 72 69 74 65 20  |er..R3 =.Sprite |
0002dd00  32 20 6e 61 6d 65 2f 70  6f 69 6e 74 65 72 09 09  |2 name/pointer..|
0002dd10  7b 66 43 6f 64 65 7d 20  20 a0 5f 5f 20 5f 5f 7b  |{fCode}  .__ __{|
0002dd20  66 7d 0a 09 52 34 20 3d  09 30 20 3d 3e 20 4d 65  |f}..R4 =.0 => Me|
0002dd30  72 67 65 20 68 6f 72 69  7a 6f 6e 74 61 6c 6c 79  |rge horizontally|
0002dd40  09 09 7b 66 43 6f 64 65  7d 20 20 7c 5f 5f 7c 5f  |..{fCode}  |__|_|
0002dd50  5f 7c 7b 66 7d 0a 09 20  09 31 20 3d 3e 20 4d 65  |_|{f}.. .1 => Me|
0002dd60  72 67 65 20 76 65 72 74  69 63 61 6c 6c 79 09 09  |rge vertically..|
0002dd70  7b 66 43 6f 64 65 7d 2e  2d 2d 2e 7b 66 7d 0a 09  |{fCode}.--.{f}..|
0002dd80  20 09 20 09 09 09 09 7b  66 43 6f 64 65 7d 7c 2d  | . ....{fCode}|-|
0002dd90  2d 7c 7b 66 7d 0a 09 20  09 20 09 09 09 09 7b 66  |-|{f}.. . ....{f|
0002dda0  43 6f 64 65 7d 27 2d 2d  27 7b 66 7d 0a 0a 54 68  |Code}'--'{f}..Th|
0002ddb0  69 73 20 6d 65 72 67 65  73 20 74 77 6f 20 73 70  |is merges two sp|
0002ddc0  72 69 74 65 73 20 6f 66  20 74 68 65 20 73 61 6d  |rites of the sam|
0002ddd0  65 20 68 65 69 67 68 74  20 6f 72 20 77 69 64 74  |e height or widt|
0002dde0  68 20 74 6f 67 65 74 68  65 72 2e 20 54 68 65 20  |h together. The |
0002ddf0  72 65 73 75 6c 74 20 69  73 20 73 74 6f 72 65 64  |result is stored|
0002de00  20 61 73 20 73 70 72 69  74 65 20 31 20 61 6e 64  | as sprite 1 and|
0002de10  20 73 70 72 69 74 65 20  32 20 69 73 20 64 65 6c  | sprite 2 is del|
0002de20  65 74 65 64 2c 20 68 65  6e 63 65 20 6e 6f 20 65  |eted, hence no e|
0002de30  78 74 72 61 20 6d 65 6d  6f 72 79 20 69 73 20 6e  |xtra memory is n|
0002de40  65 65 64 65 64 2e 00 00  44 41 54 41 e1 01 00 00  |eeded...DATA....|
0002de50  43 72 65 61 74 65 2f 52  65 6d 6f 76 65 20 70 61  |Create/Remove pa|
0002de60  6c 65 74 74 65 20 28 33  37 29 0a 3d 3e 09 52 30  |lette (37).=>.R0|
0002de70  20 3d 09 3c 33 37 3d 3e  6f 73 5f 73 70 72 69 74  | =.<37=>os_sprit|
0002de80  65 6f 70 5f 72 65 61 73  6f 6e 32 3e 0a 09 52 31  |eop_reason2>..R1|
0002de90  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0002dea0  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0002deb0  61 3e 0a 09 52 32 20 3d  09 53 70 72 69 74 65 20  |a>..R2 =.Sprite |
0002dec0  6e 61 6d 65 2f 70 6f 69  6e 74 65 72 0a 09 52 33  |name/pointer..R3|
0002ded0  20 3d 09 2d 31 20 3d 3e  20 52 65 61 64 20 63 75  | =.-1 => Read cu|
0002dee0  72 72 65 6e 74 20 70 61  6c 65 74 74 65 20 73 69  |rrent palette si|
0002def0  7a 65 0a 09 20 09 30 20  3d 3e 20 52 65 6d 6f 76  |ze.. .0 => Remov|
0002df00  65 20 70 61 6c 65 74 74  65 0a 09 20 09 65 6c 73  |e palette.. .els|
0002df10  65 20 3d 3e 20 43 72 65  61 74 65 20 70 61 6c 65  |e => Create pale|
0002df20  74 74 65 0a 09 20 09 49  66 20 62 69 74 20 33 31  |tte.. .If bit 31|
0002df30  20 73 65 74 20 74 68 65  6e 20 75 73 65 20 32 35  | set then use 25|
0002df40  36 20 65 6e 74 72 69 65  73 2e 20 28 4e 6f 74 20  |6 entries. (Not |
0002df50  52 4f 32 29 0a 0a 3c 3d  09 41 6c 6c 20 72 65 67  |RO2)..<=.All reg|
0002df60  69 73 74 65 72 73 20 70  72 65 73 65 72 76 65 64  |isters preserved|
0002df70  20 75 6e 6c 65 73 73 20  52 33 20 3d 2d 31 20 6f  | unless R3 =-1 o|
0002df80  6e 20 65 6e 74 72 79 3a  0a 09 52 33 20 3d 09 53  |n entry:..R3 =.S|
0002df90  69 7a 65 20 6f 66 20 70  61 6c 65 74 74 65 20 6f  |ize of palette o|
0002dfa0  72 20 30 20 69 66 20 6e  6f 20 70 61 6c 65 74 74  |r 0 if no palett|
0002dfb0  65 0a 09 52 34 20 3d 09  50 6f 69 6e 74 65 72 20  |e..R4 =.Pointer |
0002dfc0  74 6f 20 70 61 6c 65 74  74 65 20 6f 72 20 30 20  |to palette or 0 |
0002dfd0  69 66 20 6e 6f 20 70 61  6c 65 74 74 65 0a 09 52  |if no palette..R|
0002dfe0  35 20 3d 09 4d 6f 64 65  0a 0a 4e 6f 74 65 3a 20  |5 =.Mode..Note: |
0002dff0  44 6f 20 6e 6f 74 20 75  73 65 20 74 68 69 73 20  |Do not use this |
0002e000  77 68 69 6c 73 74 20 6f  75 74 70 75 74 20 69 73  |whilst output is|
0002e010  20 73 77 69 74 63 68 65  64 20 74 6f 20 74 68 65  | switched to the|
0002e020  20 73 70 72 69 74 65 2e  0a 00 00 00 44 41 54 41  | sprite.....DATA|
0002e030  0f 01 00 00 52 65 61 64  20 70 69 78 65 6c 20 63  |....Read pixel c|
0002e040  6f 6c 6f 75 72 20 28 34  31 29 0a 3d 3e 09 52 30  |olour (41).=>.R0|
0002e050  20 3d 09 3c 34 31 3d 3e  6f 73 5f 73 70 72 69 74  | =.<41=>os_sprit|
0002e060  65 6f 70 5f 72 65 61 73  6f 6e 32 3e 0a 09 52 31  |eop_reason2>..R1|
0002e070  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0002e080  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0002e090  61 3e 0a 09 52 32 20 3d  09 53 70 72 69 74 65 20  |a>..R2 =.Sprite |
0002e0a0  6e 61 6d 65 2f 70 6f 69  6e 74 65 72 0a 09 52 33  |name/pointer..R3|
0002e0b0  20 3d 09 78 20 63 6f 6f  72 64 69 6e 61 74 65 20  | =.x coordinate |
0002e0c0  28 69 6e 20 70 69 78 65  6c 73 29 0a 09 52 34 20  |(in pixels)..R4 |
0002e0d0  3d 09 79 20 63 6f 6f 72  64 69 6e 61 74 65 20 28  |=.y coordinate (|
0002e0e0  69 6e 20 70 69 78 65 6c  73 29 0a 0a 3c 3d 09 52  |in pixels)..<=.R|
0002e0f0  35 20 3d 09 43 6f 6c 6f  75 72 0a 09 52 36 20 3d  |5 =.Colour..R6 =|
0002e100  09 54 69 6e 74 0a 09 0a  54 68 69 73 20 63 61 6c  |.Tint...This cal|
0002e110  6c 20 72 65 61 64 73 20  74 68 65 20 63 6f 6c 6f  |l reads the colo|
0002e120  75 72 20 6f 66 20 61 20  70 69 78 65 6c 20 69 6e  |ur of a pixel in|
0002e130  20 61 20 73 70 72 69 74  65 2e 0a 00 44 41 54 41  | a sprite...DATA|
0002e140  02 01 00 00 57 72 69 74  65 20 70 69 78 65 6c 20  |....Write pixel |
0002e150  63 6f 6c 6f 75 72 20 28  34 32 29 0a 3d 3e 09 52  |colour (42).=>.R|
0002e160  30 20 3d 09 3c 34 32 3d  3e 6f 73 5f 73 70 72 69  |0 =.<42=>os_spri|
0002e170  74 65 6f 70 5f 72 65 61  73 6f 6e 32 3e 0a 09 52  |teop_reason2>..R|
0002e180  31 20 3d 09 3c 53 70 72  69 74 65 20 61 72 65 61  |1 =.<Sprite area|
0002e190  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 61 72  |=>os_spriteop_ar|
0002e1a0  65 61 3e 0a 09 52 32 20  3d 09 53 70 72 69 74 65  |ea>..R2 =.Sprite|
0002e1b0  20 6e 61 6d 65 2f 70 6f  69 6e 74 65 72 0a 09 52  | name/pointer..R|
0002e1c0  33 20 3d 09 78 20 63 6f  6f 72 64 69 6e 61 74 65  |3 =.x coordinate|
0002e1d0  20 28 69 6e 20 70 69 78  65 6c 73 29 0a 09 52 34  | (in pixels)..R4|
0002e1e0  20 3d 09 79 20 63 6f 6f  72 64 69 6e 61 74 65 20  | =.y coordinate |
0002e1f0  28 69 6e 20 70 69 78 65  6c 73 29 0a 09 52 35 20  |(in pixels)..R5 |
0002e200  3d 09 43 6f 6c 6f 75 72  0a 09 52 36 20 3d 09 54  |=.Colour..R6 =.T|
0002e210  69 6e 74 0a 0a 54 68 69  73 20 73 65 74 73 20 74  |int..This sets t|
0002e220  68 65 20 70 69 78 65 6c  20 74 6f 20 74 68 65 20  |he pixel to the |
0002e230  67 69 76 65 6e 20 63 6f  6c 6f 75 72 2e 20 00 00  |given colour. ..|
0002e240  44 41 54 41 09 01 00 00  52 65 61 64 20 70 69 78  |DATA....Read pix|
0002e250  65 6c 20 6d 61 73 6b 20  28 34 33 29 0a 3d 3e 09  |el mask (43).=>.|
0002e260  52 30 20 3d 09 3c 34 33  3d 3e 6f 73 5f 73 70 72  |R0 =.<43=>os_spr|
0002e270  69 74 65 6f 70 5f 72 65  61 73 6f 6e 32 3e 0a 09  |iteop_reason2>..|
0002e280  52 31 20 3d 09 3c 53 70  72 69 74 65 20 61 72 65  |R1 =.<Sprite are|
0002e290  61 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 61  |a=>os_spriteop_a|
0002e2a0  72 65 61 3e 0a 09 52 32  20 3d 09 53 70 72 69 74  |rea>..R2 =.Sprit|
0002e2b0  65 20 6e 61 6d 65 2f 70  6f 69 6e 74 65 72 0a 09  |e name/pointer..|
0002e2c0  52 33 20 3d 09 78 20 63  6f 6f 72 64 69 6e 61 74  |R3 =.x coordinat|
0002e2d0  65 20 28 69 6e 20 70 69  78 65 6c 73 29 0a 09 52  |e (in pixels)..R|
0002e2e0  34 20 3d 09 79 20 63 6f  6f 72 64 69 6e 61 74 65  |4 =.y coordinate|
0002e2f0  20 28 69 6e 20 70 69 78  65 6c 73 29 0a 0a 3c 3d  | (in pixels)..<=|
0002e300  09 52 35 20 3d 09 30 20  3d 3e 20 54 72 61 6e 73  |.R5 =.0 => Trans|
0002e310  70 61 72 61 6e 74 0a 09  20 09 31 20 3d 3e 20 53  |parant.. .1 => S|
0002e320  6f 6c 69 64 0a 0a 54 68  69 73 20 53 57 49 20 72  |olid..This SWI r|
0002e330  65 61 64 73 20 74 68 65  20 6d 61 73 6b 20 61 74  |eads the mask at|
0002e340  20 61 20 70 6f 69 6e 74  2e 00 00 00 44 41 54 41  | a point....DATA|
0002e350  17 01 00 00 57 72 69 74  65 20 70 69 78 65 6c 20  |....Write pixel |
0002e360  6d 61 73 6b 20 28 34 34  29 0a 3d 3e 09 52 30 20  |mask (44).=>.R0 |
0002e370  3d 09 3c 34 34 3d 3e 6f  73 5f 73 70 72 69 74 65  |=.<44=>os_sprite|
0002e380  6f 70 5f 72 65 61 73 6f  6e 32 3e 0a 09 52 31 20  |op_reason2>..R1 |
0002e390  3d 09 3c 53 70 72 69 74  65 20 61 72 65 61 3d 3e  |=.<Sprite area=>|
0002e3a0  6f 73 5f 73 70 72 69 74  65 6f 70 5f 61 72 65 61  |os_spriteop_area|
0002e3b0  3e 0a 09 52 32 20 3d 09  53 70 72 69 74 65 20 6e  |>..R2 =.Sprite n|
0002e3c0  61 6d 65 2f 70 6f 69 6e  74 65 72 0a 09 52 33 20  |ame/pointer..R3 |
0002e3d0  3d 09 78 20 63 6f 6f 72  64 69 6e 61 74 65 20 28  |=.x coordinate (|
0002e3e0  69 6e 20 70 69 78 65 6c  73 29 0a 09 52 34 20 3d  |in pixels)..R4 =|
0002e3f0  09 79 20 63 6f 6f 72 64  69 6e 61 74 65 20 28 69  |.y coordinate (i|
0002e400  6e 20 70 69 78 65 6c 73  29 0a 09 52 35 20 3d 09  |n pixels)..R5 =.|
0002e410  30 20 3d 3e 54 72 61 6e  73 70 61 72 61 6e 74 0a  |0 =>Transparant.|
0002e420  09 20 09 31 20 3d 3e 20  53 6f 6c 69 64 0a 0a 54  |. .1 => Solid..T|
0002e430  68 69 73 20 73 65 74 73  20 74 68 65 20 6d 61 73  |his sets the mas|
0002e440  6b 27 73 20 73 74 61 74  65 20 61 74 20 74 68 65  |k's state at the|
0002e450  20 67 69 76 65 6e 20 63  6f 6f 72 64 69 6e 61 74  | given coordinat|
0002e460  65 73 2e 00 44 41 54 41  13 01 00 00 49 6e 73 65  |es..DATA....Inse|
0002e470  72 74 20 63 6f 6c 75 6d  6e 20 28 34 35 29 0a 3d  |rt column (45).=|
0002e480  3e 09 52 30 20 3d 09 3c  34 35 3d 3e 6f 73 5f 73  |>.R0 =.<45=>os_s|
0002e490  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0002e4a0  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0002e4b0  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0002e4c0  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0002e4d0  69 74 65 20 6e 61 6d 65  2f 70 6f 69 6e 74 65 72  |ite name/pointer|
0002e4e0  0a 09 52 33 20 3d 09 43  6f 6c 75 6d 6e 20 6e 75  |..R3 =.Column nu|
0002e4f0  6d 62 65 72 0a 0a 54 68  69 73 20 69 6e 73 65 72  |mber..This inser|
0002e500  74 73 20 61 20 63 6f 6c  75 6d 6e 20 6f 66 20 74  |ts a column of t|
0002e510  72 61 6e 73 70 61 72 65  6e 74 2c 20 63 6f 6c 6f  |ransparent, colo|
0002e520  75 72 20 7a 65 72 6f 20  70 69 78 65 6c 73 20 61  |ur zero pixels a|
0002e530  74 20 74 68 65 20 67 69  76 65 20 63 6f 6c 75 6d  |t the give colum|
0002e540  6e 2e 20 41 6c 6c 20 63  6f 6c 75 6d 6e 73 20 74  |n. All columns t|
0002e550  6f 20 74 68 65 20 72 69  67 68 74 20 61 72 65 20  |o the right are |
0002e560  73 68 69 66 74 65 64 20  72 69 67 68 74 20 61 20  |shifted right a |
0002e570  70 69 78 65 6c 2e 0a 00  44 41 54 41 db 00 00 00  |pixel...DATA....|
0002e580  44 65 6c 65 74 65 20 63  6f 6c 75 6d 6e 20 28 34  |Delete column (4|
0002e590  36 29 0a 3d 3e 09 52 30  20 3d 09 3c 34 36 3d 3e  |6).=>.R0 =.<46=>|
0002e5a0  6f 73 5f 73 70 72 69 74  65 6f 70 5f 72 65 61 73  |os_spriteop_reas|
0002e5b0  6f 6e 32 3e 0a 09 52 31  20 3d 09 3c 53 70 72 69  |on2>..R1 =.<Spri|
0002e5c0  74 65 20 61 72 65 61 3d  3e 6f 73 5f 73 70 72 69  |te area=>os_spri|
0002e5d0  74 65 6f 70 5f 61 72 65  61 3e 0a 09 52 32 20 3d  |teop_area>..R2 =|
0002e5e0  09 53 70 72 69 74 65 20  6e 61 6d 65 2f 70 6f 69  |.Sprite name/poi|
0002e5f0  6e 74 65 72 0a 09 52 33  20 3d 09 43 6f 6c 75 6d  |nter..R3 =.Colum|
0002e600  6e 20 6e 75 6d 62 65 72  0a 0a 54 68 69 73 20 64  |n number..This d|
0002e610  65 6c 65 74 65 73 20 61  20 63 6f 6c 75 6d 6e 2e  |eletes a column.|
0002e620  20 41 6c 6c 20 63 6f 6c  75 6d 6e 73 20 74 6f 20  | All columns to |
0002e630  74 68 65 20 72 69 67 68  74 20 61 72 65 20 73 68  |the right are sh|
0002e640  69 66 74 65 64 20 6c 65  66 74 20 61 20 70 69 78  |ifted left a pix|
0002e650  65 6c 2e 00 44 41 54 41  b2 00 00 00 46 6c 69 70  |el..DATA....Flip|
0002e660  20 61 62 6f 75 74 20 79  20 61 78 69 73 20 28 34  | about y axis (4|
0002e670  37 29 0a 3d 3e 09 52 30  20 3d 09 3c 34 37 3d 3e  |7).=>.R0 =.<47=>|
0002e680  6f 73 5f 73 70 72 69 74  65 6f 70 5f 72 65 61 73  |os_spriteop_reas|
0002e690  6f 6e 32 3e 0a 09 52 31  20 3d 09 3c 53 70 72 69  |on2>..R1 =.<Spri|
0002e6a0  74 65 20 61 72 65 61 3d  3e 6f 73 5f 73 70 72 69  |te area=>os_spri|
0002e6b0  74 65 6f 70 5f 61 72 65  61 3e 0a 09 52 32 20 3d  |teop_area>..R2 =|
0002e6c0  09 53 70 72 69 74 65 20  6e 61 6d 65 2f 70 6f 69  |.Sprite name/poi|
0002e6d0  6e 74 65 72 0a 0a 54 68  69 73 20 72 65 70 6c 61  |nter..This repla|
0002e6e0  63 65 73 20 74 68 65 20  73 70 72 69 74 65 20 77  |ces the sprite w|
0002e6f0  69 74 68 20 69 74 27 73  20 6d 69 72 72 6f 72 20  |ith it's mirror |
0002e700  69 6d 61 67 65 2e 00 00  44 41 54 41 ea 00 00 00  |image...DATA....|
0002e710  50 6c 6f 74 20 6d 61 73  6b 20 28 34 38 29 0a 3d  |Plot mask (48).=|
0002e720  3e 09 52 30 20 3d 09 3c  34 38 3d 3e 6f 73 5f 73  |>.R0 =.<48=>os_s|
0002e730  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0002e740  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0002e750  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0002e760  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0002e770  69 74 65 20 6e 61 6d 65  2f 70 6f 69 6e 74 65 72  |ite name/pointer|
0002e780  0a 0a 54 68 69 73 20 70  6c 6f 74 73 20 74 68 65  |..This plots the|
0002e790  20 73 6f 6c 69 64 20 70  69 78 65 6c 73 20 69 6e  | solid pixels in|
0002e7a0  20 74 68 65 20 62 61 63  6b 67 72 6f 75 6e 64 20  | the background |
0002e7b0  63 6f 6c 6f 75 72 20 77  69 74 68 20 74 68 65 20  |colour with the |
0002e7c0  62 6f 74 74 6f 6d 20 6c  65 66 74 20 63 6f 72 6e  |bottom left corn|
0002e7d0  65 72 20 61 74 20 74 68  65 20 70 72 65 73 65 6e  |er at the presen|
0002e7e0  74 20 67 72 61 70 68 69  63 73 20 63 75 72 73 6f  |t graphics curso|
0002e7f0  72 2e 00 00 44 41 54 41  15 01 00 00 50 6c 6f 74  |r...DATA....Plot|
0002e800  20 6d 61 73 6b 20 61 74  20 63 6f 6f 72 64 73 20  | mask at coords |
0002e810  28 34 39 29 0a 3d 3e 09  52 30 20 3d 09 3c 34 39  |(49).=>.R0 =.<49|
0002e820  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 72 65  |=>os_spriteop_re|
0002e830  61 73 6f 6e 32 3e 0a 09  52 31 20 3d 09 3c 53 70  |ason2>..R1 =.<Sp|
0002e840  72 69 74 65 20 61 72 65  61 3d 3e 6f 73 5f 73 70  |rite area=>os_sp|
0002e850  72 69 74 65 6f 70 5f 61  72 65 61 3e 0a 09 52 32  |riteop_area>..R2|
0002e860  20 3d 09 53 70 72 69 74  65 20 6e 61 6d 65 2f 70  | =.Sprite name/p|
0002e870  6f 69 6e 74 65 72 0a 09  52 33 20 3d 09 78 20 63  |ointer..R3 =.x c|
0002e880  6f 6f 72 64 69 6e 61 74  65 0a 09 52 34 20 3d 09  |oordinate..R4 =.|
0002e890  79 20 63 6f 6f 72 64 69  6e 61 74 65 0a 0a 54 68  |y coordinate..Th|
0002e8a0  69 73 20 70 6c 6f 74 73  20 74 68 65 20 73 6f 6c  |is plots the sol|
0002e8b0  69 64 20 70 69 78 65 6c  73 20 69 6e 20 74 68 65  |id pixels in the|
0002e8c0  20 62 61 63 6b 67 72 6f  75 6e 64 20 63 6f 6c 6f  | background colo|
0002e8d0  75 72 20 77 69 74 68 20  74 68 65 20 62 6f 74 74  |ur with the bott|
0002e8e0  6f 6d 20 6c 65 66 74 20  63 6f 72 6e 65 72 20 61  |om left corner a|
0002e8f0  74 20 74 68 65 20 67 69  76 65 6e 20 63 6f 6f 72  |t the given coor|
0002e900  64 69 6e 61 74 65 73 2e  20 00 00 00 44 41 54 41  |dinates. ...DATA|
0002e910  47 01 00 00 50 6c 6f 74  20 6d 61 73 6b 20 73 63  |G...Plot mask sc|
0002e920  61 6c 65 64 20 28 35 30  29 0a 3d 3e 09 52 30 20  |aled (50).=>.R0 |
0002e930  3d 09 3c 35 30 3d 3e 6f  73 5f 73 70 72 69 74 65  |=.<50=>os_sprite|
0002e940  6f 70 5f 72 65 61 73 6f  6e 32 3e 0a 09 52 31 20  |op_reason2>..R1 |
0002e950  3d 09 3c 53 70 72 69 74  65 20 61 72 65 61 3d 3e  |=.<Sprite area=>|
0002e960  6f 73 5f 73 70 72 69 74  65 6f 70 5f 61 72 65 61  |os_spriteop_area|
0002e970  3e 0a 09 52 32 20 3d 09  53 70 72 69 74 65 20 6e  |>..R2 =.Sprite n|
0002e980  61 6d 65 2f 70 6f 69 6e  74 65 72 0a 09 52 33 20  |ame/pointer..R3 |
0002e990  3d 09 78 20 63 6f 6f 72  64 69 6e 61 74 65 0a 09  |=.x coordinate..|
0002e9a0  52 34 20 3d 09 79 20 63  6f 6f 72 64 69 6e 61 74  |R4 =.y coordinat|
0002e9b0  65 0a 09 52 36 20 3d 09  53 63 61 6c 65 20 66 61  |e..R6 =.Scale fa|
0002e9c0  63 74 6f 72 73 0a 0a 54  68 69 73 20 70 6c 6f 74  |ctors..This plot|
0002e9d0  73 20 74 68 65 20 73 6f  6c 69 64 20 70 69 78 65  |s the solid pixe|
0002e9e0  6c 73 20 69 6e 20 74 68  65 20 62 61 63 6b 67 72  |ls in the backgr|
0002e9f0  6f 75 6e 64 20 63 6f 6c  6f 75 72 20 28 75 73 69  |ound colour (usi|
0002ea00  6e 67 20 74 68 65 20 67  69 76 65 6e 20 73 63 61  |ng the given sca|
0002ea10  6c 69 6e 67 20 66 61 63  74 6f 72 73 29 20 77 69  |ling factors) wi|
0002ea20  74 68 20 74 68 65 20 62  6f 74 74 6f 6d 20 6c 65  |th the bottom le|
0002ea30  66 74 20 63 6f 72 6e 65  72 20 61 74 20 74 68 65  |ft corner at the|
0002ea40  20 67 69 76 65 6e 20 63  6f 6f 72 64 69 6e 61 74  | given coordinat|
0002ea50  65 73 2e 00 44 41 54 41  26 01 00 00 50 61 69 6e  |es..DATA&...Pain|
0002ea60  74 20 63 68 61 72 61 63  74 65 72 20 73 63 61 6c  |t character scal|
0002ea70  65 64 20 28 35 31 29 0a  3d 3e 09 52 30 20 3d 09  |ed (51).=>.R0 =.|
0002ea80  3c 35 31 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |<51=>os_spriteop|
0002ea90  5f 72 65 61 73 6f 6e 32  3e 0a 09 52 31 20 3d 09  |_reason2>..R1 =.|
0002eaa0  43 68 61 72 61 63 74 65  72 20 63 6f 64 65 0a 09  |Character code..|
0002eab0  52 33 20 3d 09 78 20 63  6f 6f 72 64 69 6e 61 74  |R3 =.x coordinat|
0002eac0  65 0a 09 52 34 20 3d 09  79 20 63 6f 6f 72 64 69  |e..R4 =.y coordi|
0002ead0  6e 61 74 65 0a 09 52 36  20 3d 09 53 63 61 6c 65  |nate..R6 =.Scale|
0002eae0  20 66 61 63 74 6f 72 73  0a 0a 54 68 69 73 20 70  | factors..This p|
0002eaf0  6c 6f 74 73 20 74 68 65  20 73 70 65 63 69 66 69  |lots the specifi|
0002eb00  65 64 20 63 6f 6c 6f 75  72 20 69 6e 20 74 68 65  |ed colour in the|
0002eb10  20 66 6f 72 67 72 6f 75  6e 64 20 63 6f 6c 6f 75  | forground colou|
0002eb20  72 20 28 75 73 69 6e 67  20 74 68 65 20 67 69 76  |r (using the giv|
0002eb30  65 6e 20 73 63 61 6c 69  6e 67 20 66 61 63 74 6f  |en scaling facto|
0002eb40  72 73 29 20 77 69 74 68  20 74 68 65 20 62 6f 74  |rs) with the bot|
0002eb50  74 6f 6d 20 6c 65 66 74  20 63 6f 72 6e 65 72 20  |tom left corner |
0002eb60  61 74 20 74 68 65 20 67  69 76 65 6e 20 63 6f 6f  |at the given coo|
0002eb70  72 64 69 6e 61 74 65 73  2e 20 00 00 44 41 54 41  |rdinates. ..DATA|
0002eb80  57 01 00 00 50 75 74 20  73 70 72 69 74 65 20 73  |W...Put sprite s|
0002eb90  63 61 6c 65 64 20 28 35  32 29 0a 3d 3e 09 52 30  |caled (52).=>.R0|
0002eba0  20 3d 09 3c 35 32 3d 3e  6f 73 5f 73 70 72 69 74  | =.<52=>os_sprit|
0002ebb0  65 6f 70 5f 72 65 61 73  6f 6e 32 3e 0a 09 52 31  |eop_reason2>..R1|
0002ebc0  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0002ebd0  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0002ebe0  61 3e 0a 09 52 32 20 3d  09 53 70 72 69 74 65 20  |a>..R2 =.Sprite |
0002ebf0  6e 61 6d 65 2f 70 6f 69  6e 74 65 72 0a 09 52 33  |name/pointer..R3|
0002ec00  20 3d 09 78 20 63 6f 6f  72 64 69 6e 61 74 65 0a  | =.x coordinate.|
0002ec10  09 52 34 20 3d 09 79 20  63 6f 6f 72 64 69 6e 61  |.R4 =.y coordina|
0002ec20  74 65 0a 09 52 35 20 3d  09 3c 50 6c 6f 74 20 61  |te..R5 =.<Plot a|
0002ec30  63 74 69 6f 6e 3d 3e 6f  73 5f 73 70 72 69 74 65  |ction=>os_sprite|
0002ec40  6f 70 5f 61 63 74 69 6f  6e 3e 0a 09 52 36 20 3d  |op_action>..R6 =|
0002ec50  09 3c 53 63 61 6c 65 20  66 61 63 74 6f 72 73 3d  |.<Scale factors=|
0002ec60  3e 53 46 3e 20 6f 72 20  30 20 66 6f 72 20 31 3a  |>SF> or 0 for 1:|
0002ec70  31 20 73 63 61 6c 69 6e  67 0a 09 52 37 20 3d 09  |1 scaling..R7 =.|
0002ec80  3c 50 69 78 65 6c 20 74  72 61 6e 73 6c 61 74 69  |<Pixel translati|
0002ec90  6f 6e 20 74 61 62 6c 65  3d 3e 50 54 3e 20 6f 72  |on table=>PT> or|
0002eca0  20 30 20 66 6f 72 20 6e  6f 20 74 72 61 6e 73 6c  | 0 for no transl|
0002ecb0  61 74 69 6f 6e 0a 0a 54  68 69 73 20 70 6c 6f 74  |ation..This plot|
0002ecc0  73 20 74 68 65 20 67 69  76 65 6e 20 73 70 72 69  |s the given spri|
0002ecd0  74 65 2e 00 44 41 54 41  f5 01 00 00 50 75 74 20  |te..DATA....Put |
0002ece0  73 70 72 69 74 65 20 67  72 65 79 20 73 63 61 6c  |sprite grey scal|
0002ecf0  65 64 20 28 35 33 29 0a  3d 3e 09 52 30 20 3d 09  |ed (53).=>.R0 =.|
0002ed00  3c 35 33 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |<53=>os_spriteop|
0002ed10  5f 72 65 61 73 6f 6e 32  3e 0a 09 52 31 20 3d 09  |_reason2>..R1 =.|
0002ed20  3c 53 70 72 69 74 65 20  61 72 65 61 3d 3e 6f 73  |<Sprite area=>os|
0002ed30  5f 73 70 72 69 74 65 6f  70 5f 61 72 65 61 3e 0a  |_spriteop_area>.|
0002ed40  09 52 32 20 3d 09 53 70  72 69 74 65 20 6e 61 6d  |.R2 =.Sprite nam|
0002ed50  65 2f 70 6f 69 6e 74 65  72 0a 09 52 33 20 3d 09  |e/pointer..R3 =.|
0002ed60  78 20 63 6f 6f 72 64 69  6e 61 74 65 0a 09 52 34  |x coordinate..R4|
0002ed70  20 3d 09 79 20 63 6f 6f  72 64 69 6e 61 74 65 0a  | =.y coordinate.|
0002ed80  09 52 35 20 3d 09 30 0a  09 52 36 20 3d 09 3c 53  |.R5 =.0..R6 =.<S|
0002ed90  63 61 6c 65 20 66 61 63  74 6f 72 73 3d 3e 53 46  |cale factors=>SF|
0002eda0  3e 20 6f 72 20 30 20 66  6f 72 20 31 3a 31 20 73  |> or 0 for 1:1 s|
0002edb0  63 61 6c 69 6e 67 0a 09  52 37 20 3d 09 3c 50 69  |caling..R7 =.<Pi|
0002edc0  78 65 6c 20 74 72 61 6e  73 6c 61 74 69 6f 6e 20  |xel translation |
0002edd0  74 61 62 6c 65 3d 3e 50  54 3e 20 6f 72 20 30 20  |table=>PT> or 0 |
0002ede0  66 6f 72 20 6e 6f 20 74  72 61 6e 73 6c 61 74 69  |for no translati|
0002edf0  6f 6e 0a 0a 54 68 69 73  20 61 6e 74 69 2d 61 6c  |on..This anti-al|
0002ee00  69 61 73 65 73 20 74 68  65 20 73 70 72 69 74 65  |iases the sprite|
0002ee10  20 61 73 20 69 74 20 73  63 61 6c 65 73 20 69 74  | as it scales it|
0002ee20  2e 20 54 68 65 20 73 70  72 69 74 65 20 6d 75 73  |. The sprite mus|
0002ee30  74 20 68 61 76 65 20 62  65 65 6e 20 64 65 66 69  |t have been defi|
0002ee40  6e 65 64 20 69 6e 20 61  20 31 36 20 63 6f 6c 6f  |ned in a 16 colo|
0002ee50  75 72 20 6d 6f 64 65 20  77 68 6f 27 73 20 70 69  |ur mode who's pi|
0002ee60  78 65 6c 73 20 72 65 66  6c 65 63 74 20 61 20 6c  |xels reflect a l|
0002ee70  69 6e 65 61 72 20 67 72  65 79 20 73 63 61 6c 65  |inear grey scale|
0002ee80  2e 20 4e 6f 74 65 20 74  68 69 73 20 69 73 20 63  |. Note this is c|
0002ee90  6f 6e 73 69 64 65 72 61  62 6c 79 20 73 6c 6f 77  |onsiderably slow|
0002eea0  65 72 20 74 68 61 6e 20  3c 4f 53 5f 53 70 72 69  |er than <OS_Spri|
0002eeb0  74 65 4f 70 20 35 32 3d  3e 6f 73 5f 73 70 72 69  |teOp 52=>os_spri|
0002eec0  74 65 6f 70 5f 35 32 3e  2e 00 00 00 44 41 54 41  |teop_52>....DATA|
0002eed0  e4 00 00 00 52 65 6d 6f  76 65 20 6c 65 66 74 20  |....Remove left |
0002eee0  68 61 6e 64 20 77 61 73  74 61 67 65 20 28 35 34  |hand wastage (54|
0002eef0  29 0a 3d 3e 09 52 30 20  3d 09 3c 35 34 3d 3e 6f  |).=>.R0 =.<54=>o|
0002ef00  73 5f 73 70 72 69 74 65  6f 70 5f 72 65 61 73 6f  |s_spriteop_reaso|
0002ef10  6e 32 3e 0a 09 52 31 20  3d 09 3c 53 70 72 69 74  |n2>..R1 =.<Sprit|
0002ef20  65 20 61 72 65 61 3d 3e  6f 73 5f 73 70 72 69 74  |e area=>os_sprit|
0002ef30  65 6f 70 5f 61 72 65 61  3e 0a 09 52 32 20 3d 09  |eop_area>..R2 =.|
0002ef40  53 70 72 69 74 65 20 6e  61 6d 65 2f 70 6f 69 6e  |Sprite name/poin|
0002ef50  74 65 72 0a 0a 54 68 69  73 20 6d 61 6b 65 73 20  |ter..This makes |
0002ef60  74 68 65 20 6c 65 66 74  20 68 61 6e 64 20 65 64  |the left hand ed|
0002ef70  67 65 20 6f 66 20 74 68  65 20 73 70 72 69 74 65  |ge of the sprite|
0002ef80  20 77 6f 72 64 20 61 6c  69 67 6e 65 64 2e 20 54  | word aligned. T|
0002ef90  68 75 73 20 72 65 64 75  63 69 6e 67 20 61 6e 79  |hus reducing any|
0002efa0  20 77 61 73 74 65 20 6f  66 20 73 70 61 63 65 2e  | waste of space.|
0002efb0  44 41 54 41 06 04 00 00  50 6c 6f 74 20 6d 61 73  |DATA....Plot mas|
0002efc0  6b 2f 73 70 72 69 74 65  20 74 72 61 6e 73 66 6f  |k/sprite transfo|
0002efd0  72 6d 65 64 20 28 35 35  2f 35 36 29 0a 3d 3e 09  |rmed (55/56).=>.|
0002efe0  52 30 20 3d 09 3c 35 35  3d 3e 6f 73 5f 73 70 72  |R0 =.<55=>os_spr|
0002eff0  69 74 65 6f 70 5f 72 65  61 73 6f 6e 32 3e 20 28  |iteop_reason2> (|
0002f000  50 6c 6f 74 20 6d 61 73  6b 29 20 6f 72 20 3c 35  |Plot mask) or <5|
0002f010  36 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 72  |6=>os_spriteop_r|
0002f020  65 61 73 6f 6e 32 3e 20  28 50 6c 6f 74 20 73 70  |eason2> (Plot sp|
0002f030  72 69 74 65 29 0a 09 52  31 20 3d 09 3c 53 70 72  |rite)..R1 =.<Spr|
0002f040  69 74 65 20 61 72 65 61  3d 3e 6f 73 5f 73 70 72  |ite area=>os_spr|
0002f050  69 74 65 6f 70 5f 61 72  65 61 3e 0a 09 52 32 20  |iteop_area>..R2 |
0002f060  3d 09 53 70 72 69 74 65  20 6e 61 6d 65 2f 70 6f  |=.Sprite name/po|
0002f070  69 6e 74 65 72 0a 09 52  33 20 3d 09 3c 66 6c 61  |inter..R3 =.<fla|
0002f080  67 73 3d 3e 2e 66 6c 61  67 73 3e 0a 09 52 34 20  |gs=>.flags>..R4 |
0002f090  3d 09 50 6f 69 6e 74 65  72 20 74 6f 20 3c 73 6f  |=.Pointer to <so|
0002f0a0  75 72 63 65 20 72 65 63  74 61 6e 67 6c 65 3d 3e  |urce rectangle=>|
0002f0b0  2e 73 6f 75 72 63 65 3e  20 77 69 74 68 69 6e 20  |.source> within |
0002f0c0  73 70 72 69 74 65 0a 09  52 35 20 3d 09 3c 50 6c  |sprite..R5 =.<Pl|
0002f0d0  6f 74 20 61 63 74 69 6f  6e 3d 3e 6f 73 5f 73 70  |ot action=>os_sp|
0002f0e0  72 69 74 65 6f 70 5f 61  63 74 69 6f 6e 3e 0a 09  |riteop_action>..|
0002f0f0  52 36 20 3d 09 50 6f 69  6e 74 65 72 20 74 6f 20  |R6 =.Pointer to |
0002f100  6d 61 74 72 69 78 20 28  52 33 20 62 69 74 20 30  |matrix (R3 bit 0|
0002f110  20 63 6c 65 61 72 29 0a  09 20 09 52 36 2b 30 2c  | clear).. .R6+0,|
0002f120  34 2c 38 2c 31 32 2c 31  36 2c 32 30 20 3d 20 6d  |4,8,12,16,20 = m|
0002f130  61 74 72 69 78 20 28 61  73 20 66 6f 72 20 44 72  |atrix (as for Dr|
0002f140  61 77 20 6d 6f 64 75 6c  65 29 a0 28 2a 2a 2a 20  |aw module).(*** |
0002f150  46 49 58 20 2a 2a 2a 29  0a 09 20 09 50 6f 69 6e  |FIX ***).. .Poin|
0002f160  74 65 72 20 74 6f 20 64  65 73 74 69 6e 61 74 69  |ter to destinati|
0002f170  6f 6e 20 63 6f 6f 72 64  73 20 28 52 33 20 62 69  |on coords (R3 bi|
0002f180  74 20 30 20 73 65 74 29  0a 09 20 09 52 36 2b 30  |t 0 set).. .R6+0|
0002f190  2c 34 20 20 20 3d 20 78  30 2c 79 30 20 6f 6e 20  |,4   = x0,y0 on |
0002f1a0  73 63 72 65 65 6e 20 28  31 2f 32 35 36 74 68 20  |screen (1/256th |
0002f1b0  4f 53 20 75 6e 69 74 29  0a 09 20 09 52 36 2b 38  |OS unit).. .R6+8|
0002f1c0  2c 31 32 20 20 3d 20 78  31 2c 79 31 20 6f 6e 20  |,12  = x1,y1 on |
0002f1d0  73 63 72 65 65 6e 20 28  31 2f 32 35 36 74 68 20  |screen (1/256th |
0002f1e0  4f 53 20 75 6e 69 74 29  0a 09 20 09 52 36 2b 31  |OS unit).. .R6+1|
0002f1f0  36 2c 32 30 20 3d 20 78  32 2c 79 32 20 6f 6e 20  |6,20 = x2,y2 on |
0002f200  73 63 72 65 65 6e 20 28  31 2f 32 35 36 74 68 20  |screen (1/256th |
0002f210  4f 53 20 75 6e 69 74 29  0a 09 20 09 52 36 2b 32  |OS unit).. .R6+2|
0002f220  34 2c 32 38 20 3d 20 78  33 2c 79 33 20 6f 6e 20  |4,28 = x3,y3 on |
0002f230  73 63 72 65 65 6e 20 28  31 2f 32 35 36 74 68 20  |screen (1/256th |
0002f240  4f 53 20 75 6e 69 74 29  0a 09 52 37 20 3d 09 3c  |OS unit)..R7 =.<|
0002f250  50 69 78 65 6c 20 74 72  61 6e 73 6c 61 74 69 6f  |Pixel translatio|
0002f260  6e 20 74 61 62 6c 65 3d  3e 50 54 3e 20 6f 72 20  |n table=>PT> or |
0002f270  30 20 66 6f 72 20 6e 6f  6e 65 0a 0a 52 49 53 43  |0 for none..RISC|
0002f280  20 4f 53 20 33 20 4f 6e  6c 79 0a 23 53 75 62 70  | OS 3 Only.#Subp|
0002f290  61 67 65 20 66 6c 61 67  73 0a 54 72 61 6e 73 66  |age flags.Transf|
0002f2a0  6f 72 6d 61 74 69 6f 6e  20 66 6c 61 67 73 0a 42  |ormation flags.B|
0002f2b0  69 74 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |it.Meaning.#Line|
0002f2c0  0a 30 09 31 3d 3e 20 52  36 20 3d 20 50 6f 69 6e  |.0.1=> R6 = Poin|
0002f2d0  74 65 72 20 74 6f 20 64  65 73 74 69 6e 61 74 69  |ter to destinati|
0002f2e0  6f 6e 20 63 6f 6f 72 64  73 0a 09 30 3d 3e 20 52  |on coords..0=> R|
0002f2f0  36 20 3d 20 50 6f 69 6e  74 65 72 20 74 6f 20 6d  |6 = Pointer to m|
0002f300  61 74 72 69 78 0a 31 09  31 3d 3e 20 52 34 20 3d  |atrix.1.1=> R4 =|
0002f310  20 50 6f 69 6e 74 65 72  20 74 6f 20 73 6f 75 72  | Pointer to sour|
0002f320  63 65 20 72 65 63 74 61  6e 67 6c 65 20 77 69 74  |ce rectangle wit|
0002f330  68 69 6e 20 73 70 72 69  74 65 0a 32 2d 33 31 09  |hin sprite.2-31.|
0002f340  52 65 73 65 72 76 65 64  20 6d 75 73 74 20 62 65  |Reserved must be|
0002f350  20 30 0a 23 53 75 62 70  61 67 65 20 73 6f 75 72  | 0.#Subpage sour|
0002f360  63 65 0a 54 72 61 6e 73  66 6f 72 6d 61 74 69 6f  |ce.Transformatio|
0002f370  6e 20 73 6f 75 72 63 65  0a 4f 66 66 73 65 74 09  |n source.Offset.|
0002f380  43 6f 6e 74 65 6e 74 73  0a 23 4c 69 6e 65 0a 30  |Contents.#Line.0|
0002f390  09 78 20 6c 65 66 74 0a  34 09 79 20 62 6f 74 74  |.x left.4.y bott|
0002f3a0  6f 6d 0a 38 09 78 20 72  69 67 68 74 0a 31 32 09  |om.8.x right.12.|
0002f3b0  79 20 74 6f 70 0a 00 00  44 41 54 41 66 01 00 00  |y top...DATAf...|
0002f3c0  49 6e 73 65 72 74 2f 44  65 6c 65 74 65 20 52 6f  |Insert/Delete Ro|
0002f3d0  77 73 2f 43 6f 6c 75 6d  6e 73 20 28 35 37 2f 35  |ws/Columns (57/5|
0002f3e0  38 29 0a 3d 3e 09 52 30  20 3d 09 3c 35 37 3d 3e  |8).=>.R0 =.<57=>|
0002f3f0  6f 73 5f 73 70 72 69 74  65 6f 70 5f 72 65 61 73  |os_spriteop_reas|
0002f400  6f 6e 32 3e 20 28 52 6f  77 73 29 20 6f 72 20 3c  |on2> (Rows) or <|
0002f410  35 38 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |58=>os_spriteop_|
0002f420  72 65 61 73 6f 6e 32 3e  20 28 43 6f 6c 75 6d 6e  |reason2> (Column|
0002f430  73 29 0a 09 52 31 20 3d  09 3c 53 70 72 69 74 65  |s)..R1 =.<Sprite|
0002f440  20 61 72 65 61 3d 3e 6f  73 5f 73 70 72 69 74 65  | area=>os_sprite|
0002f450  6f 70 5f 61 72 65 61 3e  0a 09 52 32 20 3d 09 53  |op_area>..R2 =.S|
0002f460  70 72 69 74 65 20 6e 61  6d 65 2f 70 6f 69 6e 74  |prite name/point|
0002f470  65 72 0a 09 52 33 20 3d  09 52 6f 77 2f 43 6f 6c  |er..R3 =.Row/Col|
0002f480  75 6d 6e 20 6e 75 6d 62  65 72 0a 09 52 34 20 3d  |umn number..R4 =|
0002f490  09 2b 76 65 20 3a 20 4e  75 6d 62 65 72 20 6f 66  |.+ve : Number of|
0002f4a0  20 72 6f 77 73 2f 63 6f  6c 75 6d 6e 73 20 74 6f  | rows/columns to|
0002f4b0  20 69 6e 73 65 72 74 0a  09 20 09 2d 76 65 20 3a  | insert.. .-ve :|
0002f4c0  20 4e 75 6d 62 65 72 20  6f 66 20 72 6f 77 73 2f  | Number of rows/|
0002f4d0  63 6f 6c 75 6d 6e 73 20  74 6f 20 64 65 6c 65 74  |columns to delet|
0002f4e0  65 0a 0a 49 6e 73 65 72  74 20 6f 72 20 64 65 6c  |e..Insert or del|
0002f4f0  65 74 65 20 72 6f 77 73  20 6f 72 20 63 6f 6c 75  |ete rows or colu|
0002f500  6d 6e 73 20 66 72 6f 6d  20 74 68 65 20 73 70 72  |mns from the spr|
0002f510  69 74 65 20 73 70 65 63  69 66 69 65 64 2e 00 00  |ite specified...|
0002f520  44 41 54 41 53 02 00 00  53 77 69 74 63 68 20 6f  |DATAS...Switch o|
0002f530  75 74 70 75 74 20 74 6f  20 73 70 72 69 74 65 20  |utput to sprite |
0002f540  28 36 30 29 0a 3d 3e 09  52 30 20 3d 09 3c 36 30  |(60).=>.R0 =.<60|
0002f550  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 72 65  |=>os_spriteop_re|
0002f560  61 73 6f 6e 32 3e 0a 09  52 31 20 3d 09 3c 53 70  |ason2>..R1 =.<Sp|
0002f570  72 69 74 65 20 61 72 65  61 3d 3e 6f 73 5f 73 70  |rite area=>os_sp|
0002f580  72 69 74 65 6f 70 5f 61  72 65 61 3e 0a 09 52 32  |riteop_area>..R2|
0002f590  20 3d 09 53 70 72 69 74  65 20 6e 61 6d 65 2f 70  | =.Sprite name/p|
0002f5a0  6f 69 6e 74 65 72 20 6f  72 20 30 20 74 6f 20 73  |ointer or 0 to s|
0002f5b0  77 69 74 63 68 20 74 6f  20 73 63 72 65 65 6e 0a  |witch to screen.|
0002f5c0  09 52 33 20 3d 09 30 20  3d 3e 20 4e 6f 20 73 61  |.R3 =.0 => No sa|
0002f5d0  76 65 20 61 72 65 61 0a  09 20 09 31 20 3d 3e 20  |ve area.. .1 => |
0002f5e0  53 79 73 74 65 6d 20 73  61 76 65 20 61 72 65 61  |System save area|
0002f5f0  0a 09 20 09 65 6c 73 65  20 3d 3e 20 50 6f 69 6e  |.. .else => Poin|
0002f600  74 65 72 20 74 6f 20 73  61 76 65 20 61 72 65 61  |ter to save area|
0002f610  0a 3c 3d 09 52 31 2d 52  33 20 3d 20 50 72 65 76  |.<=.R1-R3 = Prev|
0002f620  69 6f 75 73 20 76 61 6c  75 65 73 0a 0a 54 68 69  |ious values..Thi|
0002f630  73 20 53 57 49 20 64 65  63 72 65 65 73 20 74 68  |s SWI decrees th|
0002f640  61 74 20 61 6c 6c 20 73  75 62 73 65 71 75 65 6e  |at all subsequen|
0002f650  74 20 6f 75 74 70 75 74  20 73 68 6f 75 6c 64 20  |t output should |
0002f660  62 65 20 64 69 73 70 6c  61 79 65 64 20 69 6e 20  |be displayed in |
0002f670  74 68 65 20 73 70 72 69  74 65 20 67 69 76 65 6e  |the sprite given|
0002f680  2c 20 72 61 74 68 65 72  20 74 68 61 6e 20 74 6f  |, rather than to|
0002f690  20 74 68 65 20 70 72 65  76 69 6f 75 73 20 64 65  | the previous de|
0002f6a0  73 74 69 6e 61 74 69 6f  6e 2e 20 53 61 76 65 20  |stination. Save |
0002f6b0  61 72 65 61 73 20 61 72  65 20 6f 6e 6c 79 20 72  |areas are only r|
0002f6c0  65 71 75 69 72 65 64 20  69 66 20 79 6f 75 20 77  |equired if you w|
0002f6d0  69 73 68 20 74 6f 20 72  65 74 61 69 6e 20 74 68  |ish to retain th|
0002f6e0  65 20 27 73 74 61 74 65  27 20 6f 66 20 74 68 65  |e 'state' of the|
0002f6f0  20 73 70 72 69 74 65 20  62 65 74 77 65 65 6e 20  | sprite between |
0002f700  73 77 69 74 63 68 65 73  2e 0a 0a 59 6f 75 20 73  |switches...You s|
0002f710  68 6f 75 6c 64 20 65 6e  73 75 72 65 20 74 68 61  |hould ensure tha|
0002f720  74 20 65 72 72 6f 72 73  20 61 72 65 20 68 61 6e  |t errors are han|
0002f730  64 6c 65 64 20 63 6f 72  72 65 63 74 6c 79 20 61  |dled correctly a|
0002f740  6e 64 20 73 77 69 74 63  68 20 6f 75 74 70 75 74  |nd switch output|
0002f750  20 62 61 63 6b 20 77 68  69 6c 73 74 20 75 73 69  | back whilst usi|
0002f760  6e 67 20 73 77 69 74 63  68 65 64 20 6f 75 74 70  |ng switched outp|
0002f770  75 74 2e 00 44 41 54 41  4d 02 00 00 53 77 69 74  |ut..DATAM...Swit|
0002f780  63 68 20 6f 75 74 70 75  74 20 74 6f 20 6d 61 73  |ch output to mas|
0002f790  6b 20 28 36 31 29 0a 3d  3e 09 52 30 20 3d 09 3c  |k (61).=>.R0 =.<|
0002f7a0  36 30 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |60=>os_spriteop_|
0002f7b0  72 65 61 73 6f 6e 32 3e  0a 09 52 31 20 3d 09 3c  |reason2>..R1 =.<|
0002f7c0  53 70 72 69 74 65 20 61  72 65 61 3d 3e 6f 73 5f  |Sprite area=>os_|
0002f7d0  73 70 72 69 74 65 6f 70  5f 61 72 65 61 3e 0a 09  |spriteop_area>..|
0002f7e0  52 32 20 3d 09 53 70 72  69 74 65 20 6e 61 6d 65  |R2 =.Sprite name|
0002f7f0  2f 70 6f 69 6e 74 65 72  20 6f 72 20 30 20 74 6f  |/pointer or 0 to|
0002f800  20 73 77 69 74 63 68 20  74 6f 20 73 63 72 65 65  | switch to scree|
0002f810  6e 0a 09 52 33 20 3d 09  30 20 3d 3e 20 4e 6f 20  |n..R3 =.0 => No |
0002f820  73 61 76 65 20 61 72 65  61 0a 09 20 09 31 20 3d  |save area.. .1 =|
0002f830  3e 20 53 79 73 74 65 6d  20 73 61 76 65 20 61 72  |> System save ar|
0002f840  65 61 0a 09 20 09 65 6c  73 65 20 3d 3e 20 50 6f  |ea.. .else => Po|
0002f850  69 6e 74 65 72 20 74 6f  20 73 61 76 65 20 61 72  |inter to save ar|
0002f860  65 61 0a 3c 3d 09 52 31  2d 52 33 20 3d 20 50 72  |ea.<=.R1-R3 = Pr|
0002f870  65 76 69 6f 75 73 20 76  61 6c 75 65 73 0a 0a 54  |evious values..T|
0002f880  68 69 73 20 53 57 49 20  64 65 63 72 65 65 73 20  |his SWI decrees |
0002f890  74 68 61 74 20 61 6c 6c  20 73 75 62 73 65 71 75  |that all subsequ|
0002f8a0  65 6e 74 20 6f 75 74 70  75 74 20 73 68 6f 75 6c  |ent output shoul|
0002f8b0  64 20 62 65 20 70 6c 61  63 65 64 20 69 6e 20 74  |d be placed in t|
0002f8c0  68 65 20 73 70 72 69 74  65 20 6d 61 73 6b 2c 20  |he sprite mask, |
0002f8d0  72 61 74 68 65 72 20 74  68 61 6e 20 74 6f 20 74  |rather than to t|
0002f8e0  68 65 20 70 72 65 76 69  6f 75 73 20 64 65 73 74  |he previous dest|
0002f8f0  69 6e 61 74 69 6f 6e 2e  20 53 61 76 65 20 61 72  |ination. Save ar|
0002f900  65 61 73 20 61 72 65 20  6f 6e 6c 79 20 72 65 71  |eas are only req|
0002f910  75 69 72 65 64 20 69 66  20 79 6f 75 20 77 69 73  |uired if you wis|
0002f920  68 20 74 6f 20 72 65 74  61 69 6e 20 74 68 65 20  |h to retain the |
0002f930  27 73 74 61 74 65 27 20  6f 66 20 74 68 65 20 73  |'state' of the s|
0002f940  70 72 69 74 65 20 62 65  74 77 65 65 6e 20 73 77  |prite between sw|
0002f950  69 74 63 68 65 73 2e 0a  0a 59 6f 75 20 73 68 6f  |itches...You sho|
0002f960  75 6c 64 20 65 6e 73 75  72 65 20 74 68 61 74 20  |uld ensure that |
0002f970  65 72 72 6f 72 73 20 61  72 65 20 68 61 6e 64 6c  |errors are handl|
0002f980  65 64 20 63 6f 72 72 65  63 74 6c 79 20 61 6e 64  |ed correctly and|
0002f990  20 73 77 69 74 63 68 20  6f 75 74 70 75 74 20 62  | switch output b|
0002f9a0  61 63 6b 20 77 68 69 6c  73 74 20 75 73 69 6e 67  |ack whilst using|
0002f9b0  20 73 77 69 74 63 68 65  64 20 6f 75 74 70 75 74  | switched output|
0002f9c0  2e 00 00 00 44 41 54 41  ea 01 00 00 52 65 61 64  |....DATA....Read|
0002f9d0  20 73 61 76 65 20 61 72  65 61 20 73 69 7a 65 20  | save area size |
0002f9e0  28 36 32 29 0a 3d 3e 09  52 30 20 3d 09 3c 36 32  |(62).=>.R0 =.<62|
0002f9f0  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 72 65  |=>os_spriteop_re|
0002fa00  61 73 6f 6e 32 3e 0a 09  52 31 20 3d 09 3c 53 70  |ason2>..R1 =.<Sp|
0002fa10  72 69 74 65 20 61 72 65  61 3d 3e 6f 73 5f 73 70  |rite area=>os_sp|
0002fa20  72 69 74 65 6f 70 5f 61  72 65 61 3e 0a 09 52 32  |riteop_area>..R2|
0002fa30  20 3d 09 53 70 72 69 74  65 20 6e 61 6d 65 2f 70  | =.Sprite name/p|
0002fa40  6f 69 6e 74 65 72 2c 20  6f 72 20 30 20 66 6f 72  |ointer, or 0 for|
0002fa50  20 74 68 65 20 73 63 72  65 65 6e 0a 3c 3d 09 52  | the screen.<=.R|
0002fa60  33 20 3d 09 53 69 7a 65  20 6f 66 20 72 65 71 75  |3 =.Size of requ|
0002fa70  69 72 65 64 20 73 61 76  65 20 61 72 65 61 20 69  |ired save area i|
0002fa80  6e 20 62 79 74 65 73 0a  0a 54 68 69 73 20 63 61  |n bytes..This ca|
0002fa90  6c 63 75 6c 61 74 65 73  20 74 68 65 20 73 69 7a  |lculates the siz|
0002faa0  65 20 6f 66 20 61 20 73  61 76 65 20 61 72 65 61  |e of a save area|
0002fab0  20 66 6f 72 20 74 68 65  20 67 69 76 65 6e 20 73  | for the given s|
0002fac0  70 72 69 74 65 2e 20 49  74 20 69 73 20 63 6f 6e  |prite. It is con|
0002fad0  73 74 61 6e 74 20 66 6f  72 20 61 20 70 61 72 74  |stant for a part|
0002fae0  69 63 75 6c 61 72 20 72  65 6c 65 61 73 65 20 6f  |icular release o|
0002faf0  66 20 52 49 53 43 20 4f  53 20 62 75 74 20 6d 61  |f RISC OS but ma|
0002fb00  79 20 63 68 61 6e 67 65  20 69 6e 20 74 68 65 20  |y change in the |
0002fb10  66 75 74 75 72 65 2e 0a  0a 46 6f 72 20 74 68 65  |future...For the|
0002fb20  20 66 69 72 73 74 20 75  73 65 20 79 6f 75 20 73  | first use you s|
0002fb30  68 6f 75 6c 64 20 73 65  74 20 74 68 65 20 66 69  |hould set the fi|
0002fb40  72 73 74 20 77 6f 72 64  20 6f 66 20 74 68 65 20  |rst word of the |
0002fb50  73 61 76 65 20 61 72 65  61 20 74 6f 20 30 20 73  |save area to 0 s|
0002fb60  6f 20 74 68 61 74 20 74  68 65 20 61 72 65 61 20  |o that the area |
0002fb70  63 61 6e 20 62 65 20 69  6e 69 74 69 61 6c 69 73  |can be initialis|
0002fb80  65 64 3b 20 73 75 62 73  65 71 75 65 6e 74 6c 79  |ed; subsequently|
0002fb90  20 69 74 20 77 69 6c 6c  20 62 65 20 75 70 64 61  | it will be upda|
0002fba0  74 65 64 20 62 79 20 74  68 65 20 4f 53 2e 00 00  |ted by the OS...|
0002fbb0  44 49 52 24 c8 02 00 00  c8 02 00 00 78 fe 02 00  |DIR$........x...|
0002fbc0  46 ff ff ff 5e ab 63 f5  5d 03 00 00 13 00 00 00  |F...^.c.].......|
0002fbd0  00 00 00 00 21 52 6f 6f  74 00 00 00 d8 01 03 00  |....!Root.......|
0002fbe0  45 fd ff ff ba cf e9 ff  23 01 00 00 13 00 00 00  |E.......#.......|
0002fbf0  00 00 00 00 31 38 00 00  fc 02 03 00 47 fd ff ff  |....18......G...|
0002fc00  d9 80 0d 0a fd 01 00 00  13 00 00 00 00 00 00 00  |................|
0002fc10  5f 66 6f 72 6d 61 74 00  fc 04 03 00 46 fd ff ff  |_format.....F...|
0002fc20  22 cb 23 a2 1c 08 00 00  13 00 00 00 00 00 00 00  |".#.............|
0002fc30  5f 73 65 72 76 69 63 65  00 00 00 00 18 0d 03 00  |_service........|
0002fc40  46 fd ff ff 78 3c e4 24  89 00 00 00 13 00 00 00  |F...x<.$........|
0002fc50  00 00 00 00 36 00 00 00  a4 0d 03 00 46 fd ff ff  |....6.......F...|
0002fc60  f5 4d e4 24 6d 00 00 00  13 00 00 00 00 00 00 00  |.M.$m...........|
0002fc70  37 00 00 00 14 0e 03 00  46 fd ff ff 77 6c e4 24  |7.......F...wl.$|
0002fc80  e1 00 00 00 13 00 00 00  00 00 00 00 31 33 00 00  |............13..|
0002fc90  f8 0e 03 00 46 fd ff ff  4f 45 9d 41 86 00 00 00  |....F...OE.A....|
0002fca0  13 00 00 00 00 00 00 00  34 00 00 00 80 0f 03 00  |........4.......|
0002fcb0  46 fd ff ff 2e 1f 6d 4d  2b 01 00 00 13 00 00 00  |F.....mM+.......|
0002fcc0  00 00 00 00 31 32 00 00  ac 10 03 00 46 fd ff ff  |....12......F...|
0002fcd0  22 38 5b 57 81 00 00 00  13 00 00 00 00 00 00 00  |"8[W............|
0002fce0  31 00 00 00 30 11 03 00  46 fd ff ff bf 31 5b 57  |1...0...F....1[W|
0002fcf0  c4 00 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |............0...|
0002fd00  f4 11 03 00 46 fd ff ff  1d 53 62 f5 4a 01 00 00  |....F....Sb.J...|
0002fd10  13 00 00 00 00 00 00 00  32 00 00 00 40 13 03 00  |........2...@...|
0002fd20  46 fd ff ff 50 64 62 f5  14 01 00 00 13 00 00 00  |F...Pdb.........|
0002fd30  00 00 00 00 33 00 00 00  54 14 03 00 46 fd ff ff  |....3...T...F...|
0002fd40  a9 7b 62 f5 bd 00 00 00  13 00 00 00 00 00 00 00  |.{b.............|
0002fd50  35 00 00 00 14 15 03 00  46 fd ff ff 1a 9c 62 f5  |5.......F.....b.|
0002fd60  22 02 00 00 13 00 00 00  00 00 00 00 38 00 00 00  |"...........8...|
0002fd70  38 17 03 00 46 fd ff ff  24 a8 62 f5 c5 01 00 00  |8...F...$.b.....|
0002fd80  13 00 00 00 00 00 00 00  31 30 00 00 00 19 03 00  |........10......|
0002fd90  46 fd ff ff 04 b1 62 f5  4d 01 00 00 13 00 00 00  |F.....b.M.......|
0002fda0  00 00 00 00 31 31 00 00  50 1a 03 00 46 fd ff ff  |....11..P...F...|
0002fdb0  b2 bb 62 f5 fe 00 00 00  13 00 00 00 00 00 00 00  |..b.............|
0002fdc0  31 34 00 00 50 1b 03 00  46 fd ff ff 0f c8 62 f5  |14..P...F.....b.|
0002fdd0  ce 00 00 00 13 00 00 00  00 00 00 00 31 35 00 00  |............15..|
0002fde0  20 1c 03 00 46 fd ff ff  ff d3 62 f5 c2 00 00 00  | ...F.....b.....|
0002fdf0  13 00 00 00 00 00 00 00  31 36 00 00 e4 1c 03 00  |........16......|
0002fe00  46 fd ff ff 91 52 63 f5  33 01 00 00 13 00 00 00  |F....Rc.3.......|
0002fe10  00 00 00 00 31 37 00 00  18 1e 03 00 46 fd ff ff  |....17......F...|
0002fe20  e6 44 63 f5 df 04 00 00  13 00 00 00 00 00 00 00  |.Dc.............|
0002fe30  31 39 2d 32 30 00 00 00  f8 22 03 00 46 fd ff ff  |19-20...."..F...|
0002fe40  35 50 63 f5 74 00 00 00  13 00 00 00 00 00 00 00  |5Pc.t...........|
0002fe50  52 4f 4d 53 65 63 74 69  6f 6e 73 00 6c 23 03 00  |ROMSections.l#..|
0002fe60  46 fd ff ff 3e a8 63 f5  94 00 00 00 13 00 00 00  |F...>.c.........|
0002fe70  00 00 00 00 39 00 00 00  44 41 54 41 5d 03 00 00  |....9...DATA]...|
0002fe80  4f 53 5f 4d 6f 64 75 6c  65 20 20 28 26 31 45 29  |OS_Module  (&1E)|
0002fe90  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 20  |.#Parent OS_.=> |
0002fea0  52 30 20 3d 20 52 65 61  73 6f 6e 20 3a 0a 30 09  |R0 = Reason :.0.|
0002feb0  3c 52 75 6e 3d 3e 4f 53  5f 4d 6f 64 75 6c 65 30  |<Run=>OS_Module0|
0002fec0  3e 20 20 20 20 20 20 20  20 20 20 20 20 20 09 4f  |>             .O|
0002fed0  74 68 65 72 20 73 74 75  66 66 3a 0a 31 09 3c 4c  |ther stuff:.1.<L|
0002fee0  6f 61 64 3d 3e 4f 53 5f  4d 6f 64 75 6c 65 31 3e  |oad=>OS_Module1>|
0002fef0  09 09 20 20 3c 53 65 72  76 69 63 65 20 63 61 6c  |..  <Service cal|
0002ff00  6c 73 3d 3e 6f 73 5f 6d  6f 64 75 6c 65 5f 73 65  |ls=>os_module_se|
0002ff10  72 76 69 63 65 3e 0a 32  09 3c 45 6e 74 65 72 3d  |rvice>.2.<Enter=|
0002ff20  3e 4f 53 5f 4d 6f 64 75  6c 65 32 3e 09 09 20 20  |>OS_Module2>..  |
0002ff30  3c 4d 6f 64 75 6c 65 20  66 6f 72 6d 61 74 3d 3e  |<Module format=>|
0002ff40  6f 73 5f 6d 6f 64 75 6c  65 5f 66 6f 72 6d 61 74  |os_module_format|
0002ff50  3e 0a 33 09 3c 52 65 49  6e 69 74 3d 3e 4f 53 5f  |>.3.<ReInit=>OS_|
0002ff60  4d 6f 64 75 6c 65 33 3e  0a 34 09 3c 44 65 6c 65  |Module3>.4.<Dele|
0002ff70  74 65 3d 3e 4f 53 5f 4d  6f 64 75 6c 65 34 3e 0a  |te=>OS_Module4>.|
0002ff80  35 09 3c 44 65 73 63 72  69 62 65 20 52 4d 41 3d  |5.<Describe RMA=|
0002ff90  3e 4f 53 5f 4d 6f 64 75  6c 65 35 3e 0a 36 09 3c  |>OS_Module5>.6.<|
0002ffa0  43 6c 61 69 6d 3d 3e 4f  53 5f 4d 6f 64 75 6c 65  |Claim=>OS_Module|
0002ffb0  36 3e 0a 37 09 3c 46 72  65 65 3d 3e 4f 53 5f 4d  |6>.7.<Free=>OS_M|
0002ffc0  6f 64 75 6c 65 37 3e 0a  38 09 3c 54 69 64 79 3d  |odule7>.8.<Tidy=|
0002ffd0  3e 4f 53 5f 4d 6f 64 75  6c 65 38 3e 0a 39 09 3c  |>OS_Module8>.9.<|
0002ffe0  43 6c 65 61 72 3d 3e 4f  53 5f 4d 6f 64 75 6c 65  |Clear=>OS_Module|
0002fff0  39 3e 0a 31 30 09 3c 49  6e 73 65 72 74 20 6d 6f  |9>.10.<Insert mo|
00030000  64 75 6c 65 20 66 72 6f  6d 20 6d 65 6d 6f 72 79  |dule from memory|
00030010  3d 3e 4f 53 5f 4d 6f 64  75 6c 65 31 30 3e 0a 31  |=>OS_Module10>.1|
00030020  31 09 3c 49 6e 73 65 72  74 20 6d 6f 64 75 6c 65  |1.<Insert module|
00030030  20 66 72 6f 6d 20 6d 65  6d 6f 72 79 20 61 6e 64  | from memory and|
00030040  20 6d 6f 76 65 20 74 6f  20 52 4d 41 3d 3e 4f 53  | move to RMA=>OS|
00030050  5f 4d 6f 64 75 6c 65 31  31 3e 0a 31 32 09 3c 45  |_Module11>.12.<E|
00030060  78 74 72 61 63 74 20 6d  6f 64 75 6c 65 20 69 6e  |xtract module in|
00030070  66 6f 3d 3e 4f 53 5f 4d  6f 64 75 6c 65 31 32 3e  |fo=>OS_Module12>|
00030080  0a 31 33 09 3c 45 78 74  65 6e 64 20 62 6c 6f 63  |.13.<Extend bloc|
00030090  6b 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 31 33 3e 0a  |k=>OS_Module13>.|
000300a0  31 34 09 3c 43 72 65 61  74 65 20 6e 65 77 20 69  |14.<Create new i|
000300b0  6e 73 74 61 6e 74 69 61  74 69 6f 6e 3d 3e 4f 53  |nstantiation=>OS|
000300c0  5f 4d 6f 64 75 6c 65 31  34 3e 0a 31 35 09 3c 52  |_Module14>.15.<R|
000300d0  65 6e 61 6d 65 20 69 6e  73 74 61 6e 74 69 61 74  |ename instantiat|
000300e0  69 6f 6e 3d 3e 4f 53 5f  4d 6f 64 75 6c 65 31 35  |ion=>OS_Module15|
000300f0  3e 0a 31 36 09 3c 4d 61  6b 65 20 70 72 65 66 65  |>.16.<Make prefe|
00030100  72 72 65 64 20 69 6e 73  74 61 6e 74 69 61 74 69  |rred instantiati|
00030110  6f 6e 3d 3e 4f 53 5f 4d  6f 64 75 6c 65 31 36 3e  |on=>OS_Module16>|
00030120  0a 31 37 09 3c 41 64 64  20 65 78 70 61 6e 73 69  |.17.<Add expansi|
00030130  6f 6e 20 63 61 72 64 20  6d 6f 64 75 6c 65 3d 3e  |on card module=>|
00030140  4f 53 5f 4d 6f 64 75 6c  65 31 37 3e 0a 31 38 09  |OS_Module17>.18.|
00030150  3c 4c 6f 6f 6b 75 70 20  6d 6f 64 75 6c 65 20 6e  |<Lookup module n|
00030160  61 6d 65 3d 3e 6f 73 5f  6d 6f 64 75 6c 65 31 38  |ame=>os_module18|
00030170  3e 0a 31 39 09 3c 45 6e  75 6d 65 72 61 74 65 20  |>.19.<Enumerate |
00030180  52 4f 4d 20 6d 6f 64 75  6c 65 73 3d 3e 4f 53 5f  |ROM modules=>OS_|
00030190  4d 6f 64 75 6c 65 31 39  2d 32 30 3e 0a 32 30 09  |Module19-20>.20.|
000301a0  3c 45 6e 75 6d 65 72 61  74 65 20 52 4f 4d 20 6d  |<Enumerate ROM m|
000301b0  6f 64 75 6c 65 73 20 77  69 74 68 20 76 65 72 73  |odules with vers|
000301c0  69 6f 6e 3d 3e 4f 53 5f  4d 6f 64 75 6c 65 31 39  |ion=>OS_Module19|
000301d0  2d 32 30 3e 0a 00 00 00  44 41 54 41 23 01 00 00  |-20>....DATA#...|
000301e0  4f 53 5f 4d 6f 64 75 6c  65 20 31 38 0a 23 50 61  |OS_Module 18.#Pa|
000301f0  72 65 6e 74 20 4f 53 5f  4d 6f 64 75 6c 65 0a 3d  |rent OS_Module.=|
00030200  3e 09 52 30 20 3d 20 31  38 0a 09 52 31 20 3d 20  |>.R0 = 18..R1 = |
00030210  6e 61 6d 65 5b 25 69 6e  73 74 61 6e 74 69 61 74  |name[%instantiat|
00030220  69 6f 6e 5d 0a 0a 5c 3c  3d 09 52 31 20 3d 20 6d  |ion]..\<=.R1 = m|
00030230  6f 64 75 6c 65 20 6e 75  6d 62 65 72 0a 09 52 32  |odule number..R2|
00030240  20 3d 20 69 6e 73 74 61  6e 74 69 61 74 69 6f 6e  | = instantiation|
00030250  20 6e 75 6d 62 65 72 0a  09 52 33 20 3d 20 6d 6f  | number..R3 = mo|
00030260  64 75 6c 65 20 63 6f 64  65 0a 09 52 34 20 3d 20  |dule code..R4 = |
00030270  70 72 69 76 61 74 65 20  77 6f 72 64 0a 09 52 35  |private word..R5|
00030280  20 3d 20 70 6f 73 74 66  69 78 20 73 74 72 69 6e  | = postfix strin|
00030290  67 0a 0a 54 68 69 73 20  53 57 49 20 72 65 74 75  |g..This SWI retu|
000302a0  72 6e 73 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |rns information |
000302b0  61 62 6f 75 74 20 61 20  6e 61 6d 65 64 20 6d 6f  |about a named mo|
000302c0  64 75 6c 65 2e 20 54 68  65 20 6e 61 6d 65 20 75  |dule. The name u|
000302d0  73 65 64 2c 20 69 73 20  74 68 65 20 73 61 6d 65  |sed, is the same|
000302e0  20 61 73 20 79 6f 75 20  73 65 65 20 77 69 74 68  | as you see with|
000302f0  20 3c 2a 4d 6f 64 75 6c  65 73 3e 00 44 41 54 41  | <*Modules>.DATA|
00030300  fd 01 00 00 4d 6f 64 75  6c 65 20 66 6f 72 6d 61  |....Module forma|
00030310  74 0a 4f 66 66 73 65 74  09 43 6f 6e 74 61 69 6e  |t.Offset.Contain|
00030320  73 0a 23 4c 69 6e 65 0a  26 30 30 09 53 74 61 72  |s.#Line.&00.Star|
00030330  74 20 63 6f 64 65 0a 26  30 34 09 49 6e 69 74 20  |t code.&04.Init |
00030340  63 6f 64 65 0a 26 30 38  09 45 78 69 74 20 63 6f  |code.&08.Exit co|
00030350  64 65 0a 26 30 43 09 53  65 72 76 69 63 65 20 68  |de.&0C.Service h|
00030360  61 6e 64 6c 65 72 0a 26  31 30 09 54 69 74 6c 65  |andler.&10.Title|
00030370  20 53 74 72 69 6e 67 0a  26 31 34 09 48 65 6c 70  | String.&14.Help|
00030380  20 53 74 72 69 6e 67 0a  26 31 38 09 48 65 6c 70  | String.&18.Help|
00030390  2f 43 6f 6d 6d 61 6e 64  20 74 61 62 6c 65 0a 28  |/Command table.(|
000303a0  26 31 43 09 53 57 49 20  62 61 73 65 20 6e 75 6d  |&1C.SWI base num|
000303b0  62 65 72 29 0a 28 26 32  30 09 53 57 49 20 68 61  |ber).(&20.SWI ha|
000303c0  6e 64 6c 65 72 29 0a 28  26 32 34 09 53 57 49 20  |ndler).(&24.SWI |
000303d0  64 65 63 6f 64 65 20 74  61 62 6c 65 29 0a 28 26  |decode table).(&|
000303e0  32 38 09 53 57 49 20 64  65 63 6f 64 65 20 63 6f  |28.SWI decode co|
000303f0  64 65 29 0a 0a 41 6c 6c  20 65 6e 74 72 69 65 73  |de)..All entries|
00030400  20 65 78 63 65 70 74 20  26 31 43 20 61 72 65 20  | except &1C are |
00030410  6f 66 66 73 65 74 73 20  66 72 6f 6d 20 74 68 65  |offsets from the|
00030420  20 73 74 61 72 74 20 6f  66 20 74 68 65 20 6d 6f  | start of the mo|
00030430  64 75 6c 65 2e 20 45 6e  74 72 79 20 69 73 20 30  |dule. Entry is 0|
00030440  20 69 66 20 69 74 20 69  73 6e 27 74 20 75 73 65  | if it isn't use|
00030450  64 2e 20 54 68 65 20 53  57 49 20 65 6e 74 72 69  |d. The SWI entri|
00030460  65 73 20 61 72 65 20 6f  6e 6c 79 20 75 73 65 64  |es are only used|
00030470  20 69 66 20 74 68 65 79  20 63 6f 6e 74 61 69 6e  | if they contain|
00030480  20 73 65 6e 73 69 62 6c  65 20 76 61 6c 75 65 73  | sensible values|
00030490  2e 20 54 68 69 73 20 6d  65 61 6e 73 20 74 68 61  |. This means tha|
000304a0  74 20 69 66 20 74 68 65  20 6d 6f 64 75 6c 65 20  |t if the module |
000304b0  68 61 73 6e 27 74 20 67  6f 74 20 61 6e 79 20 53  |hasn't got any S|
000304c0  57 49 73 2c 20 74 68 65  73 65 20 66 6f 75 72 20  |WIs, these four |
000304d0  77 6f 72 64 73 20 2a 63  6f 75 6c 64 2a 20 62 65  |words *could* be|
000304e0  20 75 73 65 64 20 66 6f  72 20 73 6f 6d 65 74 68  | used for someth|
000304f0  69 6e 67 20 65 6c 73 65  2e 00 00 00 44 41 54 41  |ing else....DATA|
00030500  1c 08 00 00 53 65 72 76  69 63 65 20 63 61 6c 6c  |....Service call|
00030510  73 0a 23 54 61 62 6c 65  20 43 6f 6c 75 6d 6e 73  |s.#Table Columns|
00030520  20 32 0a 30 30 20 43 61  6c 6c 20 63 6c 61 69 6d  | 2.00 Call claim|
00030530  65 64 0a 30 34 20 55 6e  6b 6e 6f 77 6e 20 63 6f  |ed.04 Unknown co|
00030540  6d 6d 61 6e 64 0a 30 36  20 45 72 72 6f 72 20 68  |mmand.06 Error h|
00030550  61 73 20 6f 63 63 75 72  65 64 0a 30 37 20 55 6e  |as occured.07 Un|
00030560  6b 6e 6f 77 6e 20 4f 53  5f 42 79 74 65 0a 30 38  |known OS_Byte.08|
00030570  20 55 6e 6b 6e 6f 77 6e  20 4f 53 5f 57 6f 72 64  | Unknown OS_Word|
00030580  0a 30 39 20 2a 48 65 6c  70 20 63 61 6c 6c 65 64  |.09 *Help called|
00030590  0a 30 42 20 52 65 6c 65  61 73 65 20 46 49 51 0a  |.0B Release FIQ.|
000305a0  30 43 20 43 6c 61 69 6d  20 46 49 51 0a 31 31 20  |0C Claim FIQ.11 |
000305b0  4d 45 4d 43 20 72 65 6d  61 70 20 77 61 72 6e 69  |MEMC remap warni|
000305c0  6e 67 0a 31 32 20 53 74  61 72 74 20 61 20 46 53  |ng.12 Start a FS|
000305d0  20 28 6f 6c 64 29 0a 32  37 20 50 6f 73 74 2d 52  | (old).27 Post-R|
000305e0  65 73 65 74 0a 32 38 20  55 6e 6b 6e 6f 77 6e 20  |eset.28 Unknown |
000305f0  2a 43 6f 6e 66 69 67 75  72 65 0a 32 39 20 55 6e  |*Configure.29 Un|
00030600  6b 6e 6f 77 6e 20 2a 53  74 61 74 75 73 0a 32 41  |known *Status.2A|
00030610  20 4e 65 77 20 61 70 70  6c 69 63 61 74 69 6f 6e  | New application|
00030620  0a 34 30 20 46 53 20 72  65 2d 69 6e 69 74 0a 34  |.40 FS re-init.4|
00030630  31 20 50 44 72 69 76 65  72 20 70 72 69 6e 74 0a  |1 PDriver print.|
00030640  34 32 20 4c 6f 6f 6b 75  70 20 66 69 6c 65 74 79  |42 Lookup filety|
00030650  70 65 0a 34 33 20 49 6e  74 65 72 6e 61 74 69 6f  |pe.43 Internatio|
00030660  6e 61 6c 20 73 65 72 76  69 63 65 0a 34 34 20 4b  |nal service.44 K|
00030670  65 79 62 6f 61 72 64 20  68 61 6e 64 6c 65 72 0a  |eyboard handler.|
00030680  34 35 20 50 72 65 2d 52  65 73 65 74 0a 34 36 20  |45 Pre-Reset.46 |
00030690  50 6f 73 74 2d 4d 6f 64  65 63 68 61 6e 67 65 0a  |Post-Modechange.|
000306a0  34 37 20 43 6c 61 69 6d  20 62 61 63 6b 67 72 6f  |47 Claim backgro|
000306b0  75 6e 64 20 46 49 51 0a  34 38 20 45 63 6f 6e 65  |und FIQ.48 Econe|
000306c0  74 20 72 65 61 6c 6c 6f  63 61 74 65 20 70 6f 72  |t reallocate por|
000306d0  74 73 0a 34 39 20 53 74  61 72 74 20 57 69 6d 70  |ts.49 Start Wimp|
000306e0  0a 34 41 20 53 74 61 72  74 65 64 20 57 69 6d 70  |.4A Started Wimp|
000306f0  0a 34 42 20 53 74 61 72  74 20 46 69 6c 65 72 0a  |.4B Start Filer.|
00030700  34 43 20 53 74 61 72 74  65 64 20 46 69 6c 65 72  |4C Started Filer|
00030710  0a 34 44 20 50 72 65 2d  4d 6f 64 65 63 68 61 6e  |.4D Pre-Modechan|
00030720  67 65 0a 34 45 20 4d 65  6d 6f 72 79 20 4d 6f 76  |ge.4E Memory Mov|
00030730  65 64 0a 34 46 20 46 69  6c 65 72 20 69 73 20 64  |ed.4F Filer is d|
00030740  79 69 6e 67 0a 35 30 20  4d 6f 64 65 20 45 78 74  |ying.50 Mode Ext|
00030750  65 6e 74 69 6f 6e 0a 35  31 20 4d 6f 64 65 20 54  |ention.51 Mode T|
00030760  72 61 6e 73 6c 61 74 69  6f 6e 0a 35 32 20 4d 6f  |ranslation.52 Mo|
00030770  75 73 65 20 54 72 61 70  0a 35 33 20 57 69 6d 70  |use Trap.53 Wimp|
00030780  20 43 6c 6f 73 65 64 6f  77 6e 0a 35 34 20 53 6f  | Closedown.54 So|
00030790  75 6e 64 0a 35 35 20 2a  4c 6f 67 6f 6e 2f 2a 42  |und.55 *Logon/*B|
000307a0  79 65 20 28 4e 65 74 46  53 29 0a 35 36 20 45 63  |ye (NetFS).56 Ec|
000307b0  6f 6e 65 74 20 64 79 69  6e 67 0a 35 37 20 57 69  |onet dying.57 Wi|
000307c0  6d 70 20 52 65 70 6f 72  74 45 72 72 6f 72 0a 35  |mp ReportError.5|
000307d0  39 20 52 65 73 6f 75 72  63 65 46 53 20 53 74 61  |9 ResourceFS Sta|
000307e0  72 74 65 64 0a 35 41 20  52 65 73 6f 75 72 63 65  |rted.5A Resource|
000307f0  46 53 20 44 79 69 6e 67  0a 35 42 20 43 6f 6c 6f  |FS Dying.5B Colo|
00030800  75 72 54 72 61 6e 73 20  63 61 6c 69 62 72 61 74  |urTrans calibrat|
00030810  69 6f 6e 20 63 68 61 6e  67 65 64 0a 35 43 20 57  |ion changed.5C W|
00030820  69 6d 70 20 53 61 76 65  44 65 73 6b 74 6f 70 0a  |imp SaveDesktop.|
00030830  35 44 20 57 69 6d 70 20  50 61 6c 65 74 74 65 0a  |5D Wimp Palette.|
00030840  35 45 20 4d 65 73 73 61  67 65 54 72 61 6e 73 20  |5E MessageTrans |
00030850  66 69 6c 65 20 63 6c 6f  73 65 64 0a 35 46 20 4e  |file closed.5F N|
00030860  65 74 46 53 20 64 79 69  6e 67 0a 36 30 20 52 65  |etFS dying.60 Re|
00030870  73 6f 75 72 63 65 46 53  20 53 74 61 72 74 69 6e  |sourceFS Startin|
00030880  67 0a 36 34 20 54 65 72  72 69 74 6f 72 79 20 4d  |g.64 Territory M|
00030890  61 6e 61 67 65 72 20 4c  6f 61 64 65 64 0a 36 35  |anager Loaded.65|
000308a0  20 50 44 72 69 76 65 72  20 73 74 61 72 74 69 6e  | PDriver startin|
000308b0  67 0a 36 36 20 50 44 75  6d 70 65 72 20 73 74 61  |g.66 PDumper sta|
000308c0  72 74 69 6e 67 0a 36 37  20 50 44 75 6d 70 65 72  |rting.67 PDumper|
000308d0  20 64 79 69 6e 67 0a 36  38 20 43 6c 6f 73 65 46  | dying.68 CloseF|
000308e0  69 6c 65 0a 36 39 20 49  64 65 6e 74 69 66 79 20  |ile.69 Identify |
000308f0  64 69 73 63 0a 36 41 20  46 69 6c 65 72 20 65 6e  |disc.6A Filer en|
00030900  75 6d 65 72 61 74 65 20  66 6f 72 6d 61 74 73 0a  |umerate formats.|
00030910  36 42 20 41 44 46 53 20  69 64 65 6e 74 69 66 79  |6B ADFS identify|
00030920  20 66 6f 72 6d 61 74 0a  36 43 20 41 44 46 53 20  | format.6C ADFS |
00030930  64 69 73 70 6c 61 79 20  66 6f 72 6d 61 74 20 68  |display format h|
00030940  65 6c 70 0a 36 44 20 56  61 6c 69 64 61 74 65 20  |elp.6D Validate |
00030950  41 64 64 72 65 73 73 0a  36 45 20 46 6f 6e 74 73  |Address.6E Fonts|
00030960  20 63 68 61 6e 67 65 64  0a 36 46 20 42 75 66 66  | changed.6F Buff|
00030970  65 72 20 73 74 61 72 74  69 6e 67 0a 37 30 20 44  |er starting.70 D|
00030980  65 76 69 63 65 46 53 20  73 74 61 72 74 69 6e 67  |eviceFS starting|
00030990  0a 37 31 20 44 65 76 69  63 65 46 53 20 64 79 69  |.71 DeviceFS dyi|
000309a0  6e 67 0a 37 32 20 53 77  69 74 63 68 69 6e 67 20  |ng.72 Switching |
000309b0  6f 75 74 70 75 74 20 74  6f 20 73 70 72 69 74 65  |output to sprite|
000309c0  0a 37 33 20 4d 6f 64 75  6c 65 20 50 6f 73 74 49  |.73 Module PostI|
000309d0  6e 69 74 0a 37 35 20 54  65 72 72 69 74 6f 72 79  |nit.75 Territory|
000309e0  20 73 74 61 72 74 65 64  0a 37 36 20 4d 6f 6e 69  | started.76 Moni|
000309f0  74 6f 72 20 6c 65 61 64  20 74 72 61 6e 73 6c 61  |tor lead transla|
00030a00  74 69 6f 6e 0a 37 38 20  50 44 72 69 76 65 72 20  |tion.78 PDriver |
00030a10  47 65 74 4d 65 73 73 61  67 65 73 0a 37 39 20 44  |GetMessages.79 D|
00030a20  65 76 69 63 65 46 53 20  64 65 76 69 63 65 20 64  |eviceFS device d|
00030a30  65 61 64 0a 37 41 20 53  63 72 65 65 6e 20 62 6c  |ead.7A Screen bl|
00030a40  61 6e 6b 65 64 0a 37 42  20 53 63 72 65 65 6e 20  |anked.7B Screen |
00030a50  72 65 73 74 6f 72 65 64  0a 37 43 20 44 65 73 6b  |restored.7C Desk|
00030a60  74 6f 70 20 57 65 6c 63  6f 6d 65 0a 37 44 20 44  |top Welcome.7D D|
00030a70  69 73 63 20 64 69 73 6d  6f 75 6e 74 65 64 0a 37  |isc dismounted.7|
00030a80  45 20 53 68 75 74 64 6f  77 6e 0a 37 46 20 50 44  |E Shutdown.7F PD|
00030a90  72 69 76 65 72 20 63 68  61 6e 67 65 64 0a 38 30  |river changed.80|
00030aa0  20 53 68 75 74 64 6f 77  6e 20 43 6f 6d 70 6c 65  | Shutdown Comple|
00030ab0  74 65 0a 38 31 20 44 65  76 69 63 65 46 53 20 63  |te.81 DeviceFS c|
00030ac0  6c 6f 73 65 20 72 65 71  75 65 73 74 0a 38 32 20  |lose request.82 |
00030ad0  43 6f 6c 6f 75 72 54 72  61 6e 73 20 69 6e 76 61  |ColourTrans inva|
00030ae0  6c 69 64 61 74 65 20 63  61 63 68 65 0a 38 33 20  |lidate cache.83 |
00030af0  45 63 6f 6e 65 74 20 70  72 6f 74 6f 63 6f 6c 20  |Econet protocol |
00030b00  64 79 69 6e 67 0a 38 34  20 45 63 6f 6e 65 74 20  |dying.84 Econet |
00030b10  66 69 6e 64 20 6e 65 74  77 6f 72 6b 20 64 72 69  |find network dri|
00030b20  76 65 72 0a 38 35 20 57  69 6d 70 20 53 70 72 69  |ver.85 Wimp Spri|
00030b30  74 65 73 4d 6f 76 65 64  0a 38 36 20 57 69 6d 70  |tesMoved.86 Wimp|
00030b40  20 52 65 67 69 73 74 65  72 46 69 6c 74 65 72 73  | RegisterFilters|
00030b50  0a 38 37 20 46 69 6c 74  65 72 4d 61 6e 61 67 65  |.87 FilterManage|
00030b60  72 20 69 6e 73 74 61 6c  6c 65 64 0a 38 38 20 46  |r installed.88 F|
00030b70  69 6c 74 65 72 4d 61 6e  61 67 65 72 20 64 79 69  |ilterManager dyi|
00030b80  6e 67 0a 38 39 20 4d 6f  64 65 20 63 68 61 6e 67  |ng.89 Mode chang|
00030b90  69 6e 67 0a 38 42 20 4e  65 74 77 6f 72 6b 20 64  |ing.8B Network d|
00030ba0  72 69 76 65 72 20 73 74  61 74 75 73 0a 38 43 20  |river status.8C |
00030bb0  53 79 6e 74 61 78 20 65  72 72 6f 72 0a 38 44 20  |Syntax error.8D |
00030bc0  45 6e 75 6d 65 72 61 74  65 20 73 63 72 65 65 6e  |Enumerate screen|
00030bd0  20 6d 6f 64 65 73 0a 38  45 20 50 61 67 65 73 20  | modes.8E Pages |
00030be0  75 6e 73 61 66 65 0a 39  30 20 43 72 65 61 74 65  |unsafe.90 Create|
00030bf0  64 20 64 79 6e 61 6d 69  63 20 61 72 65 61 0a 39  |d dynamic area.9|
00030c00  31 20 52 65 6d 6f 76 65  20 64 79 6e 61 6d 69 63  |1 Remove dynamic|
00030c10  20 61 72 65 61 0a 39 32  20 52 65 6e 75 6d 62 65  | area.92 Renumbe|
00030c20  72 20 64 79 6e 61 6d 69  63 20 61 72 65 61 0a 39  |r dynamic area.9|
00030c30  33 20 43 6f 6c 6f 75 72  20 70 69 63 6b 65 72 20  |3 Colour picker |
00030c40  6c 6f 61 64 65 64 0a 31  30 38 30 30 20 41 44 46  |loaded.10800 ADF|
00030c50  53 50 6f 64 75 6c 65 0a  31 30 38 30 31 20 41 44  |SPodule.10801 AD|
00030c60  46 53 50 6f 64 75 6c 65  20 49 44 45 0a 31 30 38  |FSPodule IDE.108|
00030c70  30 32 20 41 44 46 53 50  6f 64 75 6c 65 20 49 44  |02 ADFSPodule ID|
00030c80  45 20 64 79 69 6e 67 0a  34 30 30 43 30 20 57 69  |E dying.400C0 Wi|
00030c90  6d 70 20 45 72 72 6f 72  53 74 61 72 74 69 6e 67  |mp ErrorStarting|
00030ca0  0a 34 30 30 43 31 20 57  69 6d 70 20 45 72 72 6f  |.400C1 Wimp Erro|
00030cb0  72 42 75 74 74 6f 6e 50  72 65 73 73 65 64 0a 34  |rButtonPressed.4|
00030cc0  30 30 43 32 20 57 69 6d  70 20 45 72 72 6f 72 45  |00C2 Wimp ErrorE|
00030cd0  6e 64 69 6e 67 0a 34 35  35 34 30 20 44 72 61 77  |nding.45540 Draw|
00030ce0  46 69 6c 65 20 4f 62 6a  65 63 74 52 65 6e 64 65  |File ObjectRende|
00030cf0  72 0a 34 35 35 34 31 20  44 72 61 77 46 69 6c 65  |r.45541 DrawFile|
00030d00  20 44 65 63 6c 61 72 65  46 6f 6e 74 73 0a 23 45  | DeclareFonts.#E|
00030d10  6e 64 54 61 62 6c 65 0a  44 41 54 41 89 00 00 00  |ndTable.DATA....|
00030d20  4f 53 5f 4d 6f 64 75 6c  65 20 36 0a 23 50 61 72  |OS_Module 6.#Par|
00030d30  65 6e 74 20 4f 53 5f 4d  6f 64 75 6c 65 0a 3d 3e  |ent OS_Module.=>|
00030d40  09 52 30 20 3d 20 36 0a  09 52 33 20 3d 20 73 69  |.R0 = 6..R3 = si|
00030d50  7a 65 20 6f 66 20 61 72  65 61 0a 0a 5c 3c 3d 09  |ze of area..\<=.|
00030d60  52 32 20 3d 20 62 6c 6f  63 6b 0a 0a 54 68 69 73  |R2 = block..This|
00030d70  20 53 57 49 20 72 65 74  75 72 6e 73 20 61 6e 20  | SWI returns an |
00030d80  61 72 65 61 20 6f 66 20  66 72 65 65 20 52 4d 41  |area of free RMA|
00030d90  20 63 6c 61 69 6d 65 64  20 66 6f 72 20 75 73 65  | claimed for use|
00030da0  2e 00 00 00 44 41 54 41  6d 00 00 00 4f 53 5f 4d  |....DATAm...OS_M|
00030db0  6f 64 75 6c 65 20 37 0a  23 50 61 72 65 6e 74 20  |odule 7.#Parent |
00030dc0  4f 53 5f 4d 6f 64 75 6c  65 0a 3d 3e 09 52 30 20  |OS_Module.=>.R0 |
00030dd0  3d 20 37 0a 09 52 32 20  3d 20 62 6c 6f 63 6b 0a  |= 7..R2 = block.|
00030de0  0a 54 68 69 73 20 53 57  49 20 66 72 65 65 73 20  |.This SWI frees |
00030df0  61 a0 70 72 65 76 69 6f  75 73 6c 79 20 63 6c 61  |a.previously cla|
00030e00  69 6d 65 64 20 61 72 65  61 20 6f 66 20 52 4d 41  |imed area of RMA|
00030e10  2e 00 00 00 44 41 54 41  e1 00 00 00 4f 53 5f 4d  |....DATA....OS_M|
00030e20  6f 64 75 6c 65 20 31 33  0a 23 50 61 72 65 6e 74  |odule 13.#Parent|
00030e30  20 4f 53 5f 4d 6f 64 75  6c 65 0a 3d 3e 09 52 30  | OS_Module.=>.R0|
00030e40  20 3d 20 31 33 0a 09 52  32 20 3d 20 62 6c 6f 63  | = 13..R2 = bloc|
00030e50  6b 0a 09 52 33 20 3d 20  73 69 7a 65 20 69 6e 63  |k..R3 = size inc|
00030e60  72 65 61 73 65 0a 09 0a  5c 3c 3d 09 52 32 20 3d  |rease...\<=.R2 =|
00030e70  20 6e 65 77 20 62 6c 6f  63 6b 20 70 6f 69 6e 74  | new block point|
00030e80  65 72 0a 0a 54 68 69 73  20 53 57 49 20 65 78 74  |er..This SWI ext|
00030e90  65 6e 64 73 20 6f 72 20  72 65 64 75 63 65 73 20  |ends or reduces |
00030ea0  61 20 63 75 72 72 65 6e  74 6c 79 20 63 6c 61 69  |a currently clai|
00030eb0  6d 65 64 20 62 6c 6f 63  6b 20 6f 66 20 52 4d 41  |med block of RMA|
00030ec0  2e 20 49 66 20 72 65 71  75 69 72 65 64 20 69 74  |. If required it|
00030ed0  20 61 6c 73 6f 20 6d 6f  76 65 73 20 74 68 65 20  | also moves the |
00030ee0  63 6f 6e 74 65 6e 74 73  20 6f 66 20 74 68 65 20  |contents of the |
00030ef0  61 72 65 61 2e 00 00 00  44 41 54 41 86 00 00 00  |area....DATA....|
00030f00  4f 53 5f 4d 6f 64 75 6c  65 20 34 0a 23 50 61 72  |OS_Module 4.#Par|
00030f10  65 6e 74 20 4f 53 5f 4d  6f 64 75 6c 65 0a 3d 3e  |ent OS_Module.=>|
00030f20  09 52 30 20 3d 20 34 0a  09 52 31 20 3d 20 6d 6f  |.R0 = 4..R1 = mo|
00030f30  64 75 6c 65 20 6e 61 6d  65 0a 0a 54 68 69 73 20  |dule name..This |
00030f40  53 57 49 20 6b 69 6c 6c  73 20 61 20 6d 6f 64 75  |SWI kills a modu|
00030f50  6c 65 2e 20 54 68 69 73  20 69 73 20 65 71 75 69  |le. This is equi|
00030f60  76 69 6c 65 6e 74 20 74  6f 20 74 68 65 20 2a 52  |vilent to the *R|
00030f70  4d 4b 69 6c 6c 20 63 6f  6d 6d 61 6e 64 2e 00 00  |MKill command...|
00030f80  44 41 54 41 2b 01 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA+...OS_Modul|
00030f90  65 20 31 32 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |e 12.#Parent OS_|
00030fa0  4d 6f 64 75 6c 65 0a 3d  3e 09 52 30 20 3d 20 31  |Module.=>.R0 = 1|
00030fb0  32 0a 09 52 31 20 3d 20  6d 6f 64 75 6c 65 20 6e  |2..R1 = module n|
00030fc0  75 6d 62 65 72 0a 09 52  32 20 3d 20 69 6e 73 74  |umber..R2 = inst|
00030fd0  61 6e 63 65 20 6e 75 6d  62 65 72 0a 09 0a 3c 3d  |ance number...<=|
00030fe0  09 52 31 20 3d 20 6e 65  78 74 20 6d 6f 64 75 6c  |.R1 = next modul|
00030ff0  65 20 6e 75 6d 62 65 72  0a 09 52 32 20 3d 20 6e  |e number..R2 = n|
00031000  65 78 74 20 69 6e 73 74  61 6e 63 65 20 6e 75 6d  |ext instance num|
00031010  62 65 72 0a 09 52 33 20  3d 20 70 6f 69 6e 74 65  |ber..R3 = pointe|
00031020  72 20 74 6f 20 6d 6f 64  75 6c 65 0a 09 52 34 20  |r to module..R4 |
00031030  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 77 6f 72  |= pointer to wor|
00031040  6b 73 70 61 63 65 0a 09  52 35 20 3d 20 70 6f 69  |kspace..R5 = poi|
00031050  6e 74 65 72 20 74 6f 20  70 6f 73 74 66 69 78 20  |nter to postfix |
00031060  73 74 72 69 6e 67 20 3f  3f 3f 0a 0a 54 68 69 73  |string ???..This|
00031070  20 53 57 49 20 72 65 74  75 72 6e 73 20 69 6e 66  | SWI returns inf|
00031080  6f 72 6d 61 74 69 6f 6e  20 61 62 6f 75 74 20 61  |ormation about a|
00031090  20 6d 6f 64 75 6c 65 2c  20 67 69 76 65 6e 20 69  | module, given i|
000310a0  74 27 73 20 6e 75 6d 62  65 72 2e 00 44 41 54 41  |t's number..DATA|
000310b0  81 00 00 00 4f 53 5f 4d  6f 64 75 6c 65 20 31 0a  |....OS_Module 1.|
000310c0  23 50 61 72 65 6e 74 20  4f 53 5f 4d 6f 64 75 6c  |#Parent OS_Modul|
000310d0  65 0a 3d 3e 09 52 30 20  3d 09 31 0a 09 52 31 20  |e.=>.R0 =.1..R1 |
000310e0  3d 09 66 69 6c 65 6e 61  6d 65 0a 0a 54 68 69 73  |=.filename..This|
000310f0  20 53 57 49 20 6c 6f 61  64 73 20 61 20 6d 6f 64  | SWI loads a mod|
00031100  75 6c 65 2e 20 49 74 20  69 73 20 65 71 75 69 76  |ule. It is equiv|
00031110  69 6c 65 6e 74 20 74 6f  20 74 68 65 20 2a 52 4d  |ilent to the *RM|
00031120  4c 6f 61 64 20 63 6f 6d  6d 61 6e 64 2e 00 00 00  |Load command....|
00031130  44 41 54 41 c4 00 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
00031140  65 20 30 0a 23 50 61 72  65 6e 74 20 4f 53 5f 4d  |e 0.#Parent OS_M|
00031150  6f 64 75 6c 65 0a 3d 3e  09 52 30 20 3d 09 30 0a  |odule.=>.R0 =.0.|
00031160  09 52 31 20 3d 09 66 69  6c 65 6e 61 6d 65 0a 0a  |.R1 =.filename..|
00031170  54 68 69 73 20 53 57 49  20 72 75 6e 20 61 20 6d  |This SWI run a m|
00031180  6f 64 75 6c 65 2c 20 63  61 6c 6c 69 6e 67 20 69  |odule, calling i|
00031190  74 73 20 73 74 61 72 74  20 61 64 64 72 65 73 73  |ts start address|
000311a0  2e 20 49 74 20 69 73 20  65 71 75 69 76 69 6c 65  |. It is equivile|
000311b0  6e 74 20 74 6f 20 74 68  65 20 2a 52 4d 52 75 6e  |nt to the *RMRun|
000311c0  20 63 6f 6d 6d 61 6e 64  2e 20 55 73 65 20 3c 4f  | command. Use <O|
000311d0  53 5f 45 78 69 74 3e 20  6f 72 20 3c 4f 53 5f 45  |S_Exit> or <OS_E|
000311e0  78 69 74 41 6e 64 44 69  65 3e 20 74 6f 20 6c 65  |xitAndDie> to le|
000311f0  61 76 65 2e 44 41 54 41  4a 01 00 00 4f 53 5f 4d  |ave.DATAJ...OS_M|
00031200  6f 64 75 6c 65 20 32 0a  3d 3e 09 52 30 20 3d 09  |odule 2.=>.R0 =.|
00031210  32 20 28 72 65 61 73 6f  6e 20 63 6f 64 65 29 0a  |2 (reason code).|
00031220  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00031230  20 6d 6f 64 75 6c 65 20  6e 61 6d 65 0a 09 52 32  | module name..R2|
00031240  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 70 61  | =.pointer to pa|
00031250  72 61 6d 65 74 65 72 73  0a 0a 44 6f 65 73 6e 27  |rameters..Doesn'|
00031260  74 20 72 65 74 75 72 6e  20 75 6e 6c 65 73 73 20  |t return unless |
00031270  65 72 72 6f 72 20 6f 63  63 75 72 73 2e 20 49 66  |error occurs. If|
00031280  20 74 68 65 20 6d 6f 64  75 6c 65 20 68 61 73 20  | the module has |
00031290  67 6f 74 20 61 20 73 74  61 72 74 20 61 64 64 72  |got a start addr|
000312a0  65 73 73 2c 20 69 74 20  72 65 73 65 74 73 20 74  |ess, it resets t|
000312b0  68 65 20 73 75 70 65 72  76 69 73 6f 72 20 73 74  |he supervisor st|
000312c0  61 63 6b 2c 20 73 65 74  73 20 75 73 65 72 20 6d  |ack, sets user m|
000312d0  6f 64 65 20 61 6e 64 20  6d 61 6b 65 73 20 69 74  |ode and makes it|
000312e0  20 74 68 65 20 63 75 72  72 65 6e 74 20 61 70 70  | the current app|
000312f0  6c 69 63 61 74 69 6f 6e  2e 20 41 6e 79 20 73 70  |lication. Any sp|
00031300  65 63 69 66 69 65 64 20  69 6e 73 74 61 6e 74 69  |ecified instanti|
00031310  61 74 69 6f 6e 20 77 69  6c 6c 20 62 65 63 6f 6d  |ation will becom|
00031320  65 20 74 68 65 20 70 72  65 66 65 72 72 65 64 20  |e the preferred |
00031330  69 6e 73 74 61 6e 74 69  61 74 69 6f 6e 2e 00 00  |instantiation...|
00031340  44 41 54 41 14 01 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
00031350  65 20 33 0a 3d 3e 09 52  30 20 3d 09 33 20 28 72  |e 3.=>.R0 =.3 (r|
00031360  65 61 73 6f 6e 20 63 6f  64 65 29 0a 09 52 31 20  |eason code)..R1 |
00031370  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6d 6f 64  |=.pointer to mod|
00031380  75 6c 65 20 6e 61 6d 65  20 70 6c 75 73 20 61 6e  |ule name plus an|
00031390  79 20 70 61 72 61 6d 65  74 65 72 73 20 66 6f 72  |y parameters for|
000313a0  20 69 6e 69 74 69 61 6c  69 73 61 74 69 6f 6e 0a  | initialisation.|
000313b0  0a 3c 3d 09 52 30 2c 52  31 20 70 72 65 73 65 72  |.<=.R0,R1 preser|
000313c0  76 65 64 0a 0a 54 68 69  73 20 63 61 6c 6c 20 3c  |ved..This call <|
000313d0  52 4d 4b 69 6c 6c 73 3d  3e 6f 73 5f 6d 6f 64 75  |RMKills=>os_modu|
000313e0  6c 65 34 3e 20 61 6e 64  20 3c 52 4d 4c 6f 61 64  |le4> and <RMLoad|
000313f0  73 3d 3e 6f 73 5f 6d 6f  64 75 6c 65 31 3e 20 74  |s=>os_module1> t|
00031400  68 65 20 6e 61 6d 65 64  20 6d 6f 64 75 6c 65 20  |he named module |
00031410  61 67 61 69 6e 2c 20 69  66 20 74 68 65 20 6d 6f  |again, if the mo|
00031420  64 75 6c 65 20 72 65 66  75 73 65 73 20 74 6f 20  |dule refuses to |
00031430  69 6e 69 74 69 61 6c 69  73 65 2c 20 69 74 20 69  |initialise, it i|
00031440  73 20 72 65 6d 6f 76 65  64 20 66 72 6f 6d 20 52  |s removed from R|
00031450  4d 41 2e 0a 44 41 54 41  bd 00 00 00 4f 53 5f 4d  |MA..DATA....OS_M|
00031460  6f 64 75 6c 65 20 35 0a  3d 3e 09 52 30 20 3d 09  |odule 5.=>.R0 =.|
00031470  35 20 28 72 65 61 73 6f  6e 20 63 6f 64 65 29 0a  |5 (reason code).|
00031480  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
00031490  0a 09 52 32 20 3d 09 73  69 7a 65 20 6f 66 20 6c  |..R2 =.size of l|
000314a0  61 72 67 65 73 74 20 62  6c 6f 63 6b 20 61 76 61  |argest block ava|
000314b0  69 6c 61 62 6c 65 20 69  6e 20 62 79 74 65 73 0a  |ilable in bytes.|
000314c0  09 52 33 20 3d 09 74 6f  74 61 6c 20 61 6d 6f 75  |.R3 =.total amou|
000314d0  6e 74 20 66 72 65 65 20  69 6e 20 52 4d 41 20 69  |nt free in RMA i|
000314e0  6e 20 62 79 74 65 73 0a  0a 54 68 69 73 20 72 65  |n bytes..This re|
000314f0  61 73 6f 6e 20 63 6f 64  65 20 72 65 61 64 73 20  |ason code reads |
00031500  69 6e 66 6f 73 20 6f 6e  20 74 68 65 20 52 4d 41  |infos on the RMA|
00031510  2e 00 00 00 44 41 54 41  22 02 00 00 4f 53 5f 4d  |....DATA"...OS_M|
00031520  6f 64 75 6c 65 20 38 0a  3d 3e 09 52 30 20 3d 09  |odule 8.=>.R0 =.|
00031530  38 20 28 72 65 61 73 6f  6e 20 63 6f 64 65 29 0a  |8 (reason code).|
00031540  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
00031550  0a 0a 54 68 69 73 20 67  69 76 65 73 20 65 61 63  |..This gives eac|
00031560  68 20 69 6e 73 74 61 6e  74 69 61 74 69 6f 6e 20  |h instantiation |
00031570  6f 66 20 61 6c 6c 20 6d  6f 64 75 6c 65 73 20 69  |of all modules i|
00031580  6e 20 74 75 72 6e 2c 20  66 72 6f 6d 20 74 68 65  |n turn, from the|
00031590  20 65 6e 64 20 6f 66 20  74 68 65 20 6d 6f 64 75  | end of the modu|
000315a0  6c 65 20 6c 69 73 74 20  61 6e 64 20 77 6f 72 6b  |le list and work|
000315b0  69 6e 67 20 62 61 63 6b  77 61 72 64 73 2c 20 61  |ing backwards, a|
000315c0  20 6e 6f 6e 2d 66 61 74  61 6c 20 66 69 6e 61 6c  | non-fatal final|
000315d0  69 73 61 74 69 6f 6e 20  63 61 6c 6c 2e 0a 0a 49  |isation call...I|
000315e0  6e 73 74 61 6e 74 69 61  74 69 6f 6e 73 20 6f 66  |nstantiations of|
000315f0  20 61 20 70 61 72 74 69  63 75 6c 61 72 20 6d 6f  | a particular mo|
00031600  64 75 6c 65 20 61 72 65  20 6b 69 6c 6c 65 64 20  |dule are killed |
00031610  69 6e 20 74 68 65 20 6f  72 64 65 72 20 74 68 65  |in the order the|
00031620  79 20 61 70 70 65 61 72  20 6f 6e 20 74 68 65 20  |y appear on the |
00031630  63 75 72 72 65 6e 74 20  69 6e 73 74 61 6e 74 69  |current instanti|
00031640  61 74 69 6f 6e 20 6c 69  73 74 2e 0a 0a 49 66 20  |ation list...If |
00031650  69 74 20 73 75 63 63 65  65 64 73 2c 20 69 74 20  |it succeeds, it |
00031660  63 6f 6c 6c 65 63 74 73  20 74 68 65 20 52 4d 41  |collects the RMA|
00031670  20 74 6f 67 65 74 68 65  72 20 69 6e 74 6f 20 6f  | together into o|
00031680  6e 65 20 6c 61 72 67 65  20 75 6e 66 72 61 67 6d  |ne large unfragm|
00031690  65 6e 74 65 64 20 62 6c  6f 63 6b 20 61 6e 64 20  |ented block and |
000316a0  72 65 69 6e 69 74 69 61  6c 69 73 65 73 20 74 68  |reinitialises th|
000316b0  65 20 6d 6f 64 75 6c 65  73 20 61 67 61 69 6e 2e  |e modules again.|
000316c0  20 41 6e 79 20 70 72 69  76 61 74 65 20 77 6f 72  | Any private wor|
000316d0  64 73 20 63 6f 6e 74 61  69 6e 69 6e 67 20 70 6f  |ds containing po|
000316e0  69 6e 74 65 72 20 74 6f  20 77 6f 72 6b 73 70 61  |inter to workspa|
000316f0  63 65 20 62 6c 6f 63 6b  73 20 69 6e 20 52 4d 41  |ce blocks in RMA|
00031700  20 61 72 65 20 72 65 6c  6f 63 61 74 65 64 2e 0a  | are relocated..|
00031710  0a 7b 2a 7d 4e 6f 74 65  3a 7b 2a 7d 20 54 68 69  |.{*}Note:{*} Thi|
00031720  73 20 69 73 20 4e 4f 54  20 72 65 63 6f 6d 6d 65  |s is NOT recomme|
00031730  6e 64 65 64 2e 0a 00 00  44 41 54 41 c5 01 00 00  |nded....DATA....|
00031740  4f 53 5f 4d 6f 64 75 6c  65 20 31 30 0a 3d 3e 09  |OS_Module 10.=>.|
00031750  52 30 20 3d 09 31 30 20  28 72 65 61 73 6f 6e 20  |R0 =.10 (reason |
00031760  63 6f 64 65 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |code)..R1 =.poin|
00031770  74 65 72 20 74 6f 20 73  74 61 72 74 20 6f 66 20  |ter to start of |
00031780  6d 6f 64 75 6c 65 0a 0a  3c 3d 09 52 30 2c 52 31  |module..<=.R0,R1|
00031790  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
000317a0  20 74 61 6b 65 73 20 61  20 70 6f 69 6e 74 65 72  | takes a pointer|
000317b0  20 74 6f 20 61 20 62 6c  6f 63 6b 20 6f 66 20 6d  | to a block of m|
000317c0  65 6d 6f 72 79 20 61 6e  64 20 6c 69 6e 6b 73 20  |emory and links |
000317d0  69 74 20 69 6e 74 6f 20  74 68 65 20 6d 6f 64 75  |it into the modu|
000317e0  6c 65 2c 20 77 69 74 68  6f 75 74 20 6d 6f 76 69  |le, without movi|
000317f0  6e 67 20 69 74 2e 20 48  65 61 64 65 72 20 66 69  |ng it. Header fi|
00031800  65 6c 64 73 20 61 72 65  20 63 68 65 63 6b 65 64  |elds are checked|
00031810  20 66 6f 72 20 76 61 6c  69 64 69 74 79 2e 20 41  | for validity. A|
00031820  6c 6c 20 64 75 70 6c 69  63 61 74 65 20 6d 6f 64  |ll duplicate mod|
00031830  75 6c 65 73 20 61 72 65  20 6b 69 6c 6c 65 64 2e  |ules are killed.|
00031840  20 49 66 20 69 74 27 73  20 73 75 63 63 65 73 73  | If it's success|
00031850  66 75 6c 2c 20 74 68 65  6e 20 74 68 65 20 6d 6f  |ful, then the mo|
00031860  64 75 6c 65 20 69 73 20  63 61 6c 6c 65 64 20 61  |dule is called a|
00031870  74 20 69 74 73 20 69 6e  69 74 69 61 6c 69 61 74  |t its initialiat|
00031880  69 6f 6e 20 65 6e 74 72  79 2e 20 54 68 65 20 77  |ion entry. The w|
00031890  6f 72 64 20 69 6d 6d 65  64 69 61 74 65 6c 79 20  |ord immediately |
000318a0  62 65 66 6f 72 65 20 74  68 65 20 6d 6f 64 75 6c  |before the modul|
000318b0  65 20 73 74 61 72 74 20  28 69 65 20 61 74 20 61  |e start (ie at a|
000318c0  64 64 72 65 73 73 20 52  31 2d 34 29 20 6d 75 73  |ddress R1-4) mus|
000318d0  74 20 63 6f 6e 74 61 69  6e 20 74 68 65 20 6c 65  |t contain the le|
000318e0  6e 67 74 68 20 6f 66 20  74 68 65 20 6d 6f 64 75  |ngth of the modu|
000318f0  6c 65 20 69 6e 20 62 79  74 65 73 2e 0a 00 00 00  |le in bytes.....|
00031900  44 41 54 41 4d 01 00 00  4f 53 5f 4d 6f 64 75 6c  |DATAM...OS_Modul|
00031910  65 20 31 31 0a 3d 3e 09  52 30 20 3d 09 31 31 20  |e 11.=>.R0 =.11 |
00031920  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
00031930  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 73  |1 =.pointer to s|
00031940  74 61 72 74 20 6f 66 20  6d 6f 64 75 6c 65 0a 09  |tart of module..|
00031950  52 32 20 3d 09 6c 65 6e  67 74 68 20 6f 66 20 6d  |R2 =.length of m|
00031960  6f 64 75 6c 65 20 69 6e  20 62 79 74 65 73 0a 0a  |odule in bytes..|
00031970  3c 3d 09 52 30 2c 52 32  20 70 72 65 73 65 72 76  |<=.R0,R2 preserv|
00031980  65 64 0a 0a 54 68 69 73  20 74 61 6b 65 73 20 61  |ed..This takes a|
00031990  20 70 6f 69 6e 74 65 72  20 74 6f 20 61 20 62 6c  | pointer to a bl|
000319a0  6f 63 6b 20 6f 66 20 6d  65 6d 6f 72 79 2c 20 61  |ock of memory, a|
000319b0  6e 64 20 63 68 65 63 6b  73 20 69 74 73 20 68 65  |nd checks its he|
000319c0  61 64 65 72 20 66 69 65  6c 64 20 66 6f 72 20 76  |ader field for v|
000319d0  61 6c 69 64 69 74 79 2e  20 49 74 20 74 68 65 6e  |alidity. It then|
000319e0  20 6b 69 6c 6c 73 20 61  6e 79 20 64 75 70 6c 69  | kills any dupli|
000319f0  63 61 74 65 20 6d 6f 64  75 6c 65 2c 20 63 6f 70  |cate module, cop|
00031a00  69 65 73 20 74 68 65 20  62 6c 6f 63 6b 20 69 6e  |ies the block in|
00031a10  74 6f 20 74 68 65 20 52  4d 41 2c 20 69 6e 69 74  |to the RMA, init|
00031a20  69 61 6c 69 73 65 73 20  69 74 20 61 6e 64 20 6c  |ialises it and l|
00031a30  69 6e 6b 73 20 69 74 20  74 6f 20 74 68 65 20 6d  |inks it to the m|
00031a40  6f 64 75 6c 65 73 20 63  68 61 69 6e 2e 00 00 00  |odules chain....|
00031a50  44 41 54 41 fe 00 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
00031a60  65 20 31 34 0a 3d 3e 09  52 30 20 3d 09 31 34 20  |e 14.=>.R0 =.14 |
00031a70  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
00031a80  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 61  |1 =.pointer to a|
00031a90  20 66 75 6c 6c 20 6e 61  6d 65 20 6f 66 20 6e 65  | full name of ne|
00031aa0  77 20 69 6e 73 74 61 6e  74 69 61 74 69 6f 6e 20  |w instantiation |
00031ab0  61 6e 64 20 61 6e 79 20  70 61 72 61 6d 65 74 65  |and any paramete|
00031ac0  72 73 20 66 6f 72 20 69  6e 69 74 69 61 6c 69 73  |rs for initialis|
00031ad0  61 74 69 6f 6e 0a 0a 3c  3d 09 52 30 2c 52 31 20  |ation..<=.R0,R1 |
00031ae0  70 72 65 73 65 72 76 65  64 0a 0a 54 68 69 73 20  |preserved..This |
00031af0  63 72 65 61 74 65 73 20  6e 65 77 20 69 6e 73 74  |creates new inst|
00031b00  61 6e 74 69 61 74 69 6f  6e 73 20 6f 66 20 65 78  |antiations of ex|
00031b10  69 73 74 69 6e 67 20 6d  6f 64 75 6c 65 73 2c 20  |isting modules, |
00031b20  75 73 69 6e 67 20 74 68  65 20 73 79 6e 74 61 78  |using the syntax|
00031b30  20 27 6d 6f 64 75 6c 65  5f 74 69 74 6c 65 25 69  | 'module_title%i|
00031b40  6e 73 74 61 6e 74 69 61  74 69 6f 6e 27 2e 00 00  |nstantiation'...|
00031b50  44 41 54 41 ce 00 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
00031b60  65 20 31 35 0a 3d 3e 09  52 30 20 3d 09 31 35 20  |e 15.=>.R0 =.15 |
00031b70  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
00031b80  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 63  |1 =.pointer to c|
00031b90  75 72 72 65 6e 74 20 6d  6f 64 75 6c 65 25 69 6e  |urrent module%in|
00031ba0  73 74 61 6e 74 69 61 74  69 6f 6e 20 6e 61 6d 65  |stantiation name|
00031bb0  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
00031bc0  6f 20 6e 65 77 20 70 6f  73 74 66 69 78 20 73 74  |o new postfix st|
00031bd0  72 69 6e 67 0a 0a 3c 3d  09 52 30 2d 52 32 20 70  |ring..<=.R0-R2 p|
00031be0  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 72  |reserved..This r|
00031bf0  65 6e 61 6d 65 73 20 61  6e 20 65 78 69 73 74 69  |enames an existi|
00031c00  6e 67 20 69 6e 73 74 61  6e 74 69 61 74 69 6f 6e  |ng instantiation|
00031c10  73 20 6f 66 20 61 20 6d  6f 64 75 6c 65 2e 00 00  |s of a module...|
00031c20  44 41 54 41 c2 00 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
00031c30  65 20 31 36 0a 3d 3e 09  52 30 20 3d 09 31 36 20  |e 16.=>.R0 =.16 |
00031c40  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
00031c50  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 66  |1 =.pointer to f|
00031c60  75 6c 6c 20 6d 6f 64 75  6c 65 25 69 6e 73 74 61  |ull module%insta|
00031c70  6e 74 69 61 74 69 6f 6e  20 6e 61 6d 65 0a 0a 3c  |ntiation name..<|
00031c80  3d 09 52 30 2c 52 31 20  70 72 65 73 65 72 76 65  |=.R0,R1 preserve|
00031c90  64 0a 0a 54 68 69 73 20  65 6e 61 62 6c 65 73 20  |d..This enables |
00031ca0  79 6f 75 20 74 6f 20 73  65 6c 65 63 74 20 74 68  |you to select th|
00031cb0  65 20 70 72 65 66 65 72  72 65 64 20 69 6e 73 74  |e preferred inst|
00031cc0  61 6e 74 69 61 74 69 6f  6e 73 20 6f 66 20 61 20  |antiations of a |
00031cd0  70 61 72 74 69 63 75 6c  61 72 20 6d 6f 64 75 6c  |particular modul|
00031ce0  65 2e 00 00 44 41 54 41  33 01 00 00 4f 53 5f 4d  |e...DATA3...OS_M|
00031cf0  6f 64 75 6c 65 20 31 37  0a 3d 3e 09 52 30 20 3d  |odule 17.=>.R0 =|
00031d00  09 31 37 20 28 72 65 61  73 6f 6e 20 63 6f 64 65  |.17 (reason code|
00031d10  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00031d20  74 6f 20 65 6e 76 69 72  6f 6e 6d 65 6e 74 20 73  |to environment s|
00031d30  74 72 69 6e 67 0a 09 52  32 20 3d 09 63 68 75 6e  |tring..R2 =.chun|
00031d40  6b 20 6e 75 6d 62 65 72  0a 09 52 33 20 3d 09 3c  |k number..R3 =.<|
00031d50  52 4f 4d 20 73 65 63 74  69 6f 6e 3d 3e 4f 53 5f  |ROM section=>OS_|
00031d60  4d 6f 64 75 6c 65 52 4f  4d 73 65 63 74 69 6f 6e  |ModuleROMsection|
00031d70  73 3e 0a 0a 3c 3d 09 52  30 2d 52 33 20 70 72 65  |s>..<=.R0-R3 pre|
00031d80  73 65 72 76 65 64 0a 0a  54 68 69 73 20 61 6c 6c  |served..This all|
00031d90  6f 77 73 20 65 78 70 61  6e 73 69 6f 6e 20 63 61  |ows expansion ca|
00031da0  72 64 20 61 6e 64 20 65  78 74 65 6e 73 69 6f 6e  |rd and extension|
00031db0  20 52 4f 4d 20 6d 6f 64  75 6c 65 73 20 74 6f 20  | ROM modules to |
00031dc0  62 65 20 61 64 64 65 64  20 74 6f 20 74 68 65 20  |be added to the |
00031dd0  6d 6f 64 75 6c 65 20 6c  69 73 74 2e 20 4e 6f 74  |module list. Not|
00031de0  65 20 74 68 61 74 20 65  78 74 65 6e 73 69 6f 6e  |e that extension|
00031df0  20 52 4f 4d 73 20 61 72  65 20 6e 6f 74 20 73 75  | ROMs are not su|
00031e00  70 70 6f 72 74 65 64 20  69 6e 20 52 49 53 43 20  |pported in RISC |
00031e10  4f 53 20 32 2e 30 0a 00  44 41 54 41 df 04 00 00  |OS 2.0..DATA....|
00031e20  4f 53 5f 4d 6f 64 75 6c  65 20 31 39 2f 32 30 0a  |OS_Module 19/20.|
00031e30  3d 3e 09 52 30 20 3d 09  31 39 2f 32 30 20 28 72  |=>.R0 =.19/20 (r|
00031e40  65 61 73 6f 6e 20 63 6f  64 65 29 0a 09 52 31 20  |eason code)..R1 |
00031e50  3d 09 6d 6f 64 75 6c 65  20 6e 75 6d 62 65 72 2c  |=.module number,|
00031e60  20 6f 72 20 30 20 74 6f  20 73 74 61 72 74 0a 09  | or 0 to start..|
00031e70  52 32 20 3d 09 3c 52 4f  4d 20 73 65 63 74 69 6f  |R2 =.<ROM sectio|
00031e80  6e 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 52 4f 4d 53  |n=>OS_ModuleROMS|
00031e90  65 63 74 69 6f 6e 73 3e  0a 0a 3c 3d 09 52 30 20  |ections>..<=.R0 |
00031ea0  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
00031eb0  6d 6f 64 75 6c 65 20 6e  75 6d 62 65 72 20 6f 66  |module number of|
00031ec0  20 66 6f 75 6e 64 20 6d  6f 64 75 6c 65 20 2b 31  | found module +1|
00031ed0  0a 09 52 32 20 3d 09 3c  52 4f 4d 20 73 65 63 74  |..R2 =.<ROM sect|
00031ee0  69 6f 6e 3d 3e 4f 53 5f  4d 6f 64 75 6c 65 52 4f  |ion=>OS_ModuleRO|
00031ef0  4d 73 65 63 74 69 6f 6e  73 3e 20 6f 66 20 66 6f  |Msections> of fo|
00031f00  75 6e 64 20 6d 6f 64 75  6c 65 0a 09 52 33 20 3d  |und module..R3 =|
00031f10  09 70 6f 69 6e 74 65 72  20 74 6f 20 6d 6f 64 75  |.pointer to modu|
00031f20  6c 65 20 6e 61 6d 65 0a  09 52 34 20 3d 09 2d 31  |le name..R4 =.-1|
00031f30  20 20 75 6e 70 6c 75 67  67 65 64 0a 09 20 09 30  |  unplugged.. .0|
00031f40  20 20 69 6e 73 65 72 74  65 64 20 62 75 74 20 6e  |  inserted but n|
00031f50  6f 74 20 69 6e 20 74 68  65 20 6d 6f 64 75 6c 65  |ot in the module|
00031f60  20 63 68 61 69 6e 0a 09  20 09 31 20 20 61 63 74  | chain.. .1  act|
00031f70  69 76 65 0a 09 20 09 32  20 20 72 75 6e 6e 69 6e  |ive.. .2  runnin|
00031f80  67 0a 09 52 35 20 3d 09  63 68 75 6e 6b 20 6e 75  |g..R5 =.chunk nu|
00031f90  6d 62 65 72 20 6f 66 20  65 78 70 61 6e 73 69 6f  |mber of expansio|
00031fa0  6e 20 63 61 72 64 20 6d  6f 64 75 6c 65 0a 09 52  |n card module..R|
00031fb0  36 20 3d 09 3c 42 43 44  20 76 65 72 73 69 6f 6e  |6 =.<BCD version|
00031fc0  73 20 6e 75 6d 62 65 72  3d 3e 2e 42 43 44 3e 20  |s number=>.BCD> |
00031fd0  66 6f 72 20 4f 53 5f 4d  6f 64 75 6c 65 20 32 30  |for OS_Module 20|
00031fe0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 72 65 74 75  |..This call retu|
00031ff0  72 6e 73 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |rns information |
00032000  6f 6e 20 6f 6e 65 20 6d  6f 64 75 6c 65 20 74 68  |on one module th|
00032010  61 74 20 69 73 20 63 75  72 72 65 6e 74 6c 79 20  |at is currently |
00032020  69 6e 20 52 4f 4d 20 61  6c 6f 6e 67 20 77 69 74  |in ROM along wit|
00032030  68 20 69 74 73 20 73 74  61 74 75 73 2e 20 54 68  |h its status. Th|
00032040  65 20 6d 6f 64 75 6c 65  20 66 6f 75 6e 64 20 69  |e module found i|
00032050  73 20 74 68 65 20 67 69  76 65 6e 20 6e 75 6d 62  |s the given numb|
00032060  65 72 20 6f 66 20 6d 6f  64 75 6c 65 73 20 6f 6e  |er of modules on|
00032070  20 66 72 6f 6d 20 73 74  61 72 74 20 6f 66 20 74  | from start of t|
00032080  68 65 20 67 69 76 65 6e  20 52 4f 4d 20 73 65 63  |he given ROM sec|
00032090  74 69 6f 6e 2e 20 49 66  20 74 68 65 72 65 20 61  |tion. If there a|
000320a0  72 65 20 69 6e 73 75 66  66 69 63 69 65 6e 74 20  |re insufficient |
000320b0  6d 6f 64 75 6c 65 73 20  69 6e 20 74 68 65 20 52  |modules in the R|
000320c0  4f 4d 20 73 65 63 74 69  6f 6e 20 74 68 65 6e 20  |OM section then |
000320d0  74 68 65 20 73 65 61 72  63 68 20 63 6f 6e 74 69  |the search conti|
000320e0  6e 75 65 73 20 77 69 74  68 20 74 68 65 20 6e 65  |nues with the ne|
000320f0  78 74 20 73 65 63 74 69  6f 6e 3b 20 73 6f 20 74  |xt section; so t|
00032100  68 65 20 66 69 66 74 68  20 6d 6f 64 75 6c 65 20  |he fifth module |
00032110  69 6e 20 61 20 66 6f 75  72 20 6d 6f 64 75 6c 65  |in a four module|
00032120  20 73 65 63 74 69 6f 6e  20 77 6f 75 6c 64 20 69  | section would i|
00032130  6e 20 66 61 63 74 20 62  65 20 74 68 65 20 66 69  |n fact be the fi|
00032140  72 73 74 20 6d 6f 64 75  6c 65 20 6f 66 20 74 68  |rst module of th|
00032150  65 20 6e 65 78 74 20 73  65 63 74 69 6f 6e 2e 20  |e next section. |
00032160  54 68 65 20 52 4f 4d 20  73 65 63 74 69 6f 6e 73  |The ROM sections|
00032170  20 61 72 65 20 73 63 61  6e 6e 65 64 20 69 6e 20  | are scanned in |
00032180  3c 74 68 69 73 20 6f 72  64 65 72 3d 3e 4f 53 5f  |<this order=>OS_|
00032190  4d 6f 64 75 6c 65 52 4f  4d 73 65 63 74 69 6f 6e  |ModuleROMsection|
000321a0  73 3e 2e 20 54 68 65 20  76 61 6c 75 65 73 20 69  |s>. The values i|
000321b0  6e 20 52 30 2d 52 32 20  61 72 65 20 74 68 65 20  |n R0-R2 are the |
000321c0  63 6f 72 72 65 63 74 20  6f 6e 65 73 20 74 6f 20  |correct ones to |
000321d0  75 73 65 20 74 68 69 73  20 63 61 6c 6c 20 74 6f  |use this call to|
000321e0  20 65 6e 75 6d 65 72 61  74 65 20 74 68 65 20 6e  | enumerate the n|
000321f0  65 78 74 20 6d 6f 64 75  6c 65 3b 20 68 65 6e 63  |ext module; henc|
00032200  65 20 72 65 70 65 61 74  65 64 20 63 61 6c 6c 73  |e repeated calls|
00032210  20 77 69 6c 6c 20 67 69  76 65 20 61 20 66 75 6c  | will give a ful|
00032220  6c 20 65 6e 75 6d 65 72  61 74 69 6f 6e 20 6f 66  |l enumeration of|
00032230  20 61 6c 6c 20 52 4f 4d  20 6d 6f 64 75 6c 65 73  | all ROM modules|
00032240  2e 0a 23 53 75 62 70 61  67 65 20 42 43 44 0a 42  |..#Subpage BCD.B|
00032250  43 44 20 76 65 72 73 69  6f 6e 20 6e 75 6d 62 65  |CD version numbe|
00032260  72 0a 54 68 65 20 74 6f  70 20 31 36 20 62 69 74  |r.The top 16 bit|
00032270  73 20 63 6f 6e 74 61 69  6e 20 74 68 65 20 69 6e  |s contain the in|
00032280  74 65 67 65 72 20 70 61  72 74 20 6f 66 20 74 68  |teger part of th|
00032290  65 20 76 65 72 73 69 6f  6e 20 6e 75 6d 62 65 72  |e version number|
000322a0  2c 20 74 68 65 20 62 6f  74 74 6f 6e 20 31 36 20  |, the botton 16 |
000322b0  62 69 74 73 20 74 68 65  20 66 72 61 63 74 69 6f  |bits the fractio|
000322c0  6e 61 6c 20 70 61 72 74  2e 0a 0a 28 65 67 20 49  |nal part...(eg I|
000322d0  66 20 76 65 72 73 69 6f  6e 20 3d 20 32 2e 31 32  |f version = 2.12|
000322e0  20 74 68 65 6e 20 42 43  44 20 3d 20 26 30 30 30  | then BCD = &000|
000322f0  32 31 32 30 30 29 0a 00  44 41 54 41 74 00 00 00  |21200)..DATAt...|
00032300  52 4f 4d 20 53 65 63 74  69 6f 6e 73 0a 5c 23 09  |ROM Sections.\#.|
00032310  52 4f 4d 20 53 65 63 74  69 6f 6e 0a 23 4c 69 6e  |ROM Section.#Lin|
00032320  65 0a 30 2d 33 09 45 78  70 61 6e 73 69 6f 6e 20  |e.0-3.Expansion |
00032330  63 61 72 64 20 30 2d 33  0a 2d 31 09 53 79 73 74  |card 0-3.-1.Syst|
00032340  65 6d 20 52 4f 4d 0a 2d  32 09 53 79 73 74 65 6d  |em ROM.-2.System|
00032350  20 52 4f 4d 20 31 0a 2d  33 09 53 79 73 74 65 6d  | ROM 1.-3.System|
00032360  20 52 4f 4d 20 32 20 65  74 63 2e 0a 44 41 54 41  | ROM 2 etc..DATA|
00032370  94 00 00 00 4f 53 5f 4d  6f 64 75 6c 65 20 39 0a  |....OS_Module 9.|
00032380  3d 3e 09 52 30 20 3d 09  39 20 28 72 65 61 73 6f  |=>.R0 =.9 (reaso|
00032390  6e 20 63 6f 64 65 29 0a  3c 3d 09 52 30 20 70 72  |n code).<=.R0 pr|
000323a0  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 6b 69  |eserved..This ki|
000323b0  6c 6c 73 20 61 6c 6c 20  6d 6f 64 75 6c 65 73 20  |lls all modules |
000323c0  77 68 69 63 68 20 61 72  65 6e 27 74 20 52 4f 4d  |which aren't ROM|
000323d0  20 6d 6f 64 75 6c 65 73  2e 0a 0a 7b 2a 7d 4e 6f  | modules...{*}No|
000323e0  74 65 3a 7b 2a 7d 20 54  68 69 73 20 69 73 20 6e  |te:{*} This is n|
000323f0  6f 74 20 72 65 63 6f 6d  6d 65 6e 64 65 64 2e 0a  |ot recommended..|
00032400  44 49 52 24 c8 00 00 00  c8 00 00 00 c8 24 03 00  |DIR$.........$..|
00032410  46 fd ff ff d5 5b 14 b0  b4 02 00 00 13 00 00 00  |F....[..........|
00032420  00 00 00 00 21 52 6f 6f  74 00 00 00 7c 27 03 00  |....!Root...|'..|
00032430  46 ff ff ff 62 f2 bc 88  5f 01 00 00 13 00 00 00  |F...b..._.......|
00032440  00 00 00 00 53 74 61 6e  64 61 72 64 44 61 74 65  |....StandardDate|
00032450  41 6e 64 54 69 6d 65 00  dc 28 03 00 46 ff ff ff  |AndTime..(..F...|
00032460  6b e4 bc 88 f7 00 00 00  13 00 00 00 00 00 00 00  |k...............|
00032470  46 69 6c 65 53 69 7a 65  00 00 00 00 d4 29 03 00  |FileSize.....)..|
00032480  46 ff ff ff aa 6a 06 4e  6a 01 00 00 13 00 00 00  |F....j.Nj.......|
00032490  00 00 00 00 46 69 78 65  64 46 69 6c 65 53 69 7a  |....FixedFileSiz|
000324a0  65 00 00 00 40 2b 03 00  46 ff ff ff 7f 93 14 b0  |e...@+..F.......|
000324b0  65 01 00 00 13 00 00 00  00 00 00 00 44 61 74 65  |e...........Date|
000324c0  41 6e 64 54 69 6d 65 00  44 41 54 41 b4 02 00 00  |AndTime.DATA....|
000324d0  4f 53 5f 43 6f 6e 76 65  72 74 3c 6e 61 6d 65 3e  |OS_Convert<name>|
000324e0  3c 6e 75 6d 62 65 72 3e  20 20 28 26 44 30 2d 26  |<number>  (&D0-&|
000324f0  45 38 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |E8).#Parent OS_.|
00032500  3d 3e 09 52 30 20 3d 20  56 61 6c 75 65 20 74 6f  |=>.R0 = Value to|
00032510  20 62 65 20 63 6f 6e 76  65 72 74 65 64 0a 09 52  | be converted..R|
00032520  31 20 3d 20 42 75 66 66  65 72 20 66 6f 72 20 72  |1 = Buffer for r|
00032530  65 73 75 6c 74 69 6e 67  20 73 74 72 69 6e 67 0a  |esulting string.|
00032540  09 52 32 20 3d 20 73 69  7a 65 20 6f 66 20 62 75  |.R2 = size of bu|
00032550  66 66 65 72 0a 0a 5c 3c  3d 09 52 30 20 3d 20 42  |ffer..\<=.R0 = B|
00032560  75 66 66 65 72 20 28 52  31 20 6f 6e 20 65 6e 74  |uffer (R1 on ent|
00032570  72 79 29 0a 09 52 31 20  3d 20 74 65 72 6d 69 6e  |ry)..R1 = termin|
00032580  61 74 69 6e 67 20 5c 5c  30 20 69 6e 20 62 75 66  |ating \\0 in buf|
00032590  66 65 72 0a 09 52 32 20  3d 20 66 72 65 65 20 62  |fer..R2 = free b|
000325a0  79 74 65 73 20 69 6e 20  62 75 66 66 65 72 0a 0a  |ytes in buffer..|
000325b0  54 68 69 73 20 72 61 6e  67 65 20 6f 66 20 53 57  |This range of SW|
000325c0  49 73 20 63 6f 6e 76 65  72 74 20 61 20 6e 75 6d  |Is convert a num|
000325d0  62 65 72 20 69 6e 74 6f  20 73 6f 6d 65 20 6b 69  |ber into some ki|
000325e0  6e 64 20 6f 66 20 73 74  72 69 6e 67 2e 0a 0a 23  |nd of string...#|
000325f0  54 61 62 0a 20 20 5c 3c  6e 61 6d 65 3e 09 09 5c  |Tab.  \<name>..\|
00032600  3c 6e 75 6d 62 65 72 3e  0a 23 4c 69 6e 65 0a 20  |<number>.#Line. |
00032610  20 48 65 78 09 09 09 31  2c 32 2c 34 2c 36 2c 38  | Hex...1,2,4,6,8|
00032620  09 28 6e 69 62 62 6c 65  73 29 0a 20 20 43 61 72  |.(nibbles).  Car|
00032630  64 69 6e 61 6c 09 09 31  2c 32 2c 33 2c 34 09 09  |dinal..1,2,3,4..|
00032640  28 62 79 74 65 73 29 0a  20 20 49 6e 74 65 67 65  |(bytes).  Intege|
00032650  72 09 09 31 2c 32 2c 33  2c 34 09 09 28 2d 2d 22  |r..1,2,3,4..(--"|
00032660  2d 2d 29 0a 20 20 42 69  6e 61 72 79 09 09 31 2c  |--).  Binary..1,|
00032670  32 2c 33 2c 34 09 09 28  2d 2d 22 2d 2d 29 0a 20  |2,3,4..(--"--). |
00032680  20 53 70 61 63 65 64 43  61 72 64 69 6e 61 6c 09  | SpacedCardinal.|
00032690  31 2c 32 2c 33 2c 34 09  09 28 2d 2d 22 2d 2d 29  |1,2,3,4..(--"--)|
000326a0  0a 20 20 53 70 61 63 65  64 49 6e 74 65 67 65 72  |.  SpacedInteger|
000326b0  09 09 31 2c 32 2c 33 2c  34 09 09 28 2d 2d 22 2d  |..1,2,3,4..(--"-|
000326c0  2d 29 0a 0a 49 6e 20 61  64 64 69 74 69 6f 6e 20  |-)..In addition |
000326d0  77 65 20 68 61 76 65 20  3a 0a 20 20 4f 53 5f 43  |we have :.  OS_C|
000326e0  6f 6e 76 65 72 74 46 69  78 65 64 4e 65 74 53 74  |onvertFixedNetSt|
000326f0  61 74 69 6f 6e 0a 20 20  4f 53 5f 43 6f 6e 76 65  |ation.  OS_Conve|
00032700  72 74 4e 65 74 53 74 61  74 69 6f 6e 0a 20 20 3c  |rtNetStation.  <|
00032710  4f 53 5f 43 6f 6e 76 65  72 74 46 69 78 65 64 46  |OS_ConvertFixedF|
00032720  69 6c 65 53 69 7a 65 3e  0a 20 20 3c 4f 53 5f 43  |ileSize>.  <OS_C|
00032730  6f 6e 76 65 72 74 46 69  6c 65 53 69 7a 65 3e 0a  |onvertFileSize>.|
00032740  20 20 3c 4f 53 5f 43 6f  6e 76 65 72 74 44 61 74  |  <OS_ConvertDat|
00032750  65 41 6e 64 54 69 6d 65  3e 0a 20 20 3c 4f 53 5f  |eAndTime>.  <OS_|
00032760  43 6f 6e 76 65 72 74 53  74 61 6e 64 61 72 64 44  |ConvertStandardD|
00032770  61 74 65 41 6e 64 54 69  6d 65 3e 0a 44 41 54 41  |ateAndTime>.DATA|
00032780  5f 01 00 00 4f 53 5f 43  6f 6e 76 65 72 74 53 74  |_...OS_ConvertSt|
00032790  61 6e 64 61 72 64 44 61  74 65 41 6e 64 54 69 6d  |andardDateAndTim|
000327a0  65 20 20 28 26 43 30 29  0a 23 50 61 72 65 6e 74  |e  (&C0).#Parent|
000327b0  20 4f 53 5f 0a 3d 3e 09  52 30 20 3d 20 50 6f 69  | OS_.=>.R0 = Poi|
000327c0  6e 74 65 72 20 74 6f 20  35 2d 62 79 74 65 20 74  |nter to 5-byte t|
000327d0  69 6d 65 20 62 6c 6f 63  6b 0a 09 52 31 20 3d 20  |ime block..R1 = |
000327e0  42 75 66 66 65 72 20 66  6f 72 20 72 65 73 75 6c  |Buffer for resul|
000327f0  74 69 6e 67 20 73 74 72  69 6e 67 0a 09 52 32 20  |ting string..R2 |
00032800  3d 20 73 69 7a 65 20 6f  66 20 62 75 66 66 65 72  |= size of buffer|
00032810  0a 0a 5c 3c 3d 09 52 30  20 3d 20 42 75 66 66 65  |..\<=.R0 = Buffe|
00032820  72 20 28 52 31 20 6f 6e  20 65 6e 74 72 79 29 0a  |r (R1 on entry).|
00032830  09 52 31 20 3d 20 74 65  72 6d 69 6e 61 74 69 6e  |.R1 = terminatin|
00032840  67 20 5c 30 20 69 6e 20  62 75 66 66 65 72 0a 09  |g \0 in buffer..|
00032850  52 32 20 3d 20 66 72 65  65 20 62 79 74 65 73 20  |R2 = free bytes |
00032860  69 6e 20 62 75 66 66 65  72 0a 0a 54 68 69 73 20  |in buffer..This |
00032870  53 57 49 20 63 6f 6e 76  65 72 74 73 20 61 20 66  |SWI converts a f|
00032880  69 76 65 2d 62 79 74 65  20 76 61 6c 75 65 20 72  |ive-byte value r|
00032890  65 70 72 65 73 65 6e 74  69 6e 67 20 63 65 6e 74  |epresenting cent|
000328a0  69 73 65 63 6f 6e 64 73  20 73 69 6e 63 65 20 31  |iseconds since 1|
000328b0  39 30 30 2c 20 69 6e 74  6f 20 61 20 73 74 72 69  |900, into a stri|
000328c0  6e 67 2e 20 49 74 20 75  73 65 73 20 53 59 53 24  |ng. It uses SYS$|
000328d0  44 61 74 65 46 6f 72 6d  61 74 2e 00 44 41 54 41  |DateFormat..DATA|
000328e0  f7 00 00 00 4f 53 5f 43  6f 6e 76 65 72 74 46 69  |....OS_ConvertFi|
000328f0  6c 65 53 69 7a 65 20 20  28 26 45 43 29 0a 23 50  |leSize  (&EC).#P|
00032900  61 72 65 6e 74 20 4f 53  5f 0a 3d 3e 09 52 30 20  |arent OS_.=>.R0 |
00032910  3d 20 46 69 6c 65 20 73  69 7a 65 0a 09 52 31 20  |= File size..R1 |
00032920  3d 20 42 75 66 66 65 72  20 66 6f 72 20 72 65 73  |= Buffer for res|
00032930  75 6c 74 69 6e 67 20 73  74 72 69 6e 67 0a 09 52  |ulting string..R|
00032940  32 20 3d 20 73 69 7a 65  20 6f 66 20 62 75 66 66  |2 = size of buff|
00032950  65 72 0a 0a 5c 3c 3d 09  52 31 20 3d 20 74 65 72  |er..\<=.R1 = ter|
00032960  6d 69 6e 61 74 69 6e 67  20 5c 30 20 69 6e 20 62  |minating \0 in b|
00032970  75 66 66 65 72 0a 0a 54  68 69 73 20 53 57 49 20  |uffer..This SWI |
00032980  63 6f 6e 76 65 72 74 73  20 61 20 76 61 6c 75 65  |converts a value|
00032990  20 74 6f 20 61 6e 20 61  6d 6f 75 6e 74 20 6f 66  | to an amount of|
000329a0  20 73 70 61 63 65 20 69  6e 20 74 68 65 20 66 6f  | space in the fo|
000329b0  72 6d 20 78 20 62 79 74  65 73 2c 20 78 20 4b 62  |rm x bytes, x Kb|
000329c0  79 74 65 73 2c 20 6f 6f  72 20 78 20 4d 62 79 74  |ytes, oor x Mbyt|
000329d0  65 73 2e 00 44 41 54 41  6a 01 00 00 4f 53 5f 43  |es..DATAj...OS_C|
000329e0  6f 6e 76 65 72 74 46 69  78 65 64 46 69 6c 65 53  |onvertFixedFileS|
000329f0  69 7a 65 20 20 28 26 45  42 29 0a 23 50 61 72 65  |ize  (&EB).#Pare|
00032a00  6e 74 20 4f 53 5f 0a 3d  3e 09 52 30 20 3d 20 46  |nt OS_.=>.R0 = F|
00032a10  69 6c 65 20 73 69 7a 65  0a 09 52 31 20 3d 20 42  |ile size..R1 = B|
00032a20  75 66 66 65 72 20 66 6f  72 20 72 65 73 75 6c 74  |uffer for result|
00032a30  69 6e 67 20 73 74 72 69  6e 67 0a 09 52 32 20 3d  |ing string..R2 =|
00032a40  20 73 69 7a 65 20 6f 66  20 62 75 66 66 65 72 0a  | size of buffer.|
00032a50  0a 5c 3c 3d 09 52 31 20  3d 20 74 65 72 6d 69 6e  |.\<=.R1 = termin|
00032a60  61 74 69 6e 67 20 5c 30  20 69 6e 20 62 75 66 66  |ating \0 in buff|
00032a70  65 72 0a 0a 54 68 69 73  20 53 57 49 20 63 6f 6e  |er..This SWI con|
00032a80  76 65 72 74 73 20 61 20  76 61 6c 75 65 20 74 6f  |verts a value to|
00032a90  20 61 20 61 6d 6f 75 6e  74 20 6f 66 20 73 70 61  | a amount of spa|
00032aa0  63 65 20 61 76 61 69 6c  61 62 6c 65 20 69 6e 20  |ce available in |
00032ab0  74 68 65 20 66 6f 72 6d  20 78 20 62 79 74 65 73  |the form x bytes|
00032ac0  2c 20 78 20 4b 62 79 74  65 73 2c 20 6f 72 20 78  |, x Kbytes, or x|
00032ad0  20 4d 62 79 74 65 73 2e  20 54 68 69 73 20 69 73  | Mbytes. This is|
00032ae0  20 74 68 65 20 66 69 78  65 64 20 73 74 72 69 6e  | the fixed strin|
00032af0  67 20 6c 65 6e 67 74 68  20 76 65 72 73 69 6f 6e  |g length version|
00032b00  20 6f 66 20 3c 4f 53 5f  43 6f 6e 76 65 72 74 46  | of <OS_ConvertF|
00032b10  69 6c 65 53 69 7a 65 3e  2c 20 77 69 74 68 20 61  |ileSize>, with a|
00032b20  20 74 68 65 20 73 74 61  72 74 20 70 61 64 64 65  | the start padde|
00032b30  64 20 77 69 74 68 20 73  70 61 63 65 73 2e 00 00  |d with spaces...|
00032b40  44 41 54 41 65 01 00 00  4f 53 5f 43 6f 6e 76 65  |DATAe...OS_Conve|
00032b50  72 74 44 61 74 65 41 6e  64 54 69 6d 65 20 20 28  |rtDateAndTime  (|
00032b60  26 43 31 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&C1).#Parent OS_|
00032b70  0a 3d 3e 09 52 30 20 3d  20 50 6f 69 6e 74 65 72  |.=>.R0 = Pointer|
00032b80  20 74 6f 20 35 2d 62 79  74 65 20 74 69 6d 65 20  | to 5-byte time |
00032b90  62 6c 6f 63 6b 0a 09 52  31 20 3d 20 42 75 66 66  |block..R1 = Buff|
00032ba0  65 72 20 66 6f 72 20 72  65 73 75 6c 74 69 6e 67  |er for resulting|
00032bb0  20 73 74 72 69 6e 67 0a  09 52 32 20 3d 20 73 69  | string..R2 = si|
00032bc0  7a 65 20 6f 66 20 62 75  66 66 65 72 0a 09 52 33  |ze of buffer..R3|
00032bd0  20 3d 20 3c 66 6f 72 6d  61 74 20 73 74 72 69 6e  | = <format strin|
00032be0  67 3d 3e 73 77 69 5f 64  61 74 65 66 6f 72 6d 61  |g=>swi_dateforma|
00032bf0  74 3e 0a 0a 5c 3c 3d 09  52 30 20 3d 20 42 75 66  |t>..\<=.R0 = Buf|
00032c00  66 65 72 20 28 52 31 20  6f 6e 20 65 6e 74 72 79  |fer (R1 on entry|
00032c10  29 0a 09 52 31 20 3d 20  74 65 72 6d 69 6e 61 74  |)..R1 = terminat|
00032c20  69 6e 67 20 5c 30 20 69  6e 20 62 75 66 66 65 72  |ing \0 in buffer|
00032c30  0a 09 52 32 20 3d 20 66  72 65 65 20 62 79 74 65  |..R2 = free byte|
00032c40  73 20 69 6e 20 62 75 66  66 65 72 0a 0a 54 68 69  |s in buffer..Thi|
00032c50  73 20 53 57 49 20 63 6f  6e 76 65 72 74 73 20 61  |s SWI converts a|
00032c60  20 66 69 76 65 2d 62 79  74 65 20 76 61 6c 75 65  | five-byte value|
00032c70  20 72 65 70 72 65 73 65  6e 74 69 6e 67 20 63 65  | representing ce|
00032c80  6e 74 69 73 65 63 6f 6e  64 73 20 73 69 6e 63 65  |ntiseconds since|
00032c90  20 31 39 30 30 2c 20 69  6e 74 6f 20 61 20 73 74  | 1900, into a st|
00032ca0  72 69 6e 67 2e 00 00 00  44 49 52 24 d4 01 00 00  |ring....DIR$....|
00032cb0  d4 01 00 00 7c 2e 03 00  46 fd ff ff de 6f 7e f5  |....|...F....o~.|
00032cc0  27 01 00 00 13 00 00 00  00 00 00 00 31 00 00 00  |'...........1...|
00032cd0  a4 2f 03 00 46 fd ff ff  7d c0 7e f5 c9 01 00 00  |./..F...}.~.....|
00032ce0  13 00 00 00 00 00 00 00  31 30 00 00 70 31 03 00  |........10..p1..|
00032cf0  46 fd ff ff 2d c4 7e f5  b8 01 00 00 13 00 00 00  |F...-.~.........|
00032d00  00 00 00 00 31 31 00 00  28 33 03 00 46 fd ff ff  |....11..(3..F...|
00032d10  ef 72 7e f5 52 01 00 00  13 00 00 00 00 00 00 00  |.r~.R...........|
00032d20  32 00 00 00 7c 34 03 00  46 fd ff ff 9c c7 7e f5  |2...|4..F.....~.|
00032d30  78 03 00 00 13 00 00 00  00 00 00 00 32 35 36 00  |x...........256.|
00032d40  f4 37 03 00 46 fd ff ff  79 cc 7e f5 a9 02 00 00  |.7..F...y.~.....|
00032d50  13 00 00 00 00 00 00 00  32 35 37 00 a0 3a 03 00  |........257..:..|
00032d60  46 fd ff ff 58 a7 7e f5  3a 02 00 00 13 00 00 00  |F...X.~.:.......|
00032d70  00 00 00 00 34 00 00 00  dc 3c 03 00 46 ff ff ff  |....4....<..F...|
00032d80  0b a9 6c f5 40 04 00 00  13 00 00 00 00 00 00 00  |..l.@...........|
00032d90  21 52 6f 6f 74 00 00 00  1c 41 03 00 46 fd ff ff  |!Root....A..F...|
00032da0  60 a0 7e f5 df 01 00 00  13 00 00 00 00 00 00 00  |`.~.............|
00032db0  72 65 61 73 6f 6e 73 00  fc 42 03 00 47 fd ff ff  |reasons..B..G...|
00032dc0  be 2a 2d 0a 98 01 00 00  13 01 00 00 00 00 00 00  |.*-.............|
00032dd0  33 5f 00 00 d0 4f 03 00  46 fd ff ff 5c 83 7e f5  |3_...O..F...\.~.|
00032de0  18 06 00 00 13 00 00 00  00 00 00 00 33 00 00 00  |............3...|
00032df0  e8 55 03 00 46 fd ff ff  a5 0b 7d f5 2b 06 00 00  |.U..F.....}.+...|
00032e00  13 00 00 00 00 00 00 00  31 2b 32 00 14 5c 03 00  |........1+2..\..|
00032e10  46 fd ff ff 77 af 7e f5  af 04 00 00 13 00 00 00  |F...w.~.........|
00032e20  00 00 00 00 36 00 00 00  c4 60 03 00 46 fd ff ff  |....6....`..F...|
00032e30  7d b5 7e f5 ca 02 00 00  13 00 00 00 00 00 00 00  |}.~.............|
00032e40  37 00 00 00 90 63 03 00  46 fd ff ff 3a b9 7e f5  |7....c..F...:.~.|
00032e50  96 01 00 00 13 00 00 00  00 00 00 00 38 00 00 00  |............8...|
00032e60  28 65 03 00 46 fd ff ff  18 bd 7e f5 b6 01 00 00  |(e..F.....~.....|
00032e70  13 00 00 00 00 00 00 00  39 00 00 00 44 41 54 41  |........9...DATA|
00032e80  27 01 00 00 55 70 63 61  6c 6c 20 31 20 2d 20 4d  |'...Upcall 1 - M|
00032e90  65 64 69 61 20 6e 6f 74  20 70 72 65 73 65 6e 74  |edia not present|
00032ea0  0a 3d 3e 09 52 30 20 3d  20 31 0a 09 52 31 20 3d  |.=>.R0 = 1..R1 =|
00032eb0  20 46 53 20 6e 75 6d 62  65 72 0a 09 52 32 20 3d  | FS number..R2 =|
00032ec0  20 70 6f 69 6e 74 65 72  20 74 6f 20 6d 65 64 69  | pointer to medi|
00032ed0  61 20 6e 61 6d 65 0a 09  52 33 20 3d 20 64 65 76  |a name..R3 = dev|
00032ee0  69 63 65 20 6e 75 6d 62  65 72 0a 09 52 34 20 3d  |ice number..R4 =|
00032ef0  20 69 74 65 72 61 74 69  6f 6e 20 63 6f 75 6e 74  | iteration count|
00032f00  0a 09 52 35 20 3d 20 74  69 6d 65 6f 75 74 20 64  |..R5 = timeout d|
00032f10  65 6c 61 79 0a 09 52 36  20 3d 20 70 6f 69 6e 74  |elay..R6 = point|
00032f20  65 72 20 74 6f 20 6d 65  64 69 61 20 74 79 70 65  |er to media type|
00032f30  0a 0a 3c 3d 09 52 30 20  3d 20 63 68 61 6e 67 65  |..<=.R0 = change|
00032f40  64 0a 0a 54 68 69 73 20  55 70 63 61 6c 6c 20 69  |d..This Upcall i|
00032f50  73 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 61 20  |s called when a |
00032f60  6d 65 64 69 61 20 63 68  61 6e 67 65 20 28 65 67  |media change (eg|
00032f70  20 61 6e 6f 74 68 65 72  20 64 69 73 63 29 20 69  | another disc) i|
00032f80  73 20 72 65 71 75 69 72  65 64 2e 0a 0a 23 49 6e  |s required...#In|
00032f90  63 6c 75 64 65 20 4f 53  5f 55 70 43 61 6c 6c 31  |clude OS_UpCall1|
00032fa0  2b 32 0a 00 44 41 54 41  c9 01 00 00 4f 53 5f 55  |+2..DATA....OS_U|
00032fb0  70 43 61 6c 6c 20 31 30  20 2d 20 53 74 72 65 61  |pCall 10 - Strea|
00032fc0  6d 20 43 72 65 61 74 65  64 0a 3d 3e 09 52 30 20  |m Created.=>.R0 |
00032fd0  3d 09 31 30 20 28 53 74  72 65 61 6d 20 63 72 65  |=.10 (Stream cre|
00032fe0  61 74 65 64 29 0a 09 52  31 20 3d 09 64 65 76 69  |ated)..R1 =.devi|
00032ff0  63 65 20 64 72 69 76 65  72 27 73 20 68 61 6e 64  |ce driver's hand|
00033000  6c 65 0a 09 52 32 20 3d  09 30 20 69 66 20 63 72  |le..R2 =.0 if cr|
00033010  65 61 74 65 64 20 66 6f  72 20 72 65 63 65 70 74  |eated for recept|
00033020  69 6f 6e 20 28 65 6c 73  65 20 63 72 65 61 74 65  |ion (else create|
00033030  64 20 66 6f 72 20 74 72  61 6e 73 6d 69 73 73 69  |d for transmissi|
00033040  6f 6e 29 0a 09 52 33 20  3d 09 66 69 6c 65 20 68  |on)..R3 =.file h|
00033050  61 6e 64 6c 65 20 66 6f  72 20 73 74 72 65 61 6d  |andle for stream|
00033060  0a 09 52 34 20 3d 09 44  65 76 69 63 65 46 53 20  |..R4 =.DeviceFS |
00033070  73 74 72 65 61 6d 20 68  61 6e 64 6c 65 2c 20 61  |stream handle, a|
00033080  73 20 70 61 73 73 65 64  20 74 6f 20 64 65 76 69  |s passed to devi|
00033090  63 65 20 64 72 69 76 65  72 20 6f 6e 20 69 6e 69  |ce driver on ini|
000330a0  74 69 61 6c 69 73 61 74  69 6f 6e 0a 20 20 20 0a  |tialisation.   .|
000330b0  3c 3d 09 41 6c 6c 20 72  65 67 69 73 74 65 72 73  |<=.All registers|
000330c0  20 70 72 65 73 65 72 76  65 64 0a 0a 44 65 76 69  | preserved..Devi|
000330d0  63 65 46 53 20 69 73 73  75 65 73 20 74 68 69 73  |ceFS issues this|
000330e0  20 63 61 6c 6c 20 77 68  65 6e 20 61 20 73 74 72  | call when a str|
000330f0  65 61 6d 20 69 73 20 63  72 65 61 74 65 64 2e 20  |eam is created. |
00033100  49 74 20 73 65 72 76 65  73 20 61 73 20 61 20 62  |It serves as a b|
00033110  72 6f 61 64 63 61 73 74  2c 20 61 6e 64 20 61 6c  |roadcast, and al|
00033120  6c 20 72 65 67 69 73 74  65 72 73 20 73 68 6f 75  |l registers shou|
00033130  6c 64 20 62 65 20 70 72  65 73 65 72 76 65 64 2e  |ld be preserved.|
00033140  0a 0a 54 68 69 73 20 63  61 6c 6c 20 69 73 20 6e  |..This call is n|
00033150  65 76 65 72 20 69 73 73  75 65 64 20 75 6e 64 65  |ever issued unde|
00033160  72 20 52 49 53 43 20 4f  53 20 32 2e 0a 00 00 00  |r RISC OS 2.....|
00033170  44 41 54 41 b8 01 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
00033180  6c 20 31 31 20 2d 20 53  74 72 65 61 6d 20 43 6c  |l 11 - Stream Cl|
00033190  6f 73 65 64 0a 3d 3e 09  52 30 20 3d 09 31 30 20  |osed.=>.R0 =.10 |
000331a0  28 53 74 72 65 61 6d 20  63 6c 6f 73 65 64 29 0a  |(Stream closed).|
000331b0  09 52 31 20 3d 09 64 65  76 69 63 65 20 64 72 69  |.R1 =.device dri|
000331c0  76 65 72 27 73 20 68 61  6e 64 6c 65 0a 09 52 32  |ver's handle..R2|
000331d0  20 3d 09 30 20 69 66 20  63 6c 6f 73 65 64 20 66  | =.0 if closed f|
000331e0  6f 72 20 72 65 63 65 70  74 69 6f 6e 20 28 65 6c  |or reception (el|
000331f0  73 65 20 63 6c 6f 73 65  20 66 6f 72 20 74 72 61  |se close for tra|
00033200  6e 73 6d 69 73 73 69 6f  6e 29 0a 09 52 33 20 3d  |nsmission)..R3 =|
00033210  09 66 69 6c 65 20 68 61  6e 64 6c 65 20 66 6f 72  |.file handle for|
00033220  20 73 74 72 65 61 6d 0a  09 52 34 20 3d 09 44 65  | stream..R4 =.De|
00033230  76 69 63 65 46 53 20 73  74 72 65 61 6d 20 68 61  |viceFS stream ha|
00033240  6e 64 6c 65 2c 20 61 73  20 70 61 73 73 65 64 20  |ndle, as passed |
00033250  74 6f 20 64 65 76 69 63  65 20 64 72 69 76 65 72  |to device driver|
00033260  20 6f 6e 20 69 6e 73 74  61 6c 6c 61 74 69 6f 6e  | on installation|
00033270  0a 0a 3c 3d 09 41 6c 6c  20 72 65 67 69 73 74 65  |..<=.All registe|
00033280  72 73 20 70 72 65 73 65  72 76 65 64 0a 0a 44 65  |rs preserved..De|
00033290  76 69 63 65 46 53 20 69  73 73 75 65 64 20 74 68  |viceFS issued th|
000332a0  69 73 20 63 61 6c 6c 20  77 68 65 6e 20 61 20 73  |is call when a s|
000332b0  74 72 65 61 6d 20 69 73  20 63 6c 6f 73 65 64 2e  |tream is closed.|
000332c0  20 49 74 20 73 65 72 76  65 73 20 61 73 20 61 20  | It serves as a |
000332d0  62 72 6f 61 64 63 61 73  74 2c 20 61 6e 64 20 61  |broadcast, and a|
000332e0  6c 6c 20 72 65 67 69 73  74 65 72 73 20 73 68 6f  |ll registers sho|
000332f0  75 6c 64 20 62 65 20 70  72 65 73 65 72 76 65 64  |uld be preserved|
00033300  2e 0a 0a 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |...This call is |
00033310  69 73 73 75 65 64 20 75  6e 64 65 72 20 52 49 53  |issued under RIS|
00033320  43 20 4f 53 20 32 2e 0a  44 41 54 41 52 01 00 00  |C OS 2..DATAR...|
00033330  55 70 63 61 6c 6c 20 32  20 2d 20 4d 65 64 69 61  |Upcall 2 - Media|
00033340  20 6e 6f 74 20 6b 6e 6f  77 6e 0a 3d 3e 09 52 30  | not known.=>.R0|
00033350  20 3d 09 32 0a 09 52 31  20 3d 09 46 53 20 6e 75  | =.2..R1 =.FS nu|
00033360  6d 62 65 72 0a 09 52 32  20 3d 09 70 6f 69 6e 74  |mber..R2 =.point|
00033370  65 72 20 74 6f 20 6d 65  64 69 61 20 6e 61 6d 65  |er to media name|
00033380  0a 09 52 33 20 3d 09 64  65 76 69 63 65 20 6e 75  |..R3 =.device nu|
00033390  6d 62 65 72 0a 09 52 34  20 3d 09 69 74 65 72 61  |mber..R4 =.itera|
000333a0  74 69 6f 6e 20 63 6f 75  6e 74 0a 09 52 35 20 3d  |tion count..R5 =|
000333b0  09 74 69 6d 65 6f 75 74  20 64 65 6c 61 79 0a 09  |.timeout delay..|
000333c0  52 36 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R6 =.pointer to |
000333d0  6d 65 64 69 61 20 74 79  70 65 0a 0a 3c 3d 09 52  |media type..<=.R|
000333e0  30 20 3d 09 30 20 69 66  20 63 68 61 6e 67 65 64  |0 =.0 if changed|
000333f0  2c 20 2d 31 20 69 66 20  6e 6f 20 6c 6f 6e 67 65  |, -1 if no longe|
00033400  72 20 72 65 71 75 69 72  65 64 0a 0a 54 68 69 73  |r required..This|
00033410  20 55 70 63 61 6c 6c 20  69 73 20 63 61 6c 6c 65  | Upcall is calle|
00033420  64 20 77 68 65 6e 20 61  20 6d 65 64 69 61 20 68  |d when a media h|
00033430  61 73 20 6e 65 76 65 72  20 62 65 65 6e 20 73 65  |as never been se|
00033440  65 6e 20 62 65 66 6f 72  65 2c 20 62 75 74 20 68  |en before, but h|
00033450  61 73 20 62 65 65 6e 20  72 65 71 75 65 73 74 65  |as been requeste|
00033460  64 2e 0a 0a 23 49 6e 63  6c 75 64 65 20 4f 53 5f  |d...#Include OS_|
00033470  55 70 43 61 6c 6c 31 2b  32 0a 00 00 44 41 54 41  |UpCall1+2...DATA|
00033480  78 03 00 00 4f 53 5f 55  70 43 61 6c 6c 20 32 35  |x...OS_UpCall 25|
00033490  36 20 2d 20 4e 65 77 20  41 70 70 6c 69 63 61 74  |6 - New Applicat|
000334a0  69 6f 6e 0a 3d 3e 09 52  30 20 3d 09 32 35 36 20  |ion.=>.R0 =.256 |
000334b0  28 4e 65 77 20 41 70 70  6c 69 63 61 74 69 6f 6e  |(New Application|
000334c0  29 0a 09 52 32 20 3d 09  43 75 72 72 65 6e 74 6c  |)..R2 =.Currentl|
000334d0  79 20 41 63 74 69 76 65  20 4f 62 6a 65 63 74 20  |y Active Object |
000334e0  70 6f 69 6e 74 65 72 0a  20 20 20 0a 3c 3d 09 52  |pointer.   .<=.R|
000334f0  30 20 3d 09 30 20 74 6f  20 73 74 6f 70 20 61 70  |0 =.0 to stop ap|
00033500  70 6c 69 63 61 74 69 6f  6e 2c 20 65 6c 73 65 20  |plication, else |
00033510  52 30 20 69 73 20 70 72  65 73 65 72 76 65 64 0a  |R0 is preserved.|
00033520  0a 54 68 69 73 20 75 70  63 61 6c 6c 20 77 61 72  |.This upcall war|
00033530  6e 73 20 79 6f 75 72 20  70 72 6f 67 72 61 6d 20  |ns your program |
00033540  74 68 61 74 20 61 20 6e  65 77 20 61 70 70 6c 69  |that a new appli|
00033550  63 61 74 69 6f 6e 20 69  73 20 67 6f 69 6e 67 20  |cation is going |
00033560  74 6f 20 62 65 20 73 74  61 72 74 65 64 0a 0a 54  |to be started..T|
00033570  68 69 73 20 63 61 6c 6c  20 69 73 20 6d 61 64 65  |his call is made|
00033580  20 6a 75 73 74 20 62 65  66 6f 72 65 20 61 20 6e  | just before a n|
00033590  65 77 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 69  |ew application i|
000335a0  73 20 67 6f 69 6e 67 20  74 6f 20 62 65 20 73 74  |s going to be st|
000335b0  61 72 74 65 64 20 69 6e  20 74 68 65 20 63 75 72  |arted in the cur|
000335c0  72 65 6e 74 20 61 70 70  6c 69 63 61 74 69 6f 6e  |rent application|
000335d0  20 73 70 61 63 65 20 2d  20 66 6f 72 20 65 78 61  | space - for exa|
000335e0  6d 70 6c 65 20 64 75 65  20 74 6f 20 61 20 2a 52  |mple due to a *R|
000335f0  75 6e 20 6f 72 20 6d 6f  64 75 6c 65 20 63 6f 6d  |un or module com|
00033600  6d 61 6e 64 2e 20 49 74  20 63 61 6c 6c 73 20 74  |mand. It calls t|
00033610  68 65 20 55 70 43 61 6c  6c 20 76 65 63 74 6f 72  |he UpCall vector|
00033620  2e 0a 0a 4f 6e 65 20 72  65 61 73 6f 6e 20 74 6f  |...One reason to|
00033630  20 75 73 65 20 74 68 69  73 20 63 61 6c 6c 20 69  | use this call i|
00033640  73 20 73 6f 20 74 68 61  74 20 61 6e 20 61 70 70  |s so that an app|
00033650  6c 69 63 61 74 69 6f 6e  20 63 61 6e 20 74 69 64  |lication can tid|
00033660  79 20 75 70 20 69 74 73  65 6c 66 20 62 65 66 6f  |y up itself befo|
00033670  72 65 20 61 20 6e 65 77  20 6f 6e 65 20 69 73 20  |re a new one is |
00033680  73 74 61 72 74 65 64 2c  20 65 67 20 72 65 6d 6f  |started, eg remo|
00033690  76 69 6e 67 20 72 6f 75  74 69 6e 65 73 20 66 72  |ving routines fr|
000336a0  6f 6d 20 76 65 63 74 6f  72 2e 0a 0a 41 6e 6f 74  |om vector...Anot|
000336b0  68 65 72 20 72 65 61 73  6f 6e 20 74 6f 20 75 73  |her reason to us|
000336c0  65 20 74 68 69 73 20 55  70 43 61 6c 6c 20 69 73  |e this UpCall is|
000336d0  20 74 6f 20 70 72 65 76  65 6e 74 20 61 6e 20 61  | to prevent an a|
000336e0  70 70 6c 69 63 61 74 69  6f 6e 20 66 72 6f 6d 20  |pplication from |
000336f0  73 74 61 72 74 69 6e 67  2e 20 49 66 20 79 6f 75  |starting. If you|
00033700  20 64 6f 6e 27 74 20 77  61 6e 74 20 74 68 65 20  | don't want the |
00033710  61 70 70 6c 69 63 61 74  69 6f 6e 20 74 6f 20 73  |application to s|
00033720  74 61 72 74 2c 20 79 6f  75 72 20 72 6f 75 74 69  |tart, your routi|
00033730  6e 65 20 73 68 6f 75 6c  64 20 73 65 74 20 52 30  |ne should set R0|
00033740  20 74 6f 20 30 2c 20 61  6e 64 20 69 6e 74 65 72  | to 0, and inter|
00033750  63 65 70 74 20 74 68 65  20 63 61 6c 6c 20 74 6f  |cept the call to|
00033760  20 74 68 65 20 76 65 63  74 6f 72 2e 20 54 68 69  | the vector. Thi|
00033770  73 20 77 69 6c 6c 20 63  61 75 73 65 20 74 68 65  |s will cause the|
00033780  20 65 72 72 6f 72 20 27  55 6e 61 62 6c 65 20 74  | error 'Unable t|
00033790  6f 20 73 74 61 72 74 20  61 70 70 6c 69 63 61 74  |o start applicat|
000337a0  69 6f 6e 27 20 74 6f 20  62 65 20 67 69 76 65 6e  |ion' to be given|
000337b0  2e 20 4f 74 68 65 72 77  69 73 65 2c 20 79 6f 75  |. Otherwise, you|
000337c0  20 6d 75 73 74 20 70 61  73 73 20 74 68 65 20 63  | must pass the c|
000337d0  61 6c 6c 20 6f 6e 20 77  69 74 68 20 61 6c 6c 20  |all on with all |
000337e0  72 65 69 67 73 74 65 72  73 20 70 72 65 73 65 72  |reigsters preser|
000337f0  76 65 64 2e 44 41 54 41  a9 02 00 00 4f 53 5f 55  |ved.DATA....OS_U|
00033800  70 43 61 6c 6c 20 32 35  37 20 2d 20 4d 6f 76 69  |pCall 257 - Movi|
00033810  6e 67 20 6d 65 6d 6f 72  79 0a 3d 3e 09 52 30 20  |ng memory.=>.R0 |
00033820  3d 09 32 35 37 20 28 4d  6f 76 69 6e 67 20 6d 65  |=.257 (Moving me|
00033830  6d 6f 72 79 29 0a 09 52  31 20 3d 09 61 6d 6f 75  |mory)..R1 =.amou|
00033840  6e 74 20 74 68 61 74 20  61 70 70 6c 69 63 61 74  |nt that applicat|
00033850  69 6f 6e 20 73 70 61 63  65 20 69 73 20 67 6f 69  |ion space is goi|
00033860  6e 67 20 74 6f 20 63 68  61 6e 67 65 20 62 79 0a  |ng to change by.|
00033870  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 3c  |              .<|
00033880  3d 09 52 30 20 3d 09 30  20 74 6f 20 70 65 72 6d  |=.R0 =.0 to perm|
00033890  69 74 20 6d 65 6d 6f 72  79 20 6d 6f 76 65 64 2c  |it memory moved,|
000338a0  20 65 6c 73 65 20 70 72  65 73 65 72 76 65 64 0a  | else preserved.|
000338b0  09 52 31 20 69 73 20 70  72 65 73 65 72 76 65 64  |.R1 is preserved|
000338c0  0a 0a 54 68 69 73 20 55  70 63 61 6c 6c 20 69 6e  |..This Upcall in|
000338d0  66 6f 72 6d 73 20 79 6f  75 72 20 70 72 6f 67 72  |forms your progr|
000338e0  61 6d 20 74 68 61 74 20  52 49 53 43 20 4f 53 20  |am that RISC OS |
000338f0  77 6f 75 6c 64 20 6c 69  6b 65 20 74 6f 20 6d 6f  |would like to mo|
00033900  76 65 20 6d 65 6d 6f 72  79 0a 0a 54 68 69 73 20  |ve memory..This |
00033910  63 61 6c 6c 20 69 73 20  6d 61 64 65 20 6a 75 73  |call is made jus|
00033920  74 20 62 65 66 6f 72 65  20 3c 4f 53 5f 43 68 61  |t before <OS_Cha|
00033930  6e 67 65 44 79 6e 61 6d  69 63 41 72 65 61 3e 20  |ngeDynamicArea> |
00033940  74 72 69 65 73 20 74 6f  20 6d 6f 76 65 20 6d 65  |tries to move me|
00033950  6d 6f 72 79 2e 20 54 68  65 20 63 61 6c 6c 20 69  |mory. The call i|
00033960  73 20 6f 6e 6c 79 20 6d  61 64 65 20 69 66 20 74  |s only made if t|
00033970  68 65 20 63 75 72 72 65  6e 74 6c 79 20 61 63 74  |he currently act|
00033980  69 76 65 20 6f 62 6a 65  63 74 20 69 73 20 69 6e  |ive object is in|
00033990  20 74 68 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  | the application|
000339a0  20 73 70 61 63 65 2e 20  49 74 20 63 61 6c 6c 73  | space. It calls|
000339b0  20 74 68 65 20 55 70 43  61 6c 6c 20 76 65 63 74  | the UpCall vect|
000339c0  6f 72 2e 20 42 79 20 64  65 66 61 75 6c 74 20 28  |or. By default (|
000339d0  69 66 20 79 6f 75 20 64  6f 6e 27 74 20 63 6c 61  |if you don't cla|
000339e0  69 6d 20 74 68 65 20 76  65 63 74 6f 72 29 20 74  |im the vector) t|
000339f0  68 65 20 6d 65 6d 6f 72  79 20 69 73 6e 27 74 20  |he memory isn't |
00033a00  6d 6f 76 65 64 2e 0a 0a  59 6f 75 72 20 72 6f 75  |moved...Your rou|
00033a10  74 69 6e 65 20 6d 75 73  74 20 73 68 75 66 66 6c  |tine must shuffl|
00033a20  65 20 79 6f 75 72 20 61  70 70 6c 69 63 61 74 69  |e your applicati|
00033a30  6f 6e 27 73 20 77 6f 72  6b 73 70 61 63 65 20 73  |on's workspace s|
00033a40  6f 20 74 68 61 74 20 74  68 65 20 6d 65 6d 6f 72  |o that the memor|
00033a50  79 20 63 61 6e 20 67 6f  20 61 68 65 61 64 2e 20  |y can go ahead. |
00033a60  49 74 20 6d 75 73 74 20  74 68 65 6e 20 73 65 74  |It must then set|
00033a70  20 52 30 20 3d 20 30 2c  20 61 6e 64 20 70 61 73  | R0 = 0, and pas|
00033a80  73 20 6f 6e 20 74 68 65  20 63 61 6c 6c 20 74 6f  |s on the call to|
00033a90  20 74 68 65 20 76 65 63  74 6f 72 2e 0a 00 00 00  | the vector.....|
00033aa0  44 41 54 41 3a 02 00 00  55 70 63 61 6c 6c 20 34  |DATA:...Upcall 4|
00033ab0  20 2d 20 4d 65 64 69 61  20 73 65 61 72 63 68 20  | - Media search |
00033ac0  65 6e 64 0a 3d 3e 09 52  30 20 3d 09 34 20 28 4d  |end.=>.R0 =.4 (M|
00033ad0  65 64 69 61 20 73 65 61  72 63 68 20 65 6e 64 29  |edia search end)|
00033ae0  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
00033af0  0a 0a 54 68 69 73 20 55  70 63 61 6c 6c 20 49 6e  |..This Upcall In|
00033b00  66 6f 72 6d 73 20 79 6f  75 72 20 70 72 6f 67 72  |forms your progr|
00033b10  61 6d 20 74 68 61 74 20  61 20 6d 69 73 73 69 6e  |am that a missin|
00033b20  67 20 66 69 6c 69 6e 67  20 6d 65 64 69 75 6d 20  |g filing medium |
00033b30  68 61 73 20 62 65 65 6e  20 73 75 70 70 6c 69 65  |has been supplie|
00033b40  64 2c 20 6f 72 20 74 68  61 74 20 61 6e 20 6f 70  |d, or that an op|
00033b50  65 72 61 74 69 6f 6e 20  69 6e 76 6f 6c 76 69 6e  |eration involvin|
00033b60  67 20 6f 6e 65 20 68 61  73 20 62 65 65 6e 20 63  |g one has been c|
00033b70  61 6e 63 65 6c 6c 65 64  0a 0a 54 68 69 73 20 63  |ancelled..This c|
00033b80  61 6c 6c 20 69 73 20 6d  61 64 65 20 62 79 20 52  |all is made by R|
00033b90  49 53 43 20 4f 53 20 74  6f 20 69 6e 66 6f 72 6d  |ISC OS to inform|
00033ba0  20 79 6f 75 72 20 70 72  6f 67 72 61 6d 20 74 68  | your program th|
00033bb0  61 74 20 61 20 6d 69 73  73 69 6e 67 20 66 69 6c  |at a missing fil|
00033bc0  69 6e 67 20 6d 65 64 69  75 6d 20 68 61 73 20 62  |ing medium has b|
00033bd0  65 65 6e 20 73 75 70 70  6c 69 65 64 2c 20 6f 72  |een supplied, or|
00033be0  20 74 68 61 74 20 61 6e  20 6f 70 65 72 61 74 69  | that an operati|
00033bf0  6f 6e 20 69 6e 76 6f 6c  76 69 6e 67 20 6f 6e 65  |on involving one|
00033c00  20 68 61 73 20 62 65 65  6e 20 63 61 6e 63 65 6c  | has been cancel|
00033c10  6c 65 64 2e 20 49 74 20  69 73 20 61 6c 77 61 79  |led. It is alway|
00033c20  73 20 70 72 65 63 65 64  65 64 20 62 79 20 63 61  |s preceded by ca|
00033c30  6c 6c 28 73 29 20 6f 66  20 3c 4f 53 5f 55 70 43  |ll(s) of <OS_UpC|
00033c40  61 6c 6c 20 31 3d 3e 4f  53 5f 55 70 43 61 6c 6c  |all 1=>OS_UpCall|
00033c50  31 3e 20 6f 72 20 3c 4f  53 5f 55 70 43 61 6c 6c  |1> or <OS_UpCall|
00033c60  20 32 3d 3e 4f 53 5f 55  70 43 61 6c 6c 32 3e 2e  | 2=>OS_UpCall2>.|
00033c70  20 54 68 69 73 20 63 61  6c 6c 20 69 73 20 74 79  | This call is ty|
00033c80  70 69 63 61 6c 6c 79 20  75 73 65 64 20 74 6f 20  |pically used to |
00033c90  72 65 6d 6f 76 65 20 65  72 72 6f 72 20 6d 65 73  |remove error mes|
00033ca0  73 61 67 65 73 20 64 69  73 70 6c 61 79 65 64 20  |sages displayed |
00033cb0  77 68 65 6e 20 4f 53 5f  55 70 43 61 6c 6c 20 31  |when OS_UpCall 1|
00033cc0  20 6f 72 20 32 20 77 61  73 20 66 69 72 73 74 20  | or 2 was first |
00033cd0  67 65 6e 65 72 61 74 65  64 2e 00 00 44 41 54 41  |generated...DATA|
00033ce0  40 04 00 00 4f 53 5f 55  70 43 61 6c 6c 20 28 26  |@...OS_UpCall (&|
00033cf0  33 33 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |33).#Parent OS_.|
00033d00  3d 3e 09 52 30 20 3d 09  3c 72 65 61 73 6f 6e 20  |=>.R0 =.<reason |
00033d10  63 6f 64 65 3d 3e 4f 53  5f 55 70 43 61 6c 6c 52  |code=>OS_UpCallR|
00033d20  65 61 73 6f 6e 73 3e 0a  09 41 6c 6c 20 6f 74 68  |easons>..All oth|
00033d30  65 72 20 72 65 67 69 73  74 65 72 73 20 64 65 70  |er registers dep|
00033d40  65 6e 64 20 6f 6e 20 72  65 61 73 6f 6e 20 63 6f  |end on reason co|
00033d50  64 65 0a 20 20 20 0a 3c  3d 09 52 30 20 70 72 65  |de.   .<=.R0 pre|
00033d60  73 65 72 76 65 64 0a 09  41 6c 6c 20 6f 74 68 65  |served..All othe|
00033d70  72 20 72 65 67 69 73 74  65 72 73 20 64 65 70 65  |r registers depe|
00033d80  6e 64 20 6f 6e 20 72 65  61 73 6f 6e 20 63 6f 64  |nd on reason cod|
00033d90  65 0a 20 20 20 0a 54 68  69 73 20 53 57 49 20 63  |e.   .This SWI c|
00033da0  61 6c 6c 73 20 74 68 65  20 76 65 63 74 6f 72 20  |alls the vector |
00033db0  55 70 43 61 6c 6c 56 2e  20 54 6f 20 75 73 65 20  |UpCallV. To use |
00033dc0  55 70 43 61 6c 6c 73 2c  20 79 6f 75 20 6d 75 73  |UpCalls, you mus|
00033dd0  74 20 65 69 74 68 65 72  20 63 6c 61 69 6d 20 74  |t either claim t|
00033de0  68 65 20 76 65 63 74 6f  72 20 61 6e 64 20 69 6e  |he vector and in|
00033df0  73 74 61 6c 6c 20 61 20  72 6f 75 74 69 6e 65 20  |stall a routine |
00033e00  6f 6e 20 69 74 2c 20 6f  72 20 69 6e 73 74 61 6c  |on it, or instal|
00033e10  6c 20 61 6e 20 55 70 43  61 6c 6c 20 68 61 6e 64  |l an UpCall hand|
00033e20  6c 65 72 2e 0a 0a 54 68  65 79 20 61 72 65 20 63  |ler...They are c|
00033e30  61 6c 6c 65 64 20 55 70  43 61 6c 6c 73 20 62 65  |alled UpCalls be|
00033e40  63 61 75 73 65 20 74 68  65 79 20 61 72 65 20 63  |cause they are c|
00033e50  61 6c 6c 73 20 74 68 61  74 20 52 49 53 43 20 4f  |alls that RISC O|
00033e60  53 20 6d 61 6b 65 73 20  75 70 20 74 6f 20 61 6e  |S makes up to an|
00033e70  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 6d 61 6b  | application mak|
00033e80  65 73 20 64 6f 77 6e 20  74 6f 20 52 49 53 43 20  |es down to RISC |
00033e90  4f 53 2e 20 54 68 65 79  20 67 65 6e 65 72 61 6c  |OS. They general|
00033ea0  6c 79 20 6f 63 63 75 72  20 69 6e 20 74 68 65 20  |ly occur in the |
00033eb0  66 6f 72 65 67 72 6f 75  6e 64 2c 20 61 6e 64 20  |foreground, and |
00033ec0  61 72 65 20 68 65 6e 63  65 20 64 69 66 66 65 72  |are hence differ|
00033ed0  65 6e 74 20 74 6f 20 45  76 65 6e 74 73 2c 20 77  |ent to Events, w|
00033ee0  68 69 63 68 20 6f 63 63  75 72 20 69 6e 20 74 68  |hich occur in th|
00033ef0  65 20 62 61 63 6b 67 72  6f 75 6e 64 2e 0a 0a 43  |e background...C|
00033f00  6c 69 63 6b 20 3c 68 65  72 65 3d 3e 2e 63 6f 64  |lick <here=>.cod|
00033f10  65 3e 20 66 6f 72 20 69  6e 66 6f 72 6d 61 74 69  |e> for informati|
00033f20  6f 6e 20 6f 6e 20 77 72  69 74 69 6e 67 20 55 70  |on on writing Up|
00033f30  43 61 6c 6c 20 63 6f 64  65 2e 0a 23 53 75 62 70  |Call code..#Subp|
00033f40  61 67 65 20 63 6f 64 65  0a 57 72 69 74 69 6e 67  |age code.Writing|
00033f50  20 63 6f 64 65 20 74 6f  20 68 61 6e 64 6c 65 20  | code to handle |
00033f60  55 70 43 61 6c 6c 73 0a  52 6f 75 74 69 6e 65 73  |UpCalls.Routines|
00033f70  20 74 68 61 74 20 64 65  61 6c 20 77 69 74 68 20  | that deal with |
00033f80  55 70 43 61 6c 6c 73 20  73 68 6f 75 6c 64 20 62  |UpCalls should b|
00033f90  65 20 76 69 65 77 65 64  20 61 73 20 73 79 73 74  |e viewed as syst|
00033fa0  65 6d 20 65 78 74 65 6e  73 69 6f 6e 73 2c 20 61  |em extensions, a|
00033fb0  6e 64 20 73 6f 20 73 68  6f 75 6c 64 20 6f 6e 6c  |nd so should onl|
00033fc0  79 20 63 61 6c 6c 20 65  72 72 6f 72 2d 72 65 74  |y call error-ret|
00033fd0  75 72 6e 69 6e 67 20 53  57 49 27 73 20 28 27 58  |urning SWI's ('X|
00033fe0  27 2b 53 57 49 29 2e 0a  20 0a 49 66 20 61 20 72  |'+SWI).. .If a r|
00033ff0  6f 75 74 69 6e 65 20 69  6e 73 74 61 6c 6c 65 64  |outine installed|
00034000  20 6f 6e 20 74 68 65 20  76 65 63 74 6f 72 20 64  | on the vector d|
00034010  65 61 6c 73 20 77 69 74  68 20 74 68 65 20 73 69  |eals with the si|
00034020  74 75 61 74 69 6f 6e 20  69 74 20 73 68 6f 75 6c  |tuation it shoul|
00034030  64 20 69 6e 74 65 72 63  65 70 74 20 74 68 65 20  |d intercept the |
00034040  63 61 6c 6c 20 74 6f 20  74 68 65 20 76 65 63 74  |call to the vect|
00034050  6f 72 2c 20 61 73 20 74  68 65 72 65 20 69 73 20  |or, as there is |
00034060  6e 6f 20 6c 6f 6e 67 65  72 20 61 6e 79 20 70 6f  |no longer any po|
00034070  69 6e 74 20 69 6e 66 6f  72 6d 69 6e 67 20 61 6e  |int informing an|
00034080  79 20 6f 74 68 65 72 20  72 6f 75 74 69 6e 65 73  |y other routines|
00034090  20 6f 72 20 74 68 65 20  55 70 43 61 6c 6c 20 68  | or the UpCall h|
000340a0  61 6e 64 6c 65 72 20 6f  66 20 74 68 65 20 73 69  |andler of the si|
000340b0  74 75 61 74 69 6f 6e 2e  20 49 66 20 69 74 20 63  |tuation. If it c|
000340c0  61 6e 27 74 20 64 65 61  6c 20 77 69 74 68 20 74  |an't deal with t|
000340d0  68 65 20 73 69 74 75 61  74 69 6f 6e 20 69 74 20  |he situation it |
000340e0  6d 75 73 74 20 70 61 73  73 20 74 68 65 20 63 61  |must pass the ca|
000340f0  6c 6c 20 6f 6e 2c 20 61  73 20 61 6e 6f 74 68 65  |ll on, as anothe|
00034100  72 20 6f 6e 65 20 6d 61  79 20 62 65 20 61 62 6c  |r one may be abl|
00034110  65 20 74 6f 20 64 6f 20  73 6f 2e 0a 44 41 54 41  |e to do so..DATA|
00034120  df 01 00 00 55 70 43 61  6c 6c 20 72 65 61 73 6f  |....UpCall reaso|
00034130  6e 73 0a 52 30 09 44 65  73 63 72 69 70 74 69 6f  |ns.R0.Descriptio|
00034140  6e 0a 23 4c 69 6e 65 0a  31 09 3c 4d 65 64 69 61  |n.#Line.1.<Media|
00034150  20 6e 6f 74 20 70 72 65  73 65 6e 74 3d 3e 6f 73  | not present=>os|
00034160  5f 75 70 63 61 6c 6c 31  3e 0a 32 09 3c 4d 65 64  |_upcall1>.2.<Med|
00034170  69 61 20 6e 6f 74 20 6b  6e 6f 77 6e 3d 3e 6f 73  |ia not known=>os|
00034180  5f 75 70 63 61 6c 6c 32  3e 0a 33 09 3c 4d 69 73  |_upcall2>.3.<Mis|
00034190  63 20 66 69 6c 65 20 63  68 61 6e 67 65 64 20 69  |c file changed i|
000341a0  6e 66 6f 72 6d 61 74 69  6f 6e 3d 3e 6f 73 5f 75  |nformation=>os_u|
000341b0  70 63 61 6c 6c 33 3e 0a  34 09 3c 4d 65 64 69 61  |pcall3>.4.<Media|
000341c0  20 73 65 61 72 63 68 20  65 6e 64 3d 3e 6f 73 5f  | search end=>os_|
000341d0  75 70 63 61 6c 6c 34 3e  0a 36 09 3c 54 61 73 6b  |upcall4>.6.<Task|
000341e0  57 69 6e 64 6f 77 20 53  6c 65 65 70 3d 3e 6f 73  |Window Sleep=>os|
000341f0  5f 75 70 63 61 6c 6c 36  3e 0a 37 09 3c 50 69 70  |_upcall6>.7.<Pip|
00034200  65 46 53 20 73 6c 65 65  70 20 6e 6f 20 6d 6f 72  |eFS sleep no mor|
00034210  65 3d 3e 6f 73 5f 75 70  63 61 6c 6c 37 3e 0a 38  |e=>os_upcall7>.8|
00034220  09 3c 42 75 66 66 65 72  20 66 69 6c 6c 69 6e 67  |.<Buffer filling|
00034230  3d 3e 6f 73 5f 75 70 63  61 6c 6c 38 3e 0a 39 09  |=>os_upcall8>.9.|
00034240  3c 42 75 66 66 65 72 20  65 6d 70 74 79 69 6e 67  |<Buffer emptying|
00034250  3d 3e 6f 73 5f 75 70 63  61 6c 6c 39 3e 0a 41 09  |=>os_upcall9>.A.|
00034260  3c 44 65 76 69 63 65 46  53 20 73 74 72 65 61 6d  |<DeviceFS stream|
00034270  20 63 72 65 61 74 65 64  3d 3e 6f 73 5f 75 70 63  | created=>os_upc|
00034280  61 6c 6c 31 30 3e 0a 42  09 3c 44 65 76 69 63 65  |all10>.B.<Device|
00034290  46 53 20 73 74 72 65 61  6d 20 63 6c 6f 73 65 64  |FS stream closed|
000342a0  3d 3e 6f 73 5f 75 70 63  61 6c 6c 31 31 3e 0a 31  |=>os_upcall11>.1|
000342b0  30 30 09 3c 4e 65 77 20  61 70 70 6c 69 63 61 74  |00.<New applicat|
000342c0  69 6f 6e 3d 3e 6f 73 5f  75 70 63 61 6c 6c 32 35  |ion=>os_upcall25|
000342d0  36 3e 0a 31 30 31 09 3c  4d 6f 76 65 20 6d 65 6d  |6>.101.<Move mem|
000342e0  6f 72 79 20 72 65 71 75  65 73 74 3d 3e 6f 73 5f  |ory request=>os_|
000342f0  75 70 63 61 6c 6c 32 35  37 3e 0a 00 44 49 52 24  |upcall257>..DIR$|
00034300  98 01 00 00 98 01 00 00  94 44 03 00 46 fd ff ff  |.........D..F...|
00034310  a8 78 6d f5 4b 02 00 00  13 00 00 00 00 00 00 00  |.xm.K...........|
00034320  72 65 61 73 6f 6e 73 00  e0 46 03 00 46 ff ff ff  |reasons..F..F...|
00034330  0c 6f 6d f5 e0 00 00 00  13 00 00 00 00 00 00 00  |.om.............|
00034340  30 00 00 00 c0 47 03 00  46 ff ff ff d2 97 6d f5  |0....G..F.....m.|
00034350  ba 00 00 00 13 00 00 00  00 00 00 00 31 00 00 00  |............1...|
00034360  7c 48 03 00 46 ff ff ff  70 9e 6d f5 8f 00 00 00  ||H..F...p.m.....|
00034370  13 00 00 00 00 00 00 00  32 00 00 00 0c 49 03 00  |........2....I..|
00034380  46 ff ff ff a1 a3 6d f5  99 00 00 00 13 00 00 00  |F.....m.........|
00034390  00 00 00 00 33 00 00 00  a8 49 03 00 46 ff ff ff  |....3....I..F...|
000343a0  11 a9 6d f5 8e 00 00 00  13 00 00 00 00 00 00 00  |..m.............|
000343b0  34 00 00 00 38 4a 03 00  46 ff ff ff e5 ad 6d f5  |4...8J..F.....m.|
000343c0  74 00 00 00 13 00 00 00  00 00 00 00 36 00 00 00  |t...........6...|
000343d0  ac 4a 03 00 46 ff ff ff  6e b3 6d f5 c7 00 00 00  |.J..F...n.m.....|
000343e0  13 00 00 00 00 00 00 00  37 00 00 00 74 4b 03 00  |........7...tK..|
000343f0  46 ff ff ff 92 b8 6d f5  00 01 00 00 13 00 00 00  |F.....m.........|
00034400  00 00 00 00 38 00 00 00  74 4c 03 00 46 ff ff ff  |....8...tL..F...|
00034410  58 be 6d f5 c8 00 00 00  13 00 00 00 00 00 00 00  |X.m.............|
00034420  32 35 37 00 3c 4d 03 00  46 ff ff ff 6c c6 6d f5  |257.<M..F...l.m.|
00034430  bf 00 00 00 13 00 00 00  00 00 00 00 32 35 38 00  |............258.|
00034440  fc 4d 03 00 46 ff ff ff  d9 cc 6d f5 c9 00 00 00  |.M..F.....m.....|
00034450  13 00 00 00 00 00 00 00  35 32 30 00 c8 4e 03 00  |........520..N..|
00034460  46 ff ff ff d5 d0 6d f5  49 00 00 00 13 00 00 00  |F.....m.I.......|
00034470  00 00 00 00 32 35 39 00  14 4f 03 00 46 ff ff ff  |....259..O..F...|
00034480  cb d7 6d f5 bb 00 00 00  13 00 00 00 00 00 00 00  |..m.............|
00034490  35 32 31 00 44 41 54 41  4b 02 00 00 4f 53 5f 55  |521.DATAK...OS_U|
000344a0  70 43 61 6c 6c 20 33 20  72 65 61 73 6f 6e 20 63  |pCall 3 reason c|
000344b0  6f 64 65 73 0a 52 39 09  4d 65 61 6e 69 6e 67 0a  |odes.R9.Meaning.|
000344c0  23 4c 69 6e 65 0a 30 09  3c 53 61 76 69 6e 67 20  |#Line.0.<Saving |
000344d0  6d 65 6d 6f 72 79 20 74  6f 20 66 69 6c 65 3d 3e  |memory to file=>|
000344e0  4f 53 5f 55 70 43 61 6c  6c 33 5f 30 3e 0a 31 09  |OS_UpCall3_0>.1.|
000344f0  3c 57 72 69 74 69 6e 67  20 63 61 74 61 6c 6f 67  |<Writing catalog|
00034500  75 65 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 3d 3e  |ue information=>|
00034510  4f 53 5f 55 70 43 61 6c  6c 33 5f 31 3e 0a 32 09  |OS_UpCall3_1>.2.|
00034520  3c 57 72 69 74 69 6e 67  20 6c 6f 61 64 20 61 64  |<Writing load ad|
00034530  64 72 65 73 73 20 6f 6e  6c 79 3d 3e 4f 53 5f 55  |dress only=>OS_U|
00034540  70 43 61 6c 6c 33 5f 32  3e 0a 33 09 3c 57 72 69  |pCall3_2>.3.<Wri|
00034550  74 69 6e 67 20 65 78 65  63 75 74 69 6f 6e 20 61  |ting execution a|
00034560  64 64 72 65 73 73 20 6f  6e 6c 79 3d 3e 4f 53 5f  |ddress only=>OS_|
00034570  55 70 43 61 6c 6c 33 5f  33 3e 0a 34 09 3c 57 72  |UpCall3_3>.4.<Wr|
00034580  69 74 69 6e 67 20 61 74  74 72 69 62 75 74 65 73  |iting attributes|
00034590  20 6f 6e 6c 79 3d 3e 4f  53 5f 55 70 43 61 6c 6c  | only=>OS_UpCall|
000345a0  33 5f 34 3e 0a 36 09 3c  44 65 6c 65 74 69 6e 67  |3_4>.6.<Deleting|
000345b0  20 66 69 6c 65 3d 3e 4f  53 5f 55 70 43 61 6c 6c  | file=>OS_UpCall|
000345c0  33 5f 36 3e 0a 37 09 3c  43 72 65 61 74 69 6e 67  |3_6>.7.<Creating|
000345d0  20 65 6d 70 74 79 20 66  69 6c 65 3d 3e 4f 53 5f  | empty file=>OS_|
000345e0  55 70 43 61 6c 6c 33 5f  37 3e 0a 38 09 3c 43 72  |UpCall3_7>.8.<Cr|
000345f0  65 61 74 69 6e 67 20 64  69 72 65 63 74 6f 72 79  |eating directory|
00034600  3d 3e 4f 53 5f 55 70 43  61 6c 6c 33 5f 38 3e 0a  |=>OS_UpCall3_8>.|
00034610  32 35 37 09 3c 43 72 65  61 74 69 6e 67 20 61 6e  |257.<Creating an|
00034620  64 20 6f 70 65 6e 69 6e  67 20 66 6f 72 20 75 70  |d opening for up|
00034630  64 61 74 65 3d 3e 4f 53  5f 55 70 43 61 6c 6c 33  |date=>OS_UpCall3|
00034640  5f 32 35 37 3e 0a 32 35  38 09 3c 4f 70 65 6e 69  |_257>.258.<Openi|
00034650  6e 67 20 66 6f 72 20 75  70 64 61 74 65 3d 3e 4f  |ng for update=>O|
00034660  53 5f 55 70 43 61 6c 6c  33 5f 32 35 38 3e 0a 32  |S_UpCall3_258>.2|
00034670  35 39 09 3c 43 6c 6f 73  69 6e 67 20 66 69 6c 65  |59.<Closing file|
00034680  3d 3e 4f 53 5f 55 70 43  61 6c 6c 33 5f 32 35 39  |=>OS_UpCall3_259|
00034690  3e 0a 35 32 30 09 3c 52  65 6e 61 6d 69 6e 67 20  |>.520.<Renaming |
000346a0  66 69 6c 65 3d 3e 4f 53  5f 55 70 43 61 6c 6c 33  |file=>OS_UpCall3|
000346b0  5f 35 32 30 3e 0a 35 32  31 09 3c 53 65 74 74 69  |_520>.521.<Setti|
000346c0  6e 67 20 61 74 74 72 69  62 75 74 65 73 3d 3e 4f  |ng attributes=>O|
000346d0  53 5f 55 70 43 61 6c 6c  33 5f 35 32 31 3e 0a 00  |S_UpCall3_521>..|
000346e0  44 41 54 41 e0 00 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
000346f0  6c 20 33 20 73 75 62 72  65 61 73 6f 6e 20 63 6f  |l 3 subreason co|
00034700  64 65 20 30 0a 53 61 76  69 6e 67 20 6d 65 6d 6f  |de 0.Saving memo|
00034710  72 79 20 74 6f 20 66 69  6c 65 0a 0a 52 31 20 3d  |ry to file..R1 =|
00034720  09 70 6f 69 6e 74 65 72  20 74 6f 20 66 69 6c 65  |.pointer to file|
00034730  6e 61 6d 65 0a 52 32 20  3d 09 6c 6f 61 64 20 61  |name.R2 =.load a|
00034740  64 64 72 65 73 73 0a 52  33 20 3d 09 65 78 65 63  |ddress.R3 =.exec|
00034750  75 74 69 6f 6e 20 61 64  64 72 65 73 73 0a 52 34  |ution address.R4|
00034760  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 73 74  | =.pointer to st|
00034770  61 72 74 20 6f 66 20 62  75 66 66 65 72 0a 52 35  |art of buffer.R5|
00034780  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 65 6e  | =.pointer to en|
00034790  64 20 6f 66 20 62 75 66  66 65 72 0a 52 36 20 3d  |d of buffer.R6 =|
000347a0  09 70 6f 69 6e 74 65 72  20 74 6f 20 73 70 65 63  |.pointer to spec|
000347b0  69 61 6c 20 66 69 65 6c  64 20 28 6f 72 20 30 29  |ial field (or 0)|
000347c0  44 41 54 41 ba 00 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
000347d0  6c 20 33 20 73 75 62 72  65 61 73 6f 6e 20 63 6f  |l 3 subreason co|
000347e0  64 65 20 31 0a 57 72 69  74 69 6e 67 20 63 61 74  |de 1.Writing cat|
000347f0  61 6c 6f 67 75 65 20 69  6e 66 6f 72 6d 61 74 69  |alogue informati|
00034800  6f 6e 0a 0a 52 31 20 3d  09 70 6f 69 6e 74 65 72  |on..R1 =.pointer|
00034810  20 74 6f 20 66 69 6c 65  6e 61 6d 65 0a 52 32 20  | to filename.R2 |
00034820  3d 09 6c 6f 61 64 20 61  64 64 72 65 73 73 0a 52  |=.load address.R|
00034830  33 20 3d 09 65 78 65 63  75 74 69 6f 6e 20 61 64  |3 =.execution ad|
00034840  64 72 65 73 73 0a 52 35  20 3d 09 61 74 74 72 69  |dress.R5 =.attri|
00034850  62 75 74 65 73 0a 52 36  20 3d 09 70 6f 69 6e 74  |butes.R6 =.point|
00034860  65 72 20 74 6f 20 73 70  65 63 69 61 6c 20 66 69  |er to special fi|
00034870  65 6c 64 20 28 6f 72 20  30 29 00 00 44 41 54 41  |eld (or 0)..DATA|
00034880  8f 00 00 00 4f 53 5f 55  70 43 61 6c 6c 20 33 20  |....OS_UpCall 3 |
00034890  73 75 62 72 65 61 73 6f  6e 20 63 6f 64 65 20 32  |subreason code 2|
000348a0  0a 57 72 69 74 69 6e 67  20 6c 6f 61 64 20 61 64  |.Writing load ad|
000348b0  64 72 65 73 73 20 6f 6e  6c 79 0a 0a 52 31 20 3d  |dress only..R1 =|
000348c0  09 70 6f 69 6e 74 65 72  20 74 6f 20 66 69 6c 65  |.pointer to file|
000348d0  6e 61 6d 65 0a 52 32 20  3d 09 6c 6f 61 64 20 61  |name.R2 =.load a|
000348e0  64 64 72 65 73 73 0a 52  36 20 3d 09 70 6f 69 6e  |ddress.R6 =.poin|
000348f0  74 65 72 20 74 6f 20 73  70 65 63 69 61 6c 20 66  |ter to special f|
00034900  69 65 6c 64 20 28 6f 72  20 30 29 00 44 41 54 41  |ield (or 0).DATA|
00034910  99 00 00 00 4f 53 5f 55  70 43 61 6c 6c 20 33 20  |....OS_UpCall 3 |
00034920  73 75 62 72 65 61 73 6f  6e 20 63 6f 64 65 20 33  |subreason code 3|
00034930  0a 57 72 69 74 69 6e 67  20 65 78 65 63 75 74 69  |.Writing executi|
00034940  6f 6e 20 61 64 64 72 65  73 73 20 6f 6e 6c 79 0a  |on address only.|
00034950  0a 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00034960  20 66 69 6c 65 6e 61 6d  65 0a 52 33 20 3d 09 65  | filename.R3 =.e|
00034970  78 65 63 75 74 69 6f 6e  20 61 64 64 72 65 73 73  |xecution address|
00034980  0a 52 36 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R6 =.pointer to|
00034990  20 73 70 65 63 69 61 6c  20 66 69 65 6c 64 20 28  | special field (|
000349a0  6f 72 20 30 29 00 00 00  44 41 54 41 8e 00 00 00  |or 0)...DATA....|
000349b0  4f 53 5f 55 70 43 61 6c  6c 20 33 20 73 75 62 72  |OS_UpCall 3 subr|
000349c0  65 61 73 6f 6e 20 63 6f  64 65 20 34 0a 57 72 69  |eason code 4.Wri|
000349d0  74 69 6e 67 20 61 74 74  72 69 62 75 74 65 73 20  |ting attributes |
000349e0  6f 6e 6c 79 0a 0a 52 31  20 3d 09 70 6f 69 6e 74  |only..R1 =.point|
000349f0  65 72 20 74 6f 20 6f 62  6a 65 63 74 20 6e 61 6d  |er to object nam|
00034a00  65 0a 52 35 20 3d 09 61  74 74 72 69 62 75 74 65  |e.R5 =.attribute|
00034a10  73 0a 52 36 20 3d 09 70  6f 69 6e 74 65 72 20 74  |s.R6 =.pointer t|
00034a20  6f 20 73 70 65 63 69 61  6c 20 66 69 65 6c 64 20  |o special field |
00034a30  28 6f 72 20 30 29 00 00  44 41 54 41 74 00 00 00  |(or 0)..DATAt...|
00034a40  4f 53 5f 55 70 43 61 6c  6c 20 33 20 73 75 62 72  |OS_UpCall 3 subr|
00034a50  65 61 73 6f 6e 20 63 6f  64 65 20 36 0a 44 65 6c  |eason code 6.Del|
00034a60  65 74 69 6e 67 20 66 69  6c 65 0a 0a 52 31 20 3d  |eting file..R1 =|
00034a70  09 70 6f 69 6e 74 65 72  20 74 6f 20 6f 62 6a 65  |.pointer to obje|
00034a80  63 74 20 6e 61 6d 65 0a  52 36 20 3d 09 70 6f 69  |ct name.R6 =.poi|
00034a90  6e 74 65 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |nter to special |
00034aa0  66 69 65 6c 64 20 28 6f  72 20 30 29 44 41 54 41  |field (or 0)DATA|
00034ab0  c7 00 00 00 4f 53 5f 55  70 43 61 6c 6c 20 33 20  |....OS_UpCall 3 |
00034ac0  73 75 62 72 65 61 73 6f  6e 20 63 6f 64 65 20 37  |subreason code 7|
00034ad0  0a 43 72 65 61 74 69 6e  67 20 65 6d 70 74 79 20  |.Creating empty |
00034ae0  66 69 6c 65 0a 0a 52 31  20 3d 09 70 6f 69 6e 74  |file..R1 =.point|
00034af0  65 72 20 74 6f 20 6f 62  6a 65 63 74 20 6e 61 6d  |er to object nam|
00034b00  65 0a 52 32 20 3d 09 6c  6f 61 64 20 61 64 64 72  |e.R2 =.load addr|
00034b10  65 73 73 0a 52 33 20 3d  09 65 78 65 63 75 74 69  |ess.R3 =.executi|
00034b20  6f 6e 20 61 64 64 72 65  73 73 0a 52 34 20 3d 09  |on address.R4 =.|
00034b30  73 74 61 72 74 20 61 64  64 72 65 73 73 0a 52 35  |start address.R5|
00034b40  20 3d 09 65 6e 64 20 61  64 64 72 65 73 73 0a 52  | =.end address.R|
00034b50  36 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 73  |6 =.pointer to s|
00034b60  70 65 63 69 61 6c 20 66  69 65 6c 64 20 28 6f 72  |pecial field (or|
00034b70  20 30 29 00 44 41 54 41  00 01 00 00 4f 53 5f 55  | 0).DATA....OS_U|
00034b80  70 43 61 6c 6c 20 33 20  73 75 62 72 65 61 73 6f  |pCall 3 subreaso|
00034b90  6e 20 63 6f 64 65 20 38  0a 43 72 65 61 74 69 6e  |n code 8.Creatin|
00034ba0  67 20 64 69 72 65 63 74  6f 72 79 0a 0a 52 31 20  |g directory..R1 |
00034bb0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 64 69 72  |=.pointer to dir|
00034bc0  65 63 74 6f 72 79 20 6e  61 6d 65 0a 52 32 20 3d  |ectory name.R2 =|
00034bd0  09 6c 6f 61 64 20 61 64  64 72 65 73 73 20 28 74  |.load address (t|
00034be0  6f 20 62 65 20 75 73 65  64 20 61 73 20 74 69 6d  |o be used as tim|
00034bf0  65 73 74 61 6d 70 29 0a  52 33 20 3d 09 65 78 65  |estamp).R3 =.exe|
00034c00  63 75 74 69 6f 6e 20 61  64 64 72 65 73 73 20 28  |cution address (|
00034c10  74 6f 20 62 65 20 75 73  65 64 20 61 73 20 74 69  |to be used as ti|
00034c20  6d 65 73 74 61 6d 70 29  0a 52 34 20 3d 09 6e 75  |mestamp).R4 =.nu|
00034c30  6d 62 65 72 20 6f 66 20  65 6e 74 72 69 65 73 20  |mber of entries |
00034c40  28 30 20 66 6f 72 20 64  65 66 61 75 6c 74 29 0a  |(0 for default).|
00034c50  52 36 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R6 =.pointer to |
00034c60  73 70 65 63 69 61 6c 20  66 69 65 6c 64 20 28 6f  |special field (o|
00034c70  72 20 30 29 44 41 54 41  c8 00 00 00 4f 53 5f 55  |r 0)DATA....OS_U|
00034c80  70 43 61 6c 6c 20 33 20  73 75 62 72 65 61 73 6f  |pCall 3 subreaso|
00034c90  6e 20 63 6f 64 65 20 32  35 37 0a 43 72 65 61 74  |n code 257.Creat|
00034ca0  69 6e 67 20 61 6e 64 20  6f 70 65 6e 69 6e 67 20  |ing and opening |
00034cb0  75 70 64 61 74 65 0a 0a  52 31 20 3d 09 70 6f 69  |update..R1 =.poi|
00034cc0  6e 74 65 72 20 74 6f 20  66 69 6c 65 20 6e 61 6d  |nter to file nam|
00034cd0  65 0a 52 32 20 3d 09 65  78 74 65 72 6e 61 6c 20  |e.R2 =.external |
00034ce0  68 61 6e 64 6c 65 20 74  68 61 74 20 66 69 6c 65  |handle that file|
00034cf0  20 77 69 6c 6c 20 62 65  20 67 69 76 65 6e 20 28  | will be given (|
00034d00  69 66 20 73 75 63 63 65  73 73 66 75 6c 6c 79 20  |if successfully |
00034d10  6f 70 65 6e 65 64 29 0a  52 36 20 3d 09 70 6f 69  |opened).R6 =.poi|
00034d20  6e 74 65 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |nter to special |
00034d30  66 69 65 6c 64 20 28 6f  72 20 30 29 44 41 54 41  |field (or 0)DATA|
00034d40  bf 00 00 00 4f 53 5f 55  70 43 61 6c 6c 20 33 20  |....OS_UpCall 3 |
00034d50  73 75 62 72 65 61 73 6f  6e 20 63 6f 64 65 20 32  |subreason code 2|
00034d60  35 38 0a 4f 70 65 6e 69  6e 67 20 66 6f 72 20 75  |58.Opening for u|
00034d70  70 64 61 74 65 0a 0a 52  31 20 3d 09 70 6f 69 6e  |pdate..R1 =.poin|
00034d80  74 65 72 20 74 6f 20 66  69 6c 65 20 6e 61 6d 65  |ter to file name|
00034d90  0a 52 32 20 3d 09 65 78  74 65 72 6e 61 6c 20 68  |.R2 =.external h|
00034da0  61 6e 64 6c 65 20 74 68  61 74 20 66 69 6c 65 20  |andle that file |
00034db0  77 69 6c 6c 20 62 65 20  67 69 76 65 6e 20 28 69  |will be given (i|
00034dc0  66 20 73 75 63 63 65 73  73 66 75 6c 6c 79 20 6f  |f successfully o|
00034dd0  70 65 6e 65 64 29 0a 52  36 20 3d 09 70 6f 69 6e  |pened).R6 =.poin|
00034de0  74 65 72 20 74 6f 20 73  70 65 63 69 61 6c 20 66  |ter to special f|
00034df0  69 65 6c 64 20 28 6f 72  20 30 29 00 44 41 54 41  |ield (or 0).DATA|
00034e00  c9 00 00 00 4f 53 5f 55  70 43 61 6c 6c 20 33 20  |....OS_UpCall 3 |
00034e10  73 75 62 72 65 61 73 6f  6e 20 63 6f 64 65 20 35  |subreason code 5|
00034e20  32 30 0a 52 65 6e 61 6d  69 6e 67 20 66 69 6c 65  |20.Renaming file|
00034e30  0a 0a 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00034e40  6f 20 63 75 72 72 65 6e  74 20 6f 62 6a 65 63 74  |o current object|
00034e50  20 6e 61 6d 65 0a 52 32  20 3d 09 70 6f 69 6e 74  | name.R2 =.point|
00034e60  65 72 20 74 6f 20 64 65  73 69 72 65 64 20 6f 62  |er to desired ob|
00034e70  6a 65 63 74 20 6e 61 6d  65 0a 52 36 20 3d 09 70  |ject name.R6 =.p|
00034e80  6f 69 6e 74 65 72 20 74  6f 20 63 75 72 72 65 6e  |ointer to curren|
00034e90  74 20 73 70 65 63 69 61  6c 20 66 69 65 6c 64 0a  |t special field.|
00034ea0  52 37 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R7 =.pointer to |
00034eb0  64 65 73 69 72 65 64 20  73 70 65 63 69 61 6c 20  |desired special |
00034ec0  66 69 65 6c 64 00 00 00  44 41 54 41 49 00 00 00  |field...DATAI...|
00034ed0  4f 53 5f 55 70 43 61 6c  6c 20 33 20 73 75 62 72  |OS_UpCall 3 subr|
00034ee0  65 61 73 6f 6e 20 63 6f  64 65 20 32 35 39 0a 43  |eason code 259.C|
00034ef0  6c 6f 73 69 6e 67 20 66  69 6c 65 0a 0a 52 31 20  |losing file..R1 |
00034f00  3d 09 65 78 74 65 72 6e  61 6c 20 68 61 6e 64 6c  |=.external handl|
00034f10  65 00 00 00 44 41 54 41  bb 00 00 00 4f 53 5f 55  |e...DATA....OS_U|
00034f20  70 43 61 6c 6c 20 33 20  73 75 62 72 65 61 73 6f  |pCall 3 subreaso|
00034f30  6e 20 63 6f 64 65 20 35  32 31 0a 53 65 74 74 69  |n code 521.Setti|
00034f40  6e 67 20 61 74 74 72 69  62 75 74 65 73 0a 0a 52  |ng attributes..R|
00034f50  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6f  |1 =.pointer to o|
00034f60  62 6a 65 63 74 20 6e 61  6d 65 0a 52 32 20 3d 09  |bject name.R2 =.|
00034f70  70 6f 69 6e 74 65 72 20  74 6f 20 61 74 74 72 69  |pointer to attri|
00034f80  62 75 74 65 20 73 74 72  69 6e 67 20 28 63 6f 6e  |bute string (con|
00034f90  74 72 6f 6c 20 63 68 61  72 61 63 74 65 72 20 74  |trol character t|
00034fa0  65 72 6d 69 6e 61 74 65  64 29 0a 52 36 20 3d 09  |erminated).R6 =.|
00034fb0  70 6f 69 6e 74 65 72 20  74 6f 20 73 70 65 63 69  |pointer to speci|
00034fc0  61 6c 20 66 69 65 6c 64  20 28 6f 72 20 30 29 00  |al field (or 0).|
00034fd0  44 41 54 41 18 06 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
00034fe0  6c 20 33 20 2d 20 4d 6f  64 69 66 79 69 6e 67 20  |l 3 - Modifying |
00034ff0  66 69 6c 65 0a 3d 3e 09  52 30 20 3d 09 33 20 28  |file.=>.R0 =.3 (|
00035000  4d 6f 64 69 66 79 69 6e  67 20 66 69 6c 65 29 0a  |Modifying file).|
00035010  09 52 31 2d 52 37 20 76  61 72 79 2c 20 64 65 70  |.R1-R7 vary, dep|
00035020  65 6e 64 69 6e 67 20 6f  6e 20 74 68 65 20 76 61  |ending on the va|
00035030  6c 75 65 20 6f 66 20 52  39 0a 0a 09 52 38 20 3d  |lue of R9...R8 =|
00035040  09 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 20 69  |.filing system i|
00035050  6e 66 6f 72 6d 61 74 69  6f 6e 20 77 6f 72 64 0a  |nformation word.|
00035060  09 52 39 20 3d 09 3c 52  65 61 73 6f 6e 20 63 6f  |.R9 =.<Reason co|
00035070  64 65 3d 3e 4f 53 5f 55  70 43 61 6c 6c 33 5f 72  |de=>OS_UpCall3_r|
00035080  65 61 73 6f 6e 73 3e 0a  0a 3c 3d 09 41 6c 6c 20  |easons>..<=.All |
00035090  72 65 67 69 73 74 65 72  73 20 70 72 65 73 65 72  |registers preser|
000350a0  76 65 64 0a 0a 57 61 72  6e 73 20 79 6f 75 72 20  |ved..Warns your |
000350b0  70 72 6f 67 72 61 6d 20  74 68 61 74 20 61 20 66  |program that a f|
000350c0  69 6c 65 20 69 73 20 62  65 69 6e 67 20 6d 6f 64  |ile is being mod|
000350d0  69 66 69 65 64 2e 20 49  74 20 69 73 20 6d 61 64  |ified. It is mad|
000350e0  65 20 77 68 65 6e 20 61  20 70 72 6f 67 72 61 6d  |e when a program|
000350f0  20 63 61 6c 6c 73 20 6f  6e 65 20 6f 66 20 73 65  | calls one of se|
00035100  72 76 65 72 61 6c 20 53  57 49 20 70 72 6f 76 69  |rveral SWI provi|
00035110  64 65 64 20 62 79 20 46  69 6c 65 53 77 69 74 63  |ded by FileSwitc|
00035120  68 20 6d 6f 64 75 6c 65  3a 0a 23 54 61 62 3b 49  |h module:.#Tab;I|
00035130  6e 64 65 6e 74 20 32 0a  8f 09 72 65 61 73 6f 6e  |ndent 2...reason|
00035140  20 63 6f 64 65 73 20 30  2d 38 20 61 72 65 20 63  | codes 0-8 are c|
00035150  61 75 73 65 64 20 62 79  20 63 61 6c 6c 73 20 74  |aused by calls t|
00035160  6f 20 3c 4f 53 5f 46 69  6c 65 3e 0a 8f 09 72 65  |o <OS_File>...re|
00035170  61 73 6f 6e 20 63 6f 64  65 73 20 32 35 37 2d 39  |ason codes 257-9|
00035180  20 61 72 65 20 63 61 75  73 65 64 20 62 79 20 63  | are caused by c|
00035190  61 6c 6c 73 20 74 6f 20  3c 4f 53 5f 46 69 6e 64  |alls to <OS_Find|
000351a0  3e 0a 8f 09 72 65 61 73  6f 6e 20 63 6f 64 65 73  |>...reason codes|
000351b0  20 35 32 30 2f 31 20 61  72 65 20 63 61 75 73 65  | 520/1 are cause|
000351c0  64 20 62 79 20 63 61 6c  6c 73 20 74 6f 20 3c 4f  |d by calls to <O|
000351d0  53 5f 46 53 43 6f 6e 74  72 6f 6c 3e 0a 23 49 6e  |S_FSControl>.#In|
000351e0  64 65 6e 74 0a 0a 59 6f  75 20 6d 61 79 20 66 69  |dent..You may fi|
000351f0  6e 64 20 69 74 20 68 65  6c 70 66 75 6c 20 74 6f  |nd it helpful to|
00035200  20 65 78 61 6d 69 6e 65  20 74 68 65 20 64 6f 63  | examine the doc|
00035210  75 6d 65 6e 74 61 74 69  6f 6e 20 6f 66 20 74 68  |umentation of th|
00035220  65 20 61 62 6f 76 65 20  46 69 6c 65 53 77 69 74  |e above FileSwit|
00035230  63 68 20 53 57 49 20 63  61 6c 6c 73 2e 0a 0a 54  |ch SWI calls...T|
00035240  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 67 65 6e  |he following gen|
00035250  65 72 61 6c 20 70 6f 69  6e 74 73 20 61 70 70 6c  |eral points appl|
00035260  79 3a 0a 23 54 61 62 3b  49 6e 64 65 6e 74 20 32  |y:.#Tab;Indent 2|
00035270  0a 8f 09 61 6c 6c 20 73  74 72 69 6e 67 73 20 61  |...all strings a|
00035280  72 65 20 30 2d 74 65 72  6d 69 6e 61 74 65 64 20  |re 0-terminated |
00035290  65 78 63 65 70 74 20 77  68 65 72 65 20 73 70 65  |except where spe|
000352a0  63 69 66 69 65 64 0a 8f  09 61 6c 6c 20 6f 62 6a  |cified...all obj|
000352b0  65 63 74 20 6e 61 6d 65  73 20 77 69 6c 6c 20 61  |ect names will a|
000352c0  6c 72 65 61 64 79 20 68  61 76 65 20 62 65 65 6e  |lready have been|
000352d0  20 65 78 70 61 6e 64 65  64 20 62 79 20 46 69 6c  | expanded by Fil|
000352e0  65 53 77 69 74 63 68 2c  20 63 68 65 63 6b 65 64  |eSwitch, checked|
000352f0  20 66 6f 72 20 62 61 73  69 63 20 76 61 6c 69 64  | for basic valid|
00035300  69 74 79 2c 20 61 6e 64  20 68 61 64 20 66 69 6c  |ity, and had fil|
00035310  69 6e 67 20 73 79 73 74  65 6d 20 70 72 65 66 69  |ing system prefi|
00035320  78 65 73 20 73 74 72 69  70 70 65 64 0a 8f 09 6f  |xes stripped...o|
00035330  62 6a 65 63 74 20 6e 61  6d 65 73 20 77 69 6c 6c  |bject names will|
00035340  20 61 6c 73 6f 20 62 65  20 63 61 6e 6f 6e 69 63  | also be canonic|
00035350  61 6c 69 73 65 64 2c 20  65 78 63 65 70 74 20 75  |alised, except u|
00035360  6e 64 65 72 20 52 49 53  43 20 4f 53 20 32 2e 0a  |nder RISC OS 2..|
00035370  23 49 6e 64 65 6e 74 0a  0a 54 68 69 73 20 55 70  |#Indent..This Up|
00035380  43 61 6c 6c 20 69 73 20  6d 61 64 65 20 62 65 66  |Call is made bef|
00035390  6f 72 65 20 74 68 65 20  6f 70 65 72 61 74 69 6f  |ore the operatio|
000353a0  6e 2c 20 77 68 69 63 68  20 6d 61 79 20 73 75 62  |n, which may sub|
000353b0  73 65 71 75 65 6e 74 6c  79 20 66 61 69 6c 2e 20  |sequently fail. |
000353c0  46 6f 72 20 65 78 61 6d  70 6c 65 2c 20 79 6f 75  |For example, you|
000353d0  20 6d 61 79 20 72 65 63  65 69 76 65 20 61 20 72  | may receive a r|
000353e0  65 6e 61 6d 65 20 55 70  43 61 6c 6c 20 66 6f 72  |ename UpCall for|
000353f0  20 61 20 6c 6f 63 6b 65  64 20 66 69 6c 65 2c 20  | a locked file, |
00035400  77 68 69 63 68 20 77 69  6c 6c 20 73 65 62 73 65  |which will sebse|
00035410  71 75 65 6e 74 6c 79 20  66 61 69 6c 20 74 6f 20  |quently fail to |
00035420  72 65 6e 61 6d 65 20 28  62 65 63 61 75 73 65 20  |rename (because |
00035430  69 74 27 73 20 6c 6f 63  6b 65 64 29 2e 20 49 66  |it's locked). If|
00035440  20 61 20 66 69 6c 65 20  6e 61 6d 65 20 69 73 20  | a file name is |
00035450  69 6e 76 61 6c 69 64 20  66 6f 72 20 61 20 67 69  |invalid for a gi|
00035460  76 65 6e 20 6f 70 65 72  61 74 69 6f 6e 20 28 65  |ven operation (e|
00035470  67 20 79 6f 75 20 74 72  79 20 74 6f 20 63 72 65  |g you try to cre|
00035480  61 74 65 20 61 20 66 69  6c 65 20 77 69 74 68 20  |ate a file with |
00035490  61 20 77 69 6c 64 63 61  72 64 65 64 20 6c 65 61  |a wildcarded lea|
000354a0  66 6e 61 6d 65 29 20 46  69 6c 65 53 77 69 74 63  |fname) FileSwitc|
000354b0  68 20 77 69 6c 6c 20 67  65 6e 65 72 61 74 65 20  |h will generate |
000354c0  61 6e 20 65 72 72 6f 72  2c 20 61 6e 64 20 6e 6f  |an error, and no|
000354d0  20 55 70 43 61 6c 6c 20  77 69 6c 6c 20 62 65 20  | UpCall will be |
000354e0  67 65 6e 65 72 61 74 65  64 2e 0a 0a 54 68 65 20  |generated...The |
000354f0  63 61 6c 6c 20 69 73 20  75 73 65 64 20 62 79 20  |call is used by |
00035500  74 68 65 20 64 65 73 6b  74 6f 70 20 66 69 6c 65  |the desktop file|
00035510  72 20 74 6f 20 6d 61 69  6e 74 61 69 6e 20 69 74  |r to maintain it|
00035520  73 20 64 69 72 65 63 74  6f 72 79 20 64 69 73 70  |s directory disp|
00035530  6c 61 79 73 2e 20 49 74  27 73 20 70 72 6f 76 69  |lays. It's provi|
00035540  64 65 64 20 66 6f 72 20  69 6e 66 6f 72 6d 61 74  |ded for informat|
00035550  69 6f 6e 20 6f 6e 6c 79  3b 20 69 66 20 79 6f 75  |ion only; if you|
00035560  20 77 69 73 68 20 74 6f  20 75 73 65 20 74 68 69  | wish to use thi|
00035570  73 20 55 70 43 61 6c 6c  2c 20 79 6f 75 20 6d 75  |s UpCall, you mu|
00035580  73 74 20 6e 6f 74 20 69  6e 74 65 72 63 65 70 74  |st not intercept|
00035590  20 69 74 2c 20 6e 6f 72  20 6d 75 73 74 20 79 6f  | it, nor must yo|
000355a0  75 20 61 6c 74 65 72 20  74 68 65 20 63 6f 6e 74  |u alter the cont|
000355b0  65 6e 74 73 20 6f 66 20  61 6e 79 20 6f 66 20 74  |ents of any of t|
000355c0  68 65 73 65 20 72 65 67  69 73 74 65 72 73 20 75  |hese registers u|
000355d0  73 65 64 20 74 6f 20 70  61 73 73 20 70 61 72 61  |sed to pass para|
000355e0  6d 65 74 65 72 73 21 0a  44 41 54 41 2b 06 00 00  |meters!.DATA+...|
000355f0  41 6e 79 20 72 6f 75 74  69 6e 65 73 20 6f 6e 20  |Any routines on |
00035600  74 68 69 73 20 76 65 63  74 6f 72 20 73 68 6f 75  |this vector shou|
00035610  6c 64 20 3a 0a 23 54 61  62 3b 49 6e 64 65 6e 74  |ld :.#Tab;Indent|
00035620  20 32 0a 8f 09 50 72 6f  6d 70 74 20 79 6f 75 20  | 2...Prompt you |
00035630  74 6f 20 73 75 70 70 6c  79 20 74 68 65 20 6d 65  |to supply the me|
00035640  64 69 75 6d 20 77 69 74  68 20 61 20 73 74 72 69  |dium with a stri|
00035650  6e 67 20 62 75 69 6c 74  20 75 70 20 75 73 69 6e  |ng built up usin|
00035660  67 3a 0a 09 20 20 31 09  74 68 65 20 6d 65 64 69  |g:..  1.the medi|
00035670  75 6d 20 74 79 70 65 20  73 74 72 69 6e 67 20 28  |um type string (|
00035680  70 61 73 73 65 64 20 69  6e 20 52 36 29 0a 09 20  |passed in R6).. |
00035690  20 32 09 74 68 65 20 66  69 6c 69 6e 67 20 73 79  | 2.the filing sy|
000356a0  73 74 65 6d 20 6e 61 6d  65 20 28 6f 62 74 61 69  |stem name (obtai|
000356b0  6e 65 64 20 62 79 20 63  61 6c 6c 69 6e 67 20 3c  |ned by calling <|
000356c0  58 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 3d 3e 4f  |XOS_FSControl=>O|
000356d0  53 5f 46 53 43 6f 6e 74  72 6f 6c 3e 20 33 33 20  |S_FSControl> 33 |
000356e0  61 63 74 69 6e 67 20 6f  6e 20 74 68 65 20 76 61  |acting on the va|
000356f0  6c 75 65 20 6f 66 20 52  31 29 0a 09 20 20 33 09  |lue of R1)..  3.|
00035700  74 68 65 20 6d 65 64 69  75 6d 20 6e 61 6d 65 20  |the medium name |
00035710  28 70 61 73 73 65 64 20  69 6e 20 52 32 29 0a 09  |(passed in R2)..|
00035720  66 6f 72 20 65 78 61 6d  70 6c 65 3a 0a 09 27 50  |for example:..'P|
00035730  6c 65 61 73 65 20 69 6e  73 65 72 74 20 64 69 73  |lease insert dis|
00035740  63 20 41 44 46 53 3a 58  59 5a 20 61 6e 64 20 70  |c ADFS:XYZ and p|
00035750  72 65 73 73 20 53 70 61  63 65 20 28 45 73 63 61  |ress Space (Esca|
00035760  70 65 20 74 6f 20 61 62  6f 72 74 29 27 0a 8f 09  |pe to abort)'...|
00035770  67 69 76 65 20 79 6f 75  20 61 20 77 61 79 20 6f  |give you a way o|
00035780  66 20 69 6e 64 69 63 61  74 69 6e 67 20 74 68 61  |f indicating tha|
00035790  74 20 79 6f 75 20 68 61  76 65 20 65 69 74 68 65  |t you have eithe|
000357a0  72 20 73 75 70 70 6c 69  65 64 20 74 68 65 20 6d  |r supplied the m|
000357b0  65 64 69 75 6d 2c 20 6f  72 20 77 69 73 68 20 74  |edium, or wish t|
000357c0  6f 20 63 61 6e 63 65 6c  20 74 68 65 20 6f 70 65  |o cancel the ope|
000357d0  72 61 74 69 6f 6e 0a 8f  09 69 6e 74 65 72 63 65  |ration...interce|
000357e0  70 74 20 74 68 65 20 76  65 63 74 6f 72 20 77 69  |pt the vector wi|
000357f0  74 68 20 52 30 20 3d 20  2d 31 20 69 66 20 79 6f  |th R0 = -1 if yo|
00035800  75 20 77 69 73 68 20 74  6f 20 63 61 6e 63 65 6c  |u wish to cancel|
00035810  20 74 68 65 20 6f 70 65  72 61 74 69 6f 6e 0a 8f  | the operation..|
00035820  09 69 6e 74 65 72 63 65  70 74 20 74 68 65 20 76  |.intercept the v|
00035830  65 63 74 6f 72 20 77 69  74 68 20 52 30 20 3d 20  |ector with R0 = |
00035840  30 20 69 66 20 74 68 65  20 74 69 6d 65 20 6c 69  |0 if the time li|
00035850  6d 69 74 20 69 73 20 72  65 61 63 68 65 64 2c 20  |mit is reached, |
00035860  6f 72 20 69 66 20 79 6f  75 20 73 61 79 20 79 6f  |or if you say yo|
00035870  75 20 68 61 76 65 20 73  75 70 70 6c 69 65 64 20  |u have supplied |
00035880  74 68 65 20 6d 65 64 69  75 6d 0a 23 49 6e 64 65  |the medium.#Inde|
00035890  6e 74 0a 0a 57 68 65 6e  20 79 6f 75 20 69 6e 74  |nt..When you int|
000358a0  65 72 63 65 70 74 20 74  68 65 20 63 61 6c 6c 20  |ercept the call |
000358b0  74 6f 20 74 68 65 20 76  65 63 74 6f 72 2c 20 63  |to the vector, c|
000358c0  6f 6e 74 72 6f 6c 20 70  61 73 73 65 73 20 62 61  |ontrol passes ba|
000358d0  63 6b 20 74 6f 20 74 68  65 20 66 69 6c 69 6e 67  |ck to the filing|
000358e0  0a 73 79 73 74 65 6d 20  72 6f 75 74 69 6e 65 20  |.system routine |
000358f0  74 68 61 74 20 63 61 6c  6c 65 64 20 4f 53 5f 55  |that called OS_U|
00035900  70 43 61 6c 6c 2e 2e 2e  0a 23 49 6e 64 65 6e 74  |pCall....#Indent|
00035910  20 32 0a 8f 09 49 66 20  52 30 20 3d 20 2d 31 2c  | 2...If R0 = -1,|
00035920  20 74 68 65 6e 20 74 68  65 20 72 6f 75 74 69 6e  | then the routin|
00035930  65 20 63 61 6c 6c 73 20  3c 4f 53 5f 55 70 43 61  |e calls <OS_UpCa|
00035940  6c 6c 20 34 3d 3e 4f 53  5f 55 70 43 61 6c 6c 34  |ll 4=>OS_UpCall4|
00035950  3e 3b 20 69 74 20 74 68  65 6e 20 72 65 74 75 72  |>; it then retur|
00035960  6e 73 20 61 6e 20 65 72  72 6f 72 20 74 6f 20 73  |ns an error to s|
00035970  61 79 20 74 68 61 74 20  74 68 65 20 6d 65 64 69  |ay that the medi|
00035980  75 6d 20 77 61 73 6e 27  74 20 66 6f 75 6e 64 2e  |um wasn't found.|
00035990  0a 8f 09 49 66 20 52 30  20 3d 20 30 2c 20 74 68  |...If R0 = 0, th|
000359a0  65 6e 20 74 68 65 20 72  6f 75 74 69 6e 65 20 63  |en the routine c|
000359b0  68 65 63 6b 73 20 66 6f  72 20 79 6f 75 20 74 68  |hecks for you th|
000359c0  61 74 20 74 68 65 20 6d  65 64 69 75 6d 20 68 61  |at the medium ha|
000359d0  73 20 62 65 65 6e 20 63  68 61 6e 67 65 64 20 61  |s been changed a|
000359e0  6e 64 20 74 68 65 20 63  6f 72 72 65 63 74 20 6f  |nd the correct o|
000359f0  6e 65 20 73 75 70 70 6c  69 65 64 2e 20 49 66 20  |ne supplied. If |
00035a00  73 6f 2c 20 69 74 20 63  61 6c 6c 73 20 4f 53 5f  |so, it calls OS_|
00035a10  55 70 43 61 6c 6c 20 34  3b 20 6f 74 68 65 72 77  |UpCall 4; otherw|
00035a20  69 73 65 20 69 74 20 6a  75 73 74 20 63 61 6c 6c  |ise it just call|
00035a30  73 20 4f 53 5f 55 70 43  61 6c 6c 20 31 20 6f 72  |s OS_UpCall 1 or|
00035a40  20 32 20 61 67 61 69 6e  2c 20 61 66 74 65 72 20  | 2 again, after |
00035a50  69 6e 63 72 65 6d 65 6e  74 69 6e 67 20 52 34 0a  |incrementing R4.|
00035a60  23 49 6e 64 65 6e 74 0a  0a 54 68 65 20 74 69 6d  |#Indent..The tim|
00035a70  65 6f 75 74 20 70 65 72  69 6f 64 20 69 6e 20 52  |eout period in R|
00035a80  35 20 69 73 20 73 65 74  20 74 6f 20 61 20 73 6d  |5 is set to a sm|
00035a90  61 6c 6c 20 76 61 6c 75  65 20 66 6f 72 20 6d 65  |all value for me|
00035aa0  64 69 61 20 74 68 61 74  20 63 61 6e 20 64 65 74  |dia that can det|
00035ab0  65 63 74 20 77 68 65 6e  20 74 68 65 20 6d 65 64  |ect when the med|
00035ac0  69 75 6d 20 68 61 73 20  62 65 65 6e 20 63 68 61  |ium has been cha|
00035ad0  6e 67 65 64 20 28 73 75  63 68 20 61 20 66 6c 6f  |nged (such a flo|
00035ae0  70 70 79 20 64 69 73 63  20 64 72 69 76 65 73 29  |ppy disc drives)|
00035af0  20 61 6e 64 20 74 6f 20  61 20 6c 61 72 67 65 20  | and to a large |
00035b00  76 61 6c 75 65 20 28 74  79 70 69 63 61 6c 6c 79  |value (typically|
00035b10  20 26 46 46 46 46 46 46  46 46 29 20 66 6f 72 20  | &FFFFFFFF) for |
00035b20  6f 74 68 65 72 20 6d 65  64 69 61 2e 20 49 6e 20  |other media. In |
00035b30  74 68 65 20 66 6f 72 6d  65 72 20 63 61 73 65 2c  |the former case,|
00035b40  20 74 68 69 73 20 6d 65  61 6e 73 20 74 68 61 74  | this means that|
00035b50  20 52 49 53 43 20 4f 53  20 77 69 6c 6c 20 61 75  | RISC OS will au|
00035b60  74 6f 6d 61 74 69 63 61  6c 6c 79 20 64 65 74 65  |tomatically dete|
00035b70  63 74 20 74 68 61 74 20  6e 65 77 20 6d 65 64 69  |ct that new medi|
00035b80  75 6d 20 68 61 73 20 62  65 65 6e 20 73 75 70 70  |um has been supp|
00035b90  6c 69 65 64 2c 20 61 6e  64 20 63 68 65 63 6b 20  |lied, and check |
00035ba0  74 68 61 74 20 69 74 20  69 73 20 74 68 65 20 63  |that it is the c|
00035bb0  6f 72 72 65 63 74 20 6f  6e 65 2e 0a 0a 54 68 65  |orrect one...The|
00035bc0  20 6d 6f 73 74 20 63 6f  6d 6d 6f 6e 20 75 73 65  | most common use|
00035bd0  20 6f 66 20 4f 53 5f 55  70 43 61 6c 6c 20 31 20  | of OS_UpCall 1 |
00035be0  61 6e 64 20 32 20 69 73  20 74 6f 20 72 65 71 75  |and 2 is to requ|
00035bf0  65 73 74 20 74 68 61 74  20 61 20 66 6c 6f 70 70  |est that a flopp|
00035c00  79 20 64 69 73 63 20 69  73 20 69 6e 73 65 72 74  |y disc is insert|
00035c10  65 64 2e 00 44 41 54 41  af 04 00 00 4f 53 5f 55  |ed..DATA....OS_U|
00035c20  70 43 61 6c 6c 20 36 20  2d 20 53 6c 65 65 70 0a  |pCall 6 - Sleep.|
00035c30  3d 3e 09 52 30 20 3d 09  36 20 28 53 6c 65 65 70  |=>.R0 =.6 (Sleep|
00035c40  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00035c50  74 6f 20 70 6f 6c 6c 20  77 6f 72 64 20 28 69 6e  |to poll word (in|
00035c60  20 61 20 67 6c 6f 62 61  6c 20 6d 65 6d 6f 72 79  | a global memory|
00035c70  20 61 72 65 61 2c 20 65  67 20 74 68 65 20 52 4d  | area, eg the RM|
00035c80  41 29 0a 0a 3c 3d 20 52  30 20 3d 20 30 20 69 66  |A)..<= R0 = 0 if|
00035c90  20 55 70 43 61 6c 6c 20  63 6c 61 69 6d 65 64 0a  | UpCall claimed.|
00035ca0  0a 54 68 69 73 20 55 70  63 61 6c 6c 20 69 6e 66  |.This Upcall inf|
00035cb0  6f 72 6d 73 20 74 68 65  20 54 61 73 6b 57 69 6e  |orms the TaskWin|
00035cc0  64 6f 77 20 6d 6f 64 75  6c 65 20 74 68 61 74 20  |dow module that |
00035cd0  61 20 74 61 73 6b 20 77  61 6e 74 73 20 74 6f 20  |a task wants to |
00035ce0  73 6c 65 65 70 20 75 6e  74 69 6c 20 73 6f 6d 65  |sleep until some|
00035cf0  20 74 65 72 6d 69 6e 61  74 69 6f 6e 20 63 6f 6e  | termination con|
00035d00  64 69 74 69 6f 6e 20 69  73 20 6d 65 74 0a 0a 54  |dition is met..T|
00035d10  68 69 73 20 63 61 6c 6c  20 69 73 20 6d 61 64 65  |his call is made|
00035d20  20 62 79 20 61 20 74 61  73 6b 20 74 68 61 74 20  | by a task that |
00035d30  77 61 6e 74 73 20 74 6f  20 73 6c 65 65 70 20 75  |wants to sleep u|
00035d40  6e 74 69 6c 20 73 6f 6d  65 20 74 65 72 6d 69 6e  |ntil some termin|
00035d50  61 74 69 6f 6e 20 63 6f  6e 64 69 74 69 6f 6e 20  |ation condition |
00035d60  69 73 20 6d 65 74 2c 20  73 69 67 6e 61 6c 6c 65  |is met, signalle|
00035d70  64 20 62 79 20 74 68 65  20 63 6f 6e 74 65 6e 74  |d by the content|
00035d80  73 20 6f 66 20 74 68 65  20 70 6f 6c 6c 20 77 6f  |s of the poll wo|
00035d90  72 64 20 62 65 63 6f 6d  69 6e 67 20 6e 6f 6e 20  |rd becoming non |
00035da0  7a 65 72 6f 2e 20 49 74  20 69 73 20 6e 6f 74 20  |zero. It is not |
00035db0  61 76 61 69 6c 61 62 6c  65 20 69 6e 20 52 49 53  |available in RIS|
00035dc0  43 20 4f 53 20 32 2e 0a  0a 43 6f 6e 74 72 6f 6c  |C OS 2...Control|
00035dd0  20 6d 61 79 20 72 65 74  75 72 6e 20 74 6f 20 74  | may return to t|
00035de0  68 65 20 74 61 73 6b 20  62 65 66 6f 72 65 20 74  |he task before t|
00035df0  68 65 20 70 6f 6c 6c 20  77 6f 72 64 20 62 65 63  |he poll word bec|
00035e00  6f 6d 65 73 20 6e 6f 6e  20 7a 65 72 6f 2e 0a 0a  |omes non zero...|
00035e10  57 68 69 6c 65 20 74 68  65 20 74 61 73 6b 20 69  |While the task i|
00035e20  73 20 73 6c 65 65 70 69  6e 67 20 6f 74 68 65 72  |s sleeping other|
00035e30  20 74 61 73 6b 73 20 77  69 6c 6c 20 63 6f 6e 74  | tasks will cont|
00035e40  69 6e 75 65 20 74 6f 20  62 65 20 70 6f 6c 6c 65  |inue to be polle|
00035e50  64 20 62 79 20 74 68 65  20 57 69 6d 70 2e 0a 0a  |d by the Wimp...|
00035e60  49 66 20 74 68 65 20 74  65 72 6d 69 6e 61 74 69  |If the terminati|
00035e70  6f 6e 20 63 6f 6e 64 69  74 69 6f 6e 20 63 61 6e  |on condition can|
00035e80  20 62 65 20 72 65 63 6f  67 6e 69 73 65 64 20 65  | be recognised e|
00035e90  78 74 65 72 6e 61 6c 6c  79 20 28 69 65 20 69 6e  |xternally (ie in|
00035ea0  20 61 6e 6f 74 68 65 72  20 57 69 6d 70 20 74 61  | another Wimp ta|
00035eb0  73 6b 20 6f 72 20 75 6e  64 65 72 20 69 6e 74 65  |sk or under inte|
00035ec0  72 72 75 70 74 29 20 68  65 6e 63 65 20 63 61 75  |rrupt) hence cau|
00035ed0  73 69 6e 67 20 74 68 65  20 70 6f 6c 6c 20 77 6f  |sing the poll wo|
00035ee0  72 64 20 74 6f 20 62 65  20 73 65 74 20 6e 6f 6e  |rd to be set non|
00035ef0  20 7a 65 72 6f 2c 20 74  68 65 20 63 61 6c 6c 69  | zero, the calli|
00035f00  6e 67 20 74 61 73 6b 20  73 68 6f 75 6c 64 20 73  |ng task should s|
00035f10  65 74 20 74 68 65 20 70  6f 6c 6c 20 77 6f 72 64  |et the poll word|
00035f20  20 74 6f 20 7a 65 72 6f  20 6f 6e 20 65 6e 74 72  | to zero on entr|
00035f30  79 2e 20 4f 74 68 65 72  77 69 73 65 20 74 68 65  |y. Otherwise the|
00035f40  20 70 6f 6c 6c 20 77 6f  72 64 20 6d 75 73 74 20  | poll word must |
00035f50  62 65 20 6e 6f 6e 20 7a  65 72 6f 20 6f 6e 20 65  |be non zero on e|
00035f60  6e 74 72 79 2c 20 73 6f  20 74 68 61 74 20 74 68  |ntry, so that th|
00035f70  65 20 63 6f 6e 72 6f 6c  20 77 69 6c 6c 20 72 65  |e conrol will re|
00035f80  74 75 72 6e 20 74 6f 20  74 68 65 20 63 61 6c 6c  |turn to the call|
00035f90  69 6e 67 20 74 61 73 6b  20 61 66 74 65 72 20 65  |ing task after e|
00035fa0  61 63 68 20 3c 57 69 6d  70 20 50 6f 6c 6c 3d 3e  |ach <Wimp Poll=>|
00035fb0  57 69 6d 70 5f 50 6f 6c  6c 3e 2e 0a 0a 4e 6f 74  |Wimp_Poll>...Not|
00035fc0  65 20 74 68 61 74 20 61  20 74 61 73 6b 20 6d 75  |e that a task mu|
00035fd0  73 6e 27 74 20 75 73 65  20 74 68 69 73 20 55 70  |sn't use this Up|
00035fe0  43 61 6c 6c 20 69 66 20  69 74 27 73 20 6e 6f 74  |Call if it's not|
00035ff0  20 72 65 2d 65 6e 74 72  61 6e 74 2e 0a 0a 54 68  | re-entrant...Th|
00036000  65 20 63 61 6c 6c 69 6e  67 20 74 61 73 6b 20 6d  |e calling task m|
00036010  75 73 74 20 62 65 20 72  75 6e 6e 69 6e 67 20 69  |ust be running i|
00036020  6e 20 61 20 74 61 73 6b  20 77 69 6e 64 6f 77 2e  |n a task window.|
00036030  20 54 68 65 20 74 61 73  6b 20 77 69 6e 64 6f 77  | The task window|
00036040  20 6d 6f 64 75 6c 65 20  69 6e 74 65 72 63 65 70  | module intercep|
00036050  74 73 20 74 68 69 73 20  55 70 43 61 6c 6c 3b 20  |ts this UpCall; |
00036060  79 6f 75 20 73 68 6f 75  6c 64 20 6e 6f 74 20 64  |you should not d|
00036070  6f 20 73 6f 20 79 6f 75  72 73 65 6c 66 2e 20 54  |o so yourself. T|
00036080  68 65 73 65 20 74 77 6f  20 72 65 73 74 72 69 63  |hese two restric|
00036090  74 69 6f 6e 73 20 6d 61  79 20 62 65 20 72 65 6d  |tions may be rem|
000360a0  6f 76 65 64 20 69 6e 20  66 75 74 75 72 65 20 76  |oved in future v|
000360b0  65 72 73 69 6f 6e 73 20  6f 66 20 52 49 53 43 20  |ersions of RISC |
000360c0  4f 53 2e 00 44 41 54 41  ca 02 00 00 4f 53 5f 55  |OS..DATA....OS_U|
000360d0  70 43 61 6c 6c 20 37 20  2d 20 53 6c 65 65 70 20  |pCall 7 - Sleep |
000360e0  4e 6f 20 4d 6f 72 65 0a  3d 3e 09 52 30 20 3d 09  |No More.=>.R0 =.|
000360f0  37 20 28 53 6c 65 65 70  20 6e 6f 20 6d 6f 72 65  |7 (Sleep no more|
00036100  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00036110  74 6f 20 70 6f 6c 6c 20  77 6f 72 64 20 28 69 6e  |to poll word (in|
00036120  20 61 20 67 6c 6f 62 61  6c 20 6d 65 6d 6f 72 79  | a global memory|
00036130  20 61 72 65 61 2c 20 65  67 20 74 68 65 20 52 4d  | area, eg the RM|
00036140  41 29 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |A)..<=.R0 preser|
00036150  76 65 64 20 69 66 20 56  20 66 6c 61 67 20 63 6c  |ved if V flag cl|
00036160  65 61 72 0a 09 52 30 20  3d 09 70 6f 69 6e 74 65  |ear..R0 =.pointe|
00036170  72 20 74 6f 20 65 72 72  6f 72 20 62 6c 6f 63 6b  |r to error block|
00036180  20 69 66 20 56 20 66 6c  61 67 20 73 65 74 0a 0a  | if V flag set..|
00036190  54 68 69 73 20 55 70 63  61 6c 6c 20 69 6e 66 6f  |This Upcall info|
000361a0  72 6d 73 20 74 68 65 20  54 61 73 6b 57 69 6e 64  |rms the TaskWind|
000361b0  6f 77 20 6d 6f 64 75 6c  65 20 74 68 61 74 20 61  |ow module that a|
000361c0  6e 20 6f 70 65 6e 20 70  69 70 65 20 68 61 73 20  |n open pipe has |
000361d0  62 65 65 6e 20 63 6c 6f  73 65 64 20 6f 72 20 64  |been closed or d|
000361e0  65 6c 65 74 65 64 2e 20  49 74 20 69 73 20 6d 61  |eleted. It is ma|
000361f0  64 65 20 62 79 20 50 69  70 65 46 53 20 69 66 20  |de by PipeFS if |
00036200  61 6e 20 6f 70 65 6e 20  70 69 70 65 20 69 73 20  |an open pipe is |
00036210  63 6c 6f 73 65 64 20 6f  72 20 64 65 6c 65 74 65  |closed or delete|
00036220  64 2e 20 49 74 27 73 20  6e 6f 74 20 61 76 61 69  |d. It's not avai|
00036230  6c 61 62 6c 65 20 69 6e  20 52 49 53 43 20 4f 53  |lable in RISC OS|
00036240  20 32 2e 0a 0a 54 68 65  20 54 61 73 6b 20 57 69  | 2...The Task Wi|
00036250  6e 64 6f 77 20 6d 6f 64  75 6c 65 20 74 68 65 6e  |ndow module then|
00036260  20 74 72 61 70 73 20 74  68 69 73 20 61 6e 64 20  | traps this and |
00036270  6f 62 6a 65 63 74 73 20  69 66 20 61 6e 79 20 6f  |objects if any o|
00036280  66 20 69 74 73 20 74 61  73 6b 73 20 61 72 65 20  |f its tasks are |
00036290  63 75 72 72 65 6e 74 6c  79 20 77 61 69 74 69 6e  |currently waitin|
000362a0  67 20 66 6f 72 20 74 68  65 20 70 6f 6c 6c 20 77  |g for the poll w|
000362b0  6f 72 64 20 72 65 6c 61  74 65 64 20 74 6f 20 74  |ord related to t|
000362c0  68 61 74 20 70 69 70 65  20 74 6f 20 62 65 63 6f  |hat pipe to beco|
000362d0  6d 65 20 6e 6f 6e 20 7a  65 72 6f 2c 20 62 79 20  |me non zero, by |
000362e0  72 65 74 75 72 6e 69 6e  67 20 61 6e 20 65 72 72  |returning an err|
000362f0  6f 72 2e 0a 0a 54 68 69  73 20 70 72 65 76 65 6e  |or...This preven|
00036300  74 73 20 61 20 2a 53 68  75 74 20 63 6f 6d 6d 61  |ts a *Shut comma|
00036310  6e 64 20 66 72 6f 6d 20  64 65 6c 65 74 69 6e 67  |nd from deleting|
00036320  20 74 68 65 20 77 6f 72  6b 73 70 61 63 65 20 77  | the workspace w|
00036330  68 69 63 68 20 69 73 20  62 65 69 6e 67 20 61 63  |hich is being ac|
00036340  63 65 73 73 65 64 20 62  79 20 74 68 65 20 54 61  |cessed by the Ta|
00036350  73 6b 20 57 69 6e 64 6f  77 2c 20 77 68 69 63 68  |sk Window, which|
00036360  20 63 6f 75 6c 64 20 70  6f 74 65 6e 74 69 61 6c  | could potential|
00036370  6c 79 20 63 61 75 73 65  64 20 61 64 64 72 65 73  |ly caused addres|
00036380  73 20 65 78 63 65 70 74  69 6f 6e 73 2e 0a 00 00  |s exceptions....|
00036390  44 41 54 41 96 01 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
000363a0  6c 20 38 20 2d 20 42 75  66 66 65 72 20 66 69 6c  |l 8 - Buffer fil|
000363b0  6c 69 6e 67 0a 3d 3e 09  52 30 20 3d 09 38 20 28  |ling.=>.R0 =.8 (|
000363c0  42 75 66 66 65 72 20 66  69 6c 6c 69 6e 67 29 0a  |Buffer filling).|
000363d0  09 52 31 20 3d 09 62 75  66 66 65 72 20 68 61 6e  |.R1 =.buffer han|
000363e0  64 6c 65 0a 09 52 32 20  3d 09 30 0a 0a 3c 3d 09  |dle..R2 =.0..<=.|
000363f0  41 6c 6c 20 72 65 67 69  73 74 65 72 73 20 70 72  |All registers pr|
00036400  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 55 70  |eserved..This Up|
00036410  63 61 6c 6c 20 69 6e 66  6f 72 6d 73 20 79 6f 75  |call informs you|
00036420  20 74 68 61 74 20 61 20  62 75 66 66 65 72 27 73  | that a buffer's|
00036430  20 66 72 65 65 20 73 70  61 63 65 20 68 61 73 20  | free space has |
00036440  62 65 63 6f 6d 65 20 6c  65 73 73 20 74 68 61 6e  |become less than|
00036450  20 69 74 73 20 73 70 65  63 69 66 69 65 64 20 74  | its specified t|
00036460  68 72 65 73 68 6f 6c 64  2e 20 54 68 65 20 42 75  |hreshold. The Bu|
00036470  66 66 65 72 20 4d 61 6e  61 67 65 72 20 69 73 73  |ffer Manager iss|
00036480  75 65 73 20 74 68 69 73  20 63 61 6c 6c 20 77 68  |ues this call wh|
00036490  65 6e 20 64 61 74 61 20  69 73 20 69 6e 73 65 72  |en data is inser|
000364a0  74 65 64 20 69 6e 74 6f  20 74 68 65 20 73 70 65  |ted into the spe|
000364b0  63 69 66 69 65 64 20 62  75 66 66 65 72 2c 20 61  |cified buffer, a|
000364c0  6e 64 20 74 68 65 20 66  72 65 65 20 73 70 61 63  |nd the free spac|
000364d0  65 20 62 65 63 6f 6d 65  73 20 6c 65 73 73 20 74  |e becomes less t|
000364e0  68 61 6e 20 69 74 73 20  63 75 72 72 65 6e 74 20  |han its current |
000364f0  74 68 72 65 73 68 6f 6c  64 2e 0a 0a 54 68 69 73  |threshold...This|
00036500  20 63 61 6c 6c 20 69 73  20 6e 65 76 65 72 20 69  | call is never i|
00036510  73 73 75 65 64 20 75 6e  64 65 72 20 52 49 53 43  |ssued under RISC|
00036520  20 4f 53 20 32 2e 00 00  44 41 54 41 b6 01 00 00  | OS 2...DATA....|
00036530  4f 53 5f 55 70 43 61 6c  6c 20 39 20 2d 20 42 75  |OS_UpCall 9 - Bu|
00036540  66 66 65 72 20 65 6d 70  74 79 69 6e 67 0a 3d 3e  |ffer emptying.=>|
00036550  09 52 30 20 3d 09 39 20  28 42 75 66 66 65 72 a0  |.R0 =.9 (Buffer.|
00036560  65 6d 70 74 79 69 6e 67  29 0a 09 52 31 20 3d 09  |emptying)..R1 =.|
00036570  62 75 66 66 65 72 20 68  61 6e 64 6c 65 0a 09 52  |buffer handle..R|
00036580  32 20 3d 09 2d 31 0a 0a  3c 3d 09 41 6c 6c 20 72  |2 =.-1..<=.All r|
00036590  65 67 69 73 74 65 72 73  20 70 72 65 73 65 72 76  |egisters preserv|
000365a0  65 64 0a 0a 54 68 69 73  20 55 70 63 61 6c 6c 20  |ed..This Upcall |
000365b0  69 6e 66 6f 72 6d 73 20  79 6f 75 20 74 68 61 74  |informs you that|
000365c0  20 61 20 62 75 66 66 65  72 27 73 20 66 72 65 65  | a buffer's free|
000365d0  20 73 70 61 63 65 20 68  61 73 20 62 65 63 6f 6d  | space has becom|
000365e0  65 20 67 72 65 61 74 65  72 20 74 68 61 6e 20 6f  |e greater than o|
000365f0  72 20 65 71 75 61 6c 20  74 6f 20 69 74 73 20 73  |r equal to its s|
00036600  70 65 63 69 66 69 65 64  20 74 68 72 65 73 68 6f  |pecified thresho|
00036610  6c 64 2e 20 54 68 65 20  42 75 66 66 65 72 20 4d  |ld. The Buffer M|
00036620  61 6e 61 67 65 72 20 69  73 73 75 65 73 20 74 68  |anager issues th|
00036630  69 73 20 63 61 6c 6c 20  77 68 65 6e 20 64 61 74  |is call when dat|
00036640  61 20 69 73 20 72 65 6d  6f 76 65 64 20 66 72 6f  |a is removed fro|
00036650  6d 20 74 68 65 20 73 70  65 63 69 66 69 65 64 20  |m the specified |
00036660  62 75 66 66 65 72 2c 20  61 6e 64 20 74 68 65 20  |buffer, and the |
00036670  66 72 65 65 20 73 70 61  63 65 20 62 65 63 6f 6d  |free space becom|
00036680  65 73 20 67 72 65 61 74  65 72 20 74 68 61 6e 20  |es greater than |
00036690  6f 72 20 65 71 75 61 6c  20 74 6f 20 69 74 73 20  |or equal to its |
000366a0  63 75 72 72 65 6e 74 20  74 68 72 65 73 68 6f 6c  |current threshol|
000366b0  64 2e 0a 0a 54 68 69 73  20 63 61 6c 6c 20 69 73  |d...This call is|
000366c0  20 6e 65 76 65 72 20 69  73 73 75 65 64 20 75 6e  | never issued un|
000366d0  64 65 72 20 52 49 53 43  20 4f 53 20 32 2e 00 00  |der RISC OS 2...|
000366e0  44 49 52 24 0c 01 00 00  0c 01 00 00 ec 67 03 00  |DIR$.........g..|
000366f0  46 ff ff ff 53 6b 60 f5  a0 02 00 00 13 00 00 00  |F...Sk`.........|
00036700  00 00 00 00 21 52 6f 6f  74 00 00 00 8c 6a 03 00  |....!Root....j..|
00036710  45 fd ff ff 2e 02 ea ff  5b 01 00 00 13 00 00 00  |E.......[.......|
00036720  00 00 00 00 31 00 00 00  e8 6b 03 00 45 fd ff ff  |....1....k..E...|
00036730  af fd e9 ff 78 01 00 00  13 00 00 00 00 00 00 00  |....x...........|
00036740  33 00 00 00 60 6d 03 00  46 fd ff ff 99 ad 68 88  |3...`m..F.....h.|
00036750  bb 01 00 00 13 00 00 00  00 00 00 00 39 00 00 00  |............9...|
00036760  1c 6f 03 00 46 fd ff ff  c2 c7 69 88 5c 02 00 00  |.o..F.....i.\...|
00036770  13 00 00 00 00 00 00 00  31 30 00 00 78 71 03 00  |........10..xq..|
00036780  46 fd ff ff 46 e5 69 88  8d 02 00 00 13 00 00 00  |F...F.i.........|
00036790  00 00 00 00 31 31 00 00  08 74 03 00 46 fd ff ff  |....11...t..F...|
000367a0  1e 04 6a 88 7c 02 00 00  13 00 00 00 00 00 00 00  |..j.|...........|
000367b0  31 32 00 00 84 76 03 00  46 fd ff ff 43 70 5f f5  |12...v..F...Cp_.|
000367c0  5a 03 00 00 13 00 00 00  00 00 00 00 35 00 00 00  |Z...........5...|
000367d0  e0 79 03 00 46 fd ff ff  2c 78 60 f5 1e 04 00 00  |.y..F...,x`.....|
000367e0  13 00 00 00 00 00 00 00  38 00 00 00 44 41 54 41  |........8...DATA|
000367f0  a0 02 00 00 4f 53 5f 47  42 50 42 20 20 28 26 30  |....OS_GBPB  (&0|
00036800  43 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 54  |C).#Parent OS_.T|
00036810  68 69 73 20 53 57 49 20  52 65 61 64 2f 57 72 69  |his SWI Read/Wri|
00036820  74 65 73 20 61 20 62 6c  6f 63 6b 20 66 72 6f 6d  |tes a block from|
00036830  2f 74 6f 20 61 6e 20 6f  70 65 6e 20 66 69 6c 65  |/to an open file|
00036840  0a 0a 52 30 09 41 63 74  69 6f 6e 0a 23 4c 69 6e  |..R0.Action.#Lin|
00036850  65 0a 31 09 3c 57 72 69  74 65 20 62 79 74 65 73  |e.1.<Write bytes|
00036860  20 74 6f 20 67 69 76 65  6e 20 70 74 72 3d 3e 4f  | to given ptr=>O|
00036870  53 5f 47 42 50 42 31 3e  0a 32 09 3c 57 72 69 74  |S_GBPB1>.2.<Writ|
00036880  65 20 62 79 74 65 73 20  74 6f 20 63 75 72 72 65  |e bytes to curre|
00036890  6e 74 20 70 74 72 3d 3e  4f 53 5f 47 42 50 42 31  |nt ptr=>OS_GBPB1|
000368a0  3e 0a 33 09 3c 52 65 61  64 20 62 79 74 65 73 20  |>.3.<Read bytes |
000368b0  66 72 6f 6d 20 67 69 76  65 6e 20 70 74 72 3d 3e  |from given ptr=>|
000368c0  4f 53 5f 47 42 50 42 33  3e 0a 34 09 3c 52 65 61  |OS_GBPB3>.4.<Rea|
000368d0  64 20 62 79 74 65 73 20  66 72 6f 6d 20 63 75 72  |d bytes from cur|
000368e0  72 65 6e 74 20 70 74 72  3d 3e 4f 53 5f 47 42 50  |rent ptr=>OS_GBP|
000368f0  42 33 3e 0a 35 09 3c 52  65 61 64 20 6e 61 6d 65  |B3>.5.<Read name|
00036900  20 26 20 62 6f 6f 74 20  6f 70 74 69 6f 6e 73 3d  | & boot options=|
00036910  3e 4f 53 5f 47 42 50 42  35 3e 0a 36 09 3c 52 65  |>OS_GBPB5>.6.<Re|
00036920  61 64 20 63 75 72 72 65  6e 74 20 64 69 72 20 61  |ad current dir a|
00036930  6e 64 20 70 72 69 76 69  6c 65 67 65 20 62 79 74  |nd privilege byt|
00036940  65 3d 3e 4f 53 5f 47 42  50 42 35 3e 0a 37 09 3c  |e=>OS_GBPB5>.7.<|
00036950  52 65 61 64 20 6c 69 62  72 61 72 79 20 64 69 72  |Read library dir|
00036960  20 61 6e 64 20 70 72 69  76 69 6c 65 67 65 20 62  | and privilege b|
00036970  79 74 65 3d 3e 4f 53 5f  47 42 50 42 35 3e 0a 38  |yte=>OS_GBPB5>.8|
00036980  09 3c 52 65 61 64 20 65  6e 74 72 69 65 73 20 66  |.<Read entries f|
00036990  72 6f 6d 20 63 75 72 72  65 6e 74 20 64 69 72 3d  |rom current dir=|
000369a0  3e 4f 53 5f 47 42 50 42  38 3e 0a 39 09 3c 52 65  |>OS_GBPB8>.9.<Re|
000369b0  61 64 20 65 6e 74 72 69  65 73 20 66 72 6f 6d 20  |ad entries from |
000369c0  67 69 76 65 6e 20 64 69  72 3d 3e 4f 53 5f 47 42  |given dir=>OS_GB|
000369d0  50 42 39 3e 0a 31 30 09  3c 52 65 61 64 20 65 6e  |PB9>.10.<Read en|
000369e0  74 72 69 65 73 20 61 6e  64 20 69 6e 66 6f 20 66  |tries and info f|
000369f0  72 6f 6d 20 67 69 76 65  6e 20 64 69 72 3d 3e 4f  |rom given dir=>O|
00036a00  53 5f 47 42 50 42 31 30  3e 0a 31 31 09 3c 52 65  |S_GBPB10>.11.<Re|
00036a10  61 64 20 65 6e 74 72 69  65 73 20 61 6e 64 20 66  |ad entries and f|
00036a20  75 6c 6c 20 69 6e 66 6f  20 66 72 6f 6d 20 67 69  |ull info from gi|
00036a30  76 65 6e 20 64 69 72 3d  3e 4f 53 5f 47 42 50 42  |ven dir=>OS_GBPB|
00036a40  31 31 3e 0a 31 32 09 3c  52 65 61 64 20 65 6e 74  |11>.12.<Read ent|
00036a50  72 69 65 73 20 61 6e 64  20 66 75 6c 6c 20 69 6e  |ries and full in|
00036a60  66 6f 20 77 69 74 68 20  66 69 6c 65 74 79 70 65  |fo with filetype|
00036a70  20 66 72 6f 6d 20 67 69  76 65 6e 20 64 69 72 3d  | from given dir=|
00036a80  3e 4f 53 5f 47 42 50 42  31 32 3e 0a 44 41 54 41  |>OS_GBPB12>.DATA|
00036a90  5b 01 00 00 4f 53 5f 47  42 50 42 20 31 20 61 6e  |[...OS_GBPB 1 an|
00036aa0  64 20 32 0a 3d 3e 09 52  30 20 3d 20 31 20 6f 72  |d 2.=>.R0 = 1 or|
00036ab0  20 32 0a 09 52 31 20 3d  20 66 69 6c 65 20 68 61  | 2..R1 = file ha|
00036ac0  6e 64 6c 65 0a 09 52 32  20 3d 20 62 75 66 66 65  |ndle..R2 = buffe|
00036ad0  72 0a 09 52 33 20 3d 20  62 79 74 65 73 20 74 6f  |r..R3 = bytes to|
00036ae0  20 77 72 69 74 65 0a 49  66 20 52 30 20 3d 20 31  | write.If R0 = 1|
00036af0  20 3a 0a 09 52 34 20 3d  20 66 69 6c 65 20 70 6f  | :..R4 = file po|
00036b00  69 6e 74 65 72 0a 0a 5c  3c 3d 09 52 32 20 3d 20  |inter..\<=.R2 = |
00036b10  70 74 72 20 74 6f 20 61  66 74 65 72 20 62 75 66  |ptr to after buf|
00036b20  66 65 72 0a 09 52 33 20  3d 20 30 2c 20 6f 72 20  |fer..R3 = 0, or |
00036b30  6e 72 20 6f 66 20 62 79  74 65 73 20 4e 4f 54 20  |nr of bytes NOT |
00036b40  74 72 61 6e 73 66 65 72  72 65 64 0a 09 52 34 20  |transferred..R4 |
00036b50  3d 20 6e 65 77 20 66 69  6c 65 70 6f 69 6e 74 65  |= new filepointe|
00036b60  72 0a 09 43 20 69 73 20  63 6c 65 61 72 0a 0a 54  |r..C is clear..T|
00036b70  68 65 20 27 45 4f 46 2d  65 72 72 6f 72 2d 6f 6e  |he 'EOF-error-on|
00036b80  2d 6e 65 78 74 2d 72 65  61 64 27 20 66 6c 61 67  |-next-read' flag|
00036b90  20 69 73 20 63 6c 65 61  72 65 64 2e 0a 0a 45 72  | is cleared...Er|
00036ba0  72 6f 72 20 69 73 20 67  65 6e 65 72 61 74 65 64  |ror is generated|
00036bb0  20 69 66 20 69 6e 76 61  6c 69 64 20 66 69 6c 65  | if invalid file|
00036bc0  20 68 61 6e 64 6c 65 2c  20 64 69 72 65 63 74 6f  | handle, directo|
00036bd0  72 79 2c 20 6f 72 20 6e  6f 20 77 72 69 74 65 20  |ry, or no write |
00036be0  61 63 63 65 73 73 2e 00  44 41 54 41 78 01 00 00  |access..DATAx...|
00036bf0  4f 53 5f 47 42 50 42 20  33 20 61 6e 64 20 34 0a  |OS_GBPB 3 and 4.|
00036c00  3d 3e 09 52 30 20 3d 20  33 20 6f 72 20 34 0a 09  |=>.R0 = 3 or 4..|
00036c10  52 31 20 3d 20 66 69 6c  65 20 68 61 6e 64 6c 65  |R1 = file handle|
00036c20  0a 09 52 32 20 3d 20 70  74 72 20 74 6f 20 62 75  |..R2 = ptr to bu|
00036c30  66 66 65 72 0a 09 52 33  20 3d 20 62 79 74 65 73  |ffer..R3 = bytes|
00036c40  20 74 6f 20 72 65 61 64  0a 49 66 20 52 30 20 3d  | to read.If R0 =|
00036c50  20 33 20 3a 0a 09 52 34  20 3d 20 66 69 6c 65 20  | 3 :..R4 = file |
00036c60  70 6f 69 6e 74 65 72 0a  0a 5c 3c 3d 09 52 32 20  |pointer..\<=.R2 |
00036c70  3d 20 70 74 72 20 74 6f  20 61 66 74 65 72 20 62  |= ptr to after b|
00036c80  75 66 66 65 72 0a 09 52  33 20 3d 20 6e 72 20 6f  |uffer..R3 = nr o|
00036c90  66 20 62 79 74 65 73 20  4e 4f 54 20 74 72 61 6e  |f bytes NOT tran|
00036ca0  73 66 65 72 72 65 64 0a  09 52 34 20 3d 20 6e 65  |sferred..R4 = ne|
00036cb0  77 20 66 69 6c 65 70 6f  69 6e 74 65 72 0a 09 43  |w filepointer..C|
00036cc0  20 69 73 20 63 6c 65 61  72 20 69 66 20 52 33 20  | is clear if R3 |
00036cd0  3d 20 30 2c 20 65 6c 73  65 20 69 74 20 69 73 20  |= 0, else it is |
00036ce0  73 65 74 2e 0a 0a 54 68  65 20 27 45 4f 46 2d 65  |set...The 'EOF-e|
00036cf0  72 72 6f 72 2d 6f 6e 2d  6e 65 78 74 2d 72 65 61  |rror-on-next-rea|
00036d00  64 27 20 66 6c 61 67 20  69 73 20 63 6c 65 61 72  |d' flag is clear|
00036d10  65 64 2e 0a 0a 45 72 72  6f 72 20 69 73 20 67 65  |ed...Error is ge|
00036d20  6e 65 72 61 74 65 64 20  69 66 20 69 6e 76 61 6c  |nerated if inval|
00036d30  69 64 20 66 69 6c 65 20  68 61 6e 64 6c 65 2c 20  |id file handle, |
00036d40  6f 72 20 64 69 72 65 63  74 6f 72 79 2c 20 6f 72  |or directory, or|
00036d50  20 6e 6f 20 72 65 61 64  20 61 63 63 65 73 73 2e  | no read access.|
00036d60  44 41 54 41 bb 01 00 00  4f 53 5f 47 42 50 42 20  |DATA....OS_GBPB |
00036d70  20 39 0a 3d 3e 09 52 30  20 3d 09 39 0a 09 52 31  | 9.=>.R0 =.9..R1|
00036d80  20 3d 09 64 69 72 65 63  74 6f 72 79 0a 09 52 32  | =.directory..R2|
00036d90  20 3d 09 62 75 66 66 65  72 0a 09 52 33 20 3d 09  | =.buffer..R3 =.|
00036da0  6e 6f 20 6f 66 20 6f 62  6a 65 63 74 73 20 74 6f  |no of objects to|
00036db0  20 72 65 61 64 0a 09 52  34 20 3d 09 77 68 65 72  | read..R4 =.wher|
00036dc0  65 20 74 6f 20 73 74 61  72 74 20 28 30 20 66 69  |e to start (0 fi|
00036dd0  72 73 74 20 74 69 6d 65  29 0a 09 52 35 20 3d 09  |rst time)..R5 =.|
00036de0  6c 65 6e 67 74 68 20 6f  66 20 62 75 66 66 65 72  |length of buffer|
00036df0  0a 09 52 36 20 3d 09 77  69 6c 64 63 61 72 64 65  |..R6 =.wildcarde|
00036e00  64 20 6e 61 6d 65 20 74  6f 20 6d 61 74 63 68 20  |d name to match |
00036e10  28 69 66 20 30 20 6f 72  20 65 6d 70 74 79 20 73  |(if 0 or empty s|
00036e20  74 72 69 6e 67 2c 20 22  2a 22 20 69 73 20 75 73  |tring, "*" is us|
00036e30  65 64 29 0a 5c 3c 3d 09  52 33 20 3d 09 6e 6f 20  |ed).\<=.R3 =.no |
00036e40  6f 66 20 6f 62 6a 65 63  74 73 20 72 65 61 64 0a  |of objects read.|
00036e50  09 52 34 20 3d 09 77 68  65 72 65 20 74 6f 20 63  |.R4 =.where to c|
00036e60  6f 6e 74 69 6e 75 65 20  28 2d 31 20 66 6f 72 20  |ontinue (-1 for |
00036e70  6e 6f 20 6d 6f 72 65 29  0a 09 43 20 66 6c 61 67  |no more)..C flag|
00036e80  20 69 73 20 63 6c 65 61  72 20 69 66 20 52 33 20  | is clear if R3 |
00036e90  3d 20 30 2c 20 65 6c 73  65 20 69 74 20 69 73 20  |= 0, else it is |
00036ea0  73 65 74 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |set..This SWI re|
00036eb0  61 64 73 20 66 69 6c 65  6e 61 6d 65 20 65 6e 74  |ads filename ent|
00036ec0  72 69 65 73 20 66 72 6f  6d 20 74 68 65 20 73 70  |ries from the sp|
00036ed0  65 63 69 66 69 65 64 20  64 69 72 65 63 74 6f 72  |ecified director|
00036ee0  79 2c 20 72 65 74 75 72  6e 69 6e 67 20 61 20 67  |y, returning a g|
00036ef0  72 6f 75 70 20 6f 66 20  30 2d 74 65 72 6d 69 6e  |roup of 0-termin|
00036f00  61 74 65 64 20 73 74 72  69 6e 67 20 69 6e 20 74  |ated string in t|
00036f10  68 65 20 62 75 66 66 65  72 2e 0a 00 44 41 54 41  |he buffer...DATA|
00036f20  5c 02 00 00 4f 53 5f 47  42 50 42 20 20 31 30 0a  |\...OS_GBPB  10.|
00036f30  3d 3e 09 52 30 20 3d 09  31 30 0a 09 52 31 20 3d  |=>.R0 =.10..R1 =|
00036f40  09 64 69 72 65 63 74 6f  72 79 0a 09 52 32 20 3d  |.directory..R2 =|
00036f50  09 3c 62 75 66 66 65 72  3d 3e 2e 62 75 66 66 65  |.<buffer=>.buffe|
00036f60  72 3e 0a 09 52 33 20 3d  09 6e 6f 20 6f 66 20 6f  |r>..R3 =.no of o|
00036f70  62 6a 65 63 74 73 20 74  6f 20 72 65 61 64 0a 09  |bjects to read..|
00036f80  52 34 20 3d 09 77 68 65  72 65 20 74 6f 20 73 74  |R4 =.where to st|
00036f90  61 72 74 20 28 30 20 66  69 72 73 74 20 74 69 6d  |art (0 first tim|
00036fa0  65 29 0a 09 52 35 20 3d  09 6c 65 6e 67 74 68 20  |e)..R5 =.length |
00036fb0  6f 66 20 62 75 66 66 65  72 0a 09 52 36 20 3d 09  |of buffer..R6 =.|
00036fc0  77 69 6c 64 63 61 72 64  65 64 20 6e 61 6d 65 20  |wildcarded name |
00036fd0  74 6f 20 6d 61 74 63 68  20 28 69 66 20 30 20 6f  |to match (if 0 o|
00036fe0  72 20 65 6d 70 74 79 20  73 74 72 69 6e 67 2c 20  |r empty string, |
00036ff0  22 2a 22 20 69 73 20 75  73 65 64 29 0a 5c 3c 3d  |"*" is used).\<=|
00037000  09 52 33 20 3d 09 6e 6f  20 6f 66 20 6f 62 6a 65  |.R3 =.no of obje|
00037010  63 74 73 20 72 65 61 64  0a 09 52 34 20 3d 09 77  |cts read..R4 =.w|
00037020  68 65 72 65 20 74 6f 20  63 6f 6e 74 69 6e 75 65  |here to continue|
00037030  20 28 2d 31 20 66 6f 72  20 6e 6f 20 6d 6f 72 65  | (-1 for no more|
00037040  29 0a 09 43 20 66 6c 61  67 20 69 73 20 63 6c 65  |)..C flag is cle|
00037050  61 72 20 69 66 20 52 33  20 3d 20 30 2c 20 65 6c  |ar if R3 = 0, el|
00037060  73 65 20 69 74 20 69 73  20 73 65 74 0a 0a 54 68  |se it is set..Th|
00037070  69 73 20 53 57 49 20 72  65 61 64 73 20 65 6e 74  |is SWI reads ent|
00037080  72 69 65 73 20 66 72 6f  6d 20 74 68 65 20 73 70  |ries from the sp|
00037090  65 63 69 66 69 65 64 20  64 69 72 65 63 74 6f 72  |ecified director|
000370a0  79 2e 0a 23 73 75 62 70  61 67 65 20 62 75 66 66  |y..#subpage buff|
000370b0  65 72 0a 4f 53 5f 47 42  50 42 20 31 30 20 62 75  |er.OS_GBPB 10 bu|
000370c0  66 66 65 72 0a 4f 66 66  73 65 74 09 43 6f 6e 74  |ffer.Offset.Cont|
000370d0  65 6e 74 73 0a 23 6c 69  6e 65 0a 30 09 3c 4c 6f  |ents.#line.0.<Lo|
000370e0  61 64 20 61 64 64 72 65  73 73 3d 3e 66 73 79 73  |ad address=>fsys|
000370f0  5f 6c 6f 61 64 65 78 65  63 3e 0a 34 09 3c 45 78  |_loadexec>.4.<Ex|
00037100  65 63 20 61 64 64 72 65  73 73 3d 3e 66 73 79 73  |ec address=>fsys|
00037110  5f 6c 6f 61 64 65 78 65  63 3e 0a 38 09 4c 65 6e  |_loadexec>.8.Len|
00037120  67 74 68 0a 31 32 09 3c  41 74 74 72 69 62 75 74  |gth.12.<Attribut|
00037130  65 73 3d 3e 66 73 79 73  5f 6f 62 6a 61 74 74 72  |es=>fsys_objattr|
00037140  3e 0a 31 36 09 3c 4f 62  6a 65 63 74 20 74 79 70  |>.16.<Object typ|
00037150  65 3d 3e 66 73 79 73 5f  6f 62 6a 74 79 70 65 3e  |e=>fsys_objtype>|
00037160  0a 32 30 09 6e 61 6d 65  20 28 30 2d 74 65 72 6d  |.20.name (0-term|
00037170  69 6e 61 74 65 64 29 0a  44 41 54 41 8d 02 00 00  |inated).DATA....|
00037180  4f 53 5f 47 42 50 42 20  20 31 31 0a 3d 3e 09 52  |OS_GBPB  11.=>.R|
00037190  30 20 3d 09 31 31 0a 09  52 31 20 3d 09 64 69 72  |0 =.11..R1 =.dir|
000371a0  65 63 74 6f 72 79 0a 09  52 32 20 3d 09 3c 62 75  |ectory..R2 =.<bu|
000371b0  66 66 65 72 3d 3e 2e 62  75 66 66 65 72 3e 0a 09  |ffer=>.buffer>..|
000371c0  52 33 20 3d 09 6e 6f 20  6f 66 20 6f 62 6a 65 63  |R3 =.no of objec|
000371d0  74 73 20 74 6f 20 72 65  61 64 0a 09 52 34 20 3d  |ts to read..R4 =|
000371e0  09 77 68 65 72 65 20 74  6f 20 73 74 61 72 74 20  |.where to start |
000371f0  28 30 20 66 69 72 73 74  20 74 69 6d 65 29 0a 09  |(0 first time)..|
00037200  52 35 20 3d 09 6c 65 6e  67 74 68 20 6f 66 20 62  |R5 =.length of b|
00037210  75 66 66 65 72 0a 09 52  36 20 3d 09 77 69 6c 64  |uffer..R6 =.wild|
00037220  63 61 72 64 65 64 20 6e  61 6d 65 20 74 6f 20 6d  |carded name to m|
00037230  61 74 63 68 20 28 69 66  20 30 20 6f 72 20 65 6d  |atch (if 0 or em|
00037240  70 74 79 20 73 74 72 69  6e 67 2c 20 22 2a 22 20  |pty string, "*" |
00037250  69 73 20 75 73 65 64 29  0a 5c 3c 3d 09 52 33 20  |is used).\<=.R3 |
00037260  3d 09 6e 6f 20 6f 66 20  6f 62 6a 65 63 74 73 20  |=.no of objects |
00037270  72 65 61 64 0a 09 52 34  20 3d 09 77 68 65 72 65  |read..R4 =.where|
00037280  20 74 6f 20 63 6f 6e 74  69 6e 75 65 20 28 2d 31  | to continue (-1|
00037290  20 66 6f 72 20 6e 6f 20  6d 6f 72 65 29 0a 09 43  | for no more)..C|
000372a0  20 66 6c 61 67 20 69 73  20 63 6c 65 61 72 20 69  | flag is clear i|
000372b0  66 20 52 33 20 3d 20 30  2c 20 65 6c 73 65 20 69  |f R3 = 0, else i|
000372c0  74 20 69 73 20 73 65 74  0a 0a 54 68 69 73 20 53  |t is set..This S|
000372d0  57 49 20 72 65 61 64 73  20 65 6e 74 72 69 65 73  |WI reads entries|
000372e0  20 66 72 6f 6d 20 74 68  65 20 73 70 65 63 69 66  | from the specif|
000372f0  69 65 64 20 64 69 72 65  63 74 6f 72 79 2e 0a 23  |ied directory..#|
00037300  73 75 62 70 61 67 65 20  62 75 66 66 65 72 0a 4f  |subpage buffer.O|
00037310  53 5f 47 42 50 42 20 31  31 20 62 75 66 66 65 72  |S_GBPB 11 buffer|
00037320  0a 4f 66 66 73 65 74 09  43 6f 6e 74 65 6e 74 73  |.Offset.Contents|
00037330  0a 23 6c 69 6e 65 0a 30  09 3c 4c 6f 61 64 20 61  |.#line.0.<Load a|
00037340  64 64 72 65 73 73 3d 3e  66 73 79 73 5f 6c 6f 61  |ddress=>fsys_loa|
00037350  64 65 78 65 63 3e 0a 34  09 3c 45 78 65 63 20 61  |dexec>.4.<Exec a|
00037360  64 64 72 65 73 73 3d 3e  66 73 79 73 5f 6c 6f 61  |ddress=>fsys_loa|
00037370  64 65 78 65 63 3e 0a 38  09 4c 65 6e 67 74 68 0a  |dexec>.8.Length.|
00037380  31 32 09 3c 41 74 74 72  69 62 75 74 65 73 3d 3e  |12.<Attributes=>|
00037390  66 73 79 73 5f 6f 62 6a  61 74 74 72 3e 0a 31 36  |fsys_objattr>.16|
000373a0  09 3c 4f 62 6a 65 63 74  20 74 79 70 65 3d 3e 66  |.<Object type=>f|
000373b0  73 79 73 5f 6f 62 6a 74  79 70 65 3e 0a 32 30 09  |sys_objtype>.20.|
000373c0  49 6e 74 65 72 6e 61 6c  20 6e 61 6d 65 0a 32 34  |Internal name.24|
000373d0  09 54 69 6d 65 2f 44 61  74 65 20 28 30 20 69 66  |.Time/Date (0 if|
000373e0  20 6e 6f 74 20 73 74 61  6d 70 65 64 29 0a 32 38  | not stamped).28|
000373f0  09 6e 61 6d 65 20 28 30  2d 74 65 72 6d 69 6e 61  |.name (0-termina|
00037400  74 65 64 29 0a 00 00 00  44 41 54 41 7c 02 00 00  |ted)....DATA|...|
00037410  4f 53 5f 47 42 50 42 20  20 31 32 0a 3d 3e 09 52  |OS_GBPB  12.=>.R|
00037420  30 20 3d 09 31 32 0a 09  52 31 20 3d 09 64 69 72  |0 =.12..R1 =.dir|
00037430  65 63 74 6f 72 79 0a 09  52 32 20 3d 09 3c 62 75  |ectory..R2 =.<bu|
00037440  66 66 65 72 3d 3e 2e 62  75 66 66 65 72 3e 0a 09  |ffer=>.buffer>..|
00037450  52 33 20 3d 09 6e 6f 20  6f 66 20 6f 62 6a 65 63  |R3 =.no of objec|
00037460  74 73 20 74 6f 20 72 65  61 64 0a 09 52 34 20 3d  |ts to read..R4 =|
00037470  09 77 68 65 72 65 20 74  6f 20 73 74 61 72 74 20  |.where to start |
00037480  28 30 20 66 69 72 73 74  20 74 69 6d 65 29 0a 09  |(0 first time)..|
00037490  52 35 20 3d 09 6c 65 6e  67 74 68 20 6f 66 20 62  |R5 =.length of b|
000374a0  75 66 66 65 72 0a 09 52  36 20 3d 09 77 69 6c 64  |uffer..R6 =.wild|
000374b0  63 61 72 64 65 64 20 6e  61 6d 65 20 74 6f 20 6d  |carded name to m|
000374c0  61 74 63 68 20 28 69 66  20 30 20 6f 72 20 65 6d  |atch (if 0 or em|
000374d0  70 74 79 20 73 74 72 69  6e 67 2c 20 22 2a 22 20  |pty string, "*" |
000374e0  69 73 20 75 73 65 64 29  0a 5c 3c 3d 09 52 33 20  |is used).\<=.R3 |
000374f0  3d 09 6e 6f 20 6f 66 20  6f 62 6a 65 63 74 73 20  |=.no of objects |
00037500  72 65 61 64 0a 09 52 34  20 3d 09 77 68 65 72 65  |read..R4 =.where|
00037510  20 74 6f 20 63 6f 6e 74  69 6e 75 65 20 28 2d 31  | to continue (-1|
00037520  20 66 6f 72 20 6e 6f 20  6d 6f 72 65 29 0a 09 43  | for no more)..C|
00037530  20 66 6c 61 67 20 69 73  20 63 6c 65 61 72 20 69  | flag is clear i|
00037540  66 20 52 33 20 3d 20 30  2c 20 65 6c 73 65 20 69  |f R3 = 0, else i|
00037550  74 20 69 73 20 73 65 74  0a 0a 54 68 69 73 20 53  |t is set..This S|
00037560  57 49 20 72 65 61 64 73  20 65 6e 74 72 69 65 73  |WI reads entries|
00037570  20 66 72 6f 6d 20 74 68  65 20 73 70 65 63 69 66  | from the specif|
00037580  69 65 64 20 64 69 72 65  63 74 6f 72 79 2e 0a 23  |ied directory..#|
00037590  73 75 62 70 61 67 65 20  62 75 66 66 65 72 0a 4f  |subpage buffer.O|
000375a0  53 5f 47 42 50 42 20 31  32 20 62 75 66 66 65 72  |S_GBPB 12 buffer|
000375b0  0a 4f 66 66 73 65 74 09  43 6f 6e 74 65 6e 74 73  |.Offset.Contents|
000375c0  0a 23 6c 69 6e 65 0a 30  09 3c 4c 6f 61 64 20 61  |.#line.0.<Load a|
000375d0  64 64 72 65 73 73 3d 3e  66 73 79 73 5f 6c 6f 61  |ddress=>fsys_loa|
000375e0  64 65 78 65 63 3e 0a 34  09 3c 45 78 65 63 20 61  |dexec>.4.<Exec a|
000375f0  64 64 72 65 73 73 3d 3e  66 73 79 73 5f 6c 6f 61  |ddress=>fsys_loa|
00037600  64 65 78 65 63 3e 0a 38  09 4c 65 6e 67 74 68 0a  |dexec>.8.Length.|
00037610  31 32 09 3c 41 74 74 72  69 62 75 74 65 73 3d 3e  |12.<Attributes=>|
00037620  66 73 79 73 5f 6f 62 6a  61 74 74 72 3e 0a 31 36  |fsys_objattr>.16|
00037630  09 3c 4f 62 6a 65 63 74  20 74 79 70 65 3d 3e 66  |.<Object type=>f|
00037640  73 79 73 5f 6f 62 6a 74  79 70 65 3e 0a 32 30 09  |sys_objtype>.20.|
00037650  3c 46 69 6c 65 20 74 79  70 65 3d 3e 46 69 6c 65  |<File type=>File|
00037660  74 79 70 65 73 3a 21 52  6f 6f 74 3e 0a 32 34 09  |types:!Root>.24.|
00037670  6e 61 6d 65 20 28 30 2d  74 65 72 6d 69 6e 61 74  |name (0-terminat|
00037680  65 64 29 0a 44 41 54 41  5a 03 00 00 4f 53 5f 47  |ed).DATAZ...OS_G|
00037690  42 50 42 20 35 2c 20 36  20 61 6e 64 20 37 0a 23  |BPB 5, 6 and 7.#|
000376a0  50 61 72 65 6e 74 20 4f  53 5f 47 42 50 42 0a 3d  |Parent OS_GBPB.=|
000376b0  3e 09 52 30 20 3d 09 35  2c 20 36 20 6f 72 20 37  |>.R0 =.5, 6 or 7|
000376c0  0a 09 52 32 20 3d 09 62  75 66 66 65 72 0a 0a 3c  |..R2 =.buffer..<|
000376d0  3d 09 52 30 2c 20 52 32  20 70 72 65 73 65 72 76  |=.R0, R2 preserv|
000376e0  65 64 0a 09 43 20 66 6c  61 67 20 63 6f 72 72 75  |ed..C flag corru|
000376f0  70 74 65 64 0a 0a 54 68  65 73 65 20 63 61 6c 6c  |pted..These call|
00037700  73 20 72 65 61 64 20 69  6e 66 6f 72 6d 61 74 69  |s read informati|
00037710  6f 6e 20 6f 6e 20 74 68  65 20 74 65 6d 70 6f 72  |on on the tempor|
00037720  61 72 79 20 66 69 6c 69  6e 67 20 73 79 73 74 65  |ary filing syste|
00037730  6d 20 28 6e 6f 72 6d 61  6c 6c 79 20 74 68 65 20  |m (normally the |
00037740  63 75 72 72 65 6e 74 29  20 74 6f 20 74 68 65 20  |current) to the |
00037750  62 75 66 66 65 72 20 70  6f 69 6e 74 65 64 20 74  |buffer pointed t|
00037760  6f 20 62 79 20 52 32 2e  0a 49 66 20 52 30 20 3d  |o by R2..If R0 =|
00037770  20 35 20 3a 0a 23 49 6e  64 65 6e 74 20 32 0a 5c  | 5 :.#Indent 2.\|
00037780  3c 6e 61 6d 65 20 6c 65  6e 67 74 68 20 62 79 74  |<name length byt|
00037790  65 3e 5c 3c 64 69 73 63  20 6e 61 6d 65 3e 5c 3c  |e>\<disc name>\<|
000377a0  62 6f 6f 74 20 6f 70 74  69 6f 6e 20 62 79 74 65  |boot option byte|
000377b0  3e 0a 6f 66 20 64 69 73  63 20 63 6f 6e 74 61 69  |>.of disc contai|
000377c0  6e 69 6e 67 20 74 68 65  20 63 75 72 72 65 6e 74  |ning the current|
000377d0  20 64 69 72 65 63 74 6f  72 79 0a 23 49 6e 64 65  | directory.#Inde|
000377e0  6e 74 0a 0a 49 66 20 52  30 20 3d 20 36 20 3a 0a  |nt..If R0 = 6 :.|
000377f0  23 49 6e 64 65 6e 74 20  32 0a 5c 3c 30 3e 5c 3c  |#Indent 2.\<0>\<|
00037800  6e 61 6d 65 20 6c 65 6e  67 74 68 20 62 79 74 65  |name length byte|
00037810  3e 5c 3c 63 75 72 72 65  6e 74 20 64 69 72 65 63  |>\<current direc|
00037820  74 6f 72 79 20 6e 61 6d  65 3e 5c 3c 70 72 69 76  |tory name>\<priv|
00037830  69 6c 69 67 65 64 20 62  79 74 65 3e 0a 6f 66 20  |iliged byte>.of |
00037840  74 68 65 20 63 75 72 72  65 6e 74 6c 79 20 73 65  |the currently se|
00037850  6c 65 63 74 65 64 20 64  69 72 65 63 74 6f 72 79  |lected directory|
00037860  2e 20 54 68 65 20 70 72  69 76 69 6c 69 67 65 64  |. The priviliged|
00037870  20 62 79 74 65 20 69 73  20 65 69 74 68 65 72 20  | byte is either |
00037880  26 30 30 20 69 65 20 61  6c 6c 6f 77 61 6e 63 65  |&00 ie allowance|
00037890  20 74 6f 20 63 72 65 61  74 65 20 6f 72 20 64 65  | to create or de|
000378a0  6c 65 74 65 20 6f 62 6a  65 63 74 73 20 69 6e 20  |lete objects in |
000378b0  74 68 65 20 64 69 72 65  63 74 6f 72 79 20 26 46  |the directory &F|
000378c0  46 20 69 65 20 70 72 6f  68 69 62 69 74 69 6f 6e  |F ie prohibition|
000378d0  20 6f 66 20 63 72 65 61  74 69 6e 67 20 6f 72 20  | of creating or |
000378e0  64 65 6c 65 74 69 6e 67  20 6f 62 6a 65 63 74 73  |deleting objects|
000378f0  3b 20 69 6e 20 41 44 46  53 20 6f 72 20 6f 74 68  |; in ADFS or oth|
00037900  65 72 20 46 69 6c 65 43  6f 72 65 20 62 61 73 65  |er FileCore base|
00037910  64 20 73 79 73 74 65 6d  73 2c 20 79 6f 75 20 61  |d systems, you a|
00037920  6c 77 61 79 73 20 67 6f  74 20 26 30 30 0a 23 49  |lways got &00.#I|
00037930  6e 64 65 6e 74 0a 49 66  20 52 30 20 3d 20 37 20  |ndent.If R0 = 7 |
00037940  3a 0a 23 49 6e 64 65 6e  74 20 32 0a 5c 3c 30 3e  |:.#Indent 2.\<0>|
00037950  5c 3c 6e 61 6d 65 20 6c  65 6e 67 74 68 20 62 79  |\<name length by|
00037960  74 65 3e 5c 3c 6c 69 62  72 61 72 79 20 64 69 72  |te>\<library dir|
00037970  65 63 74 6f 72 79 20 6e  61 6d 65 3e 5c 3c 70 72  |ectory name>\<pr|
00037980  69 76 69 6c 69 67 65 64  20 62 79 74 65 3e 0a 6f  |iviliged byte>.o|
00037990  66 20 74 68 65 20 6c 69  62 72 61 72 79 20 64 69  |f the library di|
000379a0  72 65 63 74 6f 72 79 0a  23 49 6e 65 6e 74 0a 0a  |rectory.#Inent..|
000379b0  54 68 65 20 6e 61 6d 65  73 20 61 72 65 20 6d 65  |The names are me|
000379c0  61 6e 74 20 77 69 74 68  6f 75 74 20 74 65 72 6d  |ant without term|
000379d0  69 6e 61 74 69 6f 6e 20  62 79 74 65 2e 0a 00 00  |ination byte....|
000379e0  44 41 54 41 1e 04 00 00  4f 53 5f 47 42 50 42 20  |DATA....OS_GBPB |
000379f0  38 0a 23 50 61 72 65 6e  74 20 4f 53 5f 47 42 50  |8.#Parent OS_GBP|
00037a00  42 0a 3d 3e 09 52 30 20  3d 09 38 0a 09 52 32 20  |B.=>.R0 =.8..R2 |
00037a10  3d 09 62 75 66 66 65 72  20 61 64 64 72 65 73 73  |=.buffer address|
00037a20  0a 09 52 33 20 3d 09 6e  75 6d 62 65 72 20 6f 66  |..R3 =.number of|
00037a30  20 6f 62 6a 65 63 74 20  6e 61 6d 65 73 20 74 6f  | object names to|
00037a40  20 72 65 61 64 20 66 72  6f 6d 20 64 69 72 65 63  | read from direc|
00037a50  74 6f 72 79 0a 09 52 34  20 3d 09 6f 66 66 73 65  |tory..R4 =.offse|
00037a60  74 20 6f 66 20 66 69 72  73 74 20 69 74 65 6d 20  |t of first item |
00037a70  74 6f 20 62 65 20 72 65  61 64 20 69 6e 20 64 69  |to be read in di|
00037a80  72 65 63 74 6f 72 79 2c  20 6f 72 20 30 20 74 6f  |rectory, or 0 to|
00037a90  20 73 74 61 72 74 0a 0a  3c 3d 09 52 30 2c 20 52  | start..<=.R0, R|
00037aa0  32 20 70 72 65 73 65 72  76 65 64 0a 09 52 33 20  |2 preserved..R3 |
00037ab0  3d 09 6e 75 6d 62 65 72  20 6f 66 20 6f 62 6a 65  |=.number of obje|
00037ac0  63 74 73 20 61 73 6b 65  64 20 66 6f 72 20 62 75  |cts asked for bu|
00037ad0  74 20 6e 6f 74 20 72 65  61 64 0a 09 52 34 20 3d  |t not read..R4 =|
00037ae0  09 6e 65 78 74 20 6f 66  66 73 65 74 20 69 6e 74  |.next offset int|
00037af0  6f 20 64 69 72 65 63 74  6f 72 79 0a 09 43 20 46  |o directory..C F|
00037b00  6c 61 67 20 63 6c 65 61  72 20 69 66 20 52 33 20  |lag clear if R3 |
00037b10  3d 20 30 2c 20 65 6c 73  65 20 73 65 74 0a 0a 54  |= 0, else set..T|
00037b20  68 69 73 20 63 61 6c 6c  20 72 65 61 64 73 20 65  |his call reads e|
00037b30  6e 74 72 69 65 73 20 66  72 6f 6d 20 74 68 65 20  |ntries from the |
00037b40  63 75 72 72 65 6e 74 20  64 69 72 65 63 74 6f 72  |current director|
00037b50  79 20 6f 6e 20 74 68 65  20 74 65 6d 70 6f 72 61  |y on the tempora|
00037b60  72 79 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |ry filing system|
00037b70  2e 20 59 6f 75 20 63 61  6e 20 61 6c 73 6f 20 64  |. You can also d|
00037b80  6f 20 69 74 20 75 73 69  6e 67 20 3c 4f 53 5f 47  |o it using <OS_G|
00037b90  42 50 42 20 39 3d 3e 4f  53 5f 47 42 50 42 39 3e  |BPB 9=>OS_GBPB9>|
00037ba0  2e 20 46 69 6c 65 20 6e  61 6d 65 73 20 61 72 65  |. File names are|
00037bb0  20 72 65 74 75 72 6e 65  64 20 69 6e 20 74 68 65  | returned in the|
00037bc0  20 61 72 65 61 20 6f 66  20 6d 65 6d 6f 72 79 20  | area of memory |
00037bd0  73 70 65 63 69 66 69 65  64 20 69 6e 20 52 32 2e  |specified in R2.|
00037be0  20 54 68 65 20 66 6f 72  6d 61 74 20 6f 66 20 74  | The format of t|
00037bf0  68 65 20 72 65 74 75 72  6e 65 64 20 64 61 74 61  |he returned data|
00037c00  20 69 73 3a 0a 23 49 6e  64 65 6e 74 20 32 3b 54  | is:.#Indent 2;T|
00037c10  61 62 0a 6c 65 6e 67 74  68 20 6f 66 20 66 69 72  |ab.length of fir|
00037c20  73 74 20 6f 62 6a 65 63  74 20 6e 61 6d 65 09 28  |st object name.(|
00037c30  6f 6e 65 20 62 79 74 65  29 0a 66 69 72 73 74 20  |one byte).first |
00037c40  6f 62 6a 65 63 74 20 6e  61 6d 65 20 69 6e 20 41  |object name in A|
00037c50  53 43 49 49 09 28 61 73  20 73 70 65 63 69 66 69  |SCII.(as specifi|
00037c60  65 64 29 0a 2e 2e 2e 20  72 65 70 65 61 74 65 64  |ed).... repeated|
00037c70  20 61 73 20 73 70 65 63  69 66 69 65 64 20 69 6e  | as specified in|
00037c80  20 52 33 0a 23 49 6e 64  65 6e 74 0a 0a 4f 6e 20  | R3.#Indent..On |
00037c90  65 78 69 74 20 52 34 20  63 6f 6e 74 61 69 6e 73  |exit R4 contains|
00037ca0  20 74 68 65 20 76 61 6c  75 65 20 77 68 69 63 68  | the value which|
00037cb0  20 73 68 6f 75 6c 64 20  62 65 20 75 73 65 64 20  | should be used |
00037cc0  6f 6e 20 74 68 65 20 6e  65 78 74 20 63 61 6c 6c  |on the next call|
00037cd0  2e 20 54 68 65 72 65 20  69 73 20 6e 6f 20 67 75  |. There is no gu|
00037ce0  61 72 61 6e 74 65 65 20  74 68 61 74 20 74 68 65  |arantee that the|
00037cf0  20 6e 75 6d 62 65 72 20  6f 66 20 6f 62 6a 65 63  | number of objec|
00037d00  74 73 20 79 6f 75 20 61  73 6b 65 64 20 66 6f 72  |ts you asked for|
00037d10  20 77 69 6c 6c 20 62 65  20 72 65 61 64 2e 20 54  | will be read. T|
00037d20  68 69 73 20 69 73 20 62  65 63 61 75 73 65 20 6f  |his is because o|
00037d30  66 20 74 68 65 20 65 78  74 65 72 6e 61 6c 20 63  |f the external c|
00037d40  6f 6e 73 74 72 61 69 6e  74 73 20 73 6f 6d 65 20  |onstraints some |
00037d50  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 73 20 6d  |filing systems m|
00037d60  61 79 20 69 6d 70 6f 73  65 2e 20 54 6f 20 65 6e  |ay impose. To en|
00037d70  73 75 72 65 20 72 65 61  64 69 6e 67 20 61 6c 6c  |sure reading all|
00037d80  20 74 68 65 20 65 6e 74  72 69 65 73 20 79 6f 75  | the entries you|
00037d90  20 77 61 6e 74 20 74 6f  2c 20 74 68 69 73 20 63  | want to, this c|
00037da0  61 6c 6c 20 73 68 6f 75  6c 64 20 62 65 20 72 65  |all should be re|
00037db0  70 65 61 74 65 64 20 75  6e 74 69 6c 20 52 34 20  |peated until R4 |
00037dc0  3d 20 2d 31 2e 0a 0a 54  68 69 73 20 63 61 6c 6c  |= -1...This call|
00037dd0  20 69 73 20 6f 6e 6c 79  20 70 72 6f 76 69 64 65  | is only provide|
00037de0  64 20 66 6f 72 20 62 61  63 6b 77 61 72 64 20 63  |d for backward c|
00037df0  6f 6d 70 61 74 69 62 69  6c 69 74 79 2e 0a 00 00  |ompatibility....|
00037e00  44 49 52 24 4c 00 00 00  4c 00 00 00 4c 7e 03 00  |DIR$L...L...L~..|
00037e10  46 ff ff ff f6 33 6a 88  a6 00 00 00 13 00 00 00  |F....3j.........|
00037e20  00 00 00 00 21 52 6f 6f  74 00 00 00 f4 7e 03 00  |....!Root....~..|
00037e30  46 fd ff ff 46 64 5d 96  01 04 00 00 13 00 00 00  |F...Fd].........|
00037e40  00 00 00 00 49 6e 64 65  78 00 00 00 44 41 54 41  |....Index...DATA|
00037e50  a6 00 00 00 4f 53 5f 50  6c 6f 74 20 20 28 26 34  |....OS_Plot  (&4|
00037e60  35 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 3d  |5).#Parent OS_.=|
00037e70  3e 09 52 30 20 3d 09 3c  70 6c 6f 74 20 63 6f 6d  |>.R0 =.<plot com|
00037e80  6d 61 6e 64 20 63 6f 64  65 3d 3e 4f 53 5f 50 6c  |mand code=>OS_Pl|
00037e90  6f 74 49 6e 64 65 78 3e  0a 09 52 31 20 3d 09 78  |otIndex>..R1 =.x|
00037ea0  20 63 6f 6f 72 64 0a 09  52 32 20 3d 09 79 20 63  | coord..R2 =.y c|
00037eb0  6f 6f 72 64 0a 0a 5c 3c  3d 09 52 30 2c 52 31 2c  |oord..\<=.R0,R1,|
00037ec0  52 32 20 61 72 65 20 63  6f 72 72 75 70 74 65 64  |R2 are corrupted|
00037ed0  0a 0a 54 68 69 73 20 53  57 49 20 64 6f 65 73 20  |..This SWI does |
00037ee0  61 20 64 69 72 65 63 74  20 56 44 55 20 63 61 6c  |a direct VDU cal|
00037ef0  6c 2e 00 00 44 41 54 41  01 04 00 00 50 6c 6f 74  |l...DATA....Plot|
00037f00  20 63 6f 6d 6d 61 6e 64  73 0a 23 41 6c 69 67 6e  | commands.#Align|
00037f10  20 43 65 6e 74 72 65 0a  23 66 31 3a 50 6c 6f 74  | Centre.#f1:Plot|
00037f20  20 43 6f 6d 6d 61 6e 64  73 20 3a 0a 0a 23 41 6c  | Commands :..#Al|
00037f30  69 67 6e 0a 23 54 41 42  20 41 6c 69 67 6e 20 52  |ign.#TAB Align R|
00037f40  69 67 68 74 2c 20 41 6c  69 67 6e 20 4c 65 66 74  |ight, Align Left|
00037f50  2c 20 41 6c 69 67 6e 20  52 69 67 68 74 2c 20 41  |, Align Right, A|
00037f60  6c 69 67 6e 20 4c 65 66  74 0a 30 09 53 6f 6c 69  |lign Left.0.Soli|
00037f70  64 20 6c 69 6e 65 20 69  6e 63 6c 20 65 6e 64 20  |d line incl end |
00037f80  70 74 73 09 09 38 09 65  78 63 6c 20 65 6e 64 20  |pts..8.excl end |
00037f90  70 74 0a 31 36 09 44 6f  74 74 65 64 20 6c 69 6e  |pt.16.Dotted lin|
00037fa0  65 20 69 6e 63 6c 20 65  6e 64 20 70 74 73 09 32  |e incl end pts.2|
00037fb0  34 09 65 78 63 6c 20 65  6e 64 20 70 74 0a 33 32  |4.excl end pt.32|
00037fc0  09 53 6f 6c 69 64 20 6c  69 6e 65 20 65 78 63 6c  |.Solid line excl|
00037fd0  20 66 69 72 73 74 20 70  74 09 34 30 09 65 78 63  | first pt.40.exc|
00037fe0  6c 20 62 6f 74 68 20 65  6e 64 20 70 74 73 0a 34  |l both end pts.4|
00037ff0  38 09 44 6f 74 74 65 64  20 6c 69 6e 65 20 65 78  |8.Dotted line ex|
00038000  63 6c 20 66 69 72 73 74  20 70 74 2c 09 35 36 09  |cl first pt,.56.|
00038010  65 78 63 6c 20 62 6f 74  68 20 65 6e 64 20 70 74  |excl both end pt|
00038020  73 0a 09 70 61 74 74 65  72 6e 20 63 6f 6e 74 69  |s..pattern conti|
00038030  6e 75 65 64 0a 09 20 09  09 09 09 20 09 48 6f 72  |nued.. .... .Hor|
00038040  69 7a 6f 6e 74 61 6c 20  6c 69 6e 65 66 69 6c 6c  |izontal linefill|
00038050  3a 0a 36 34 09 50 6f 69  6e 74 20 70 6c 6f 74 09  |:.64.Point plot.|
00038060  09 09 37 32 09 20 20 28  6c 65 66 74 26 72 69 67  |..72.  (left&rig|
00038070  68 74 29 20 74 6f 20 6e  6f 6e 20 62 61 63 6b 67  |ht) to non backg|
00038080  72 0a 38 30 09 54 72 69  61 6e 67 6c 65 20 66 69  |r.80.Triangle fi|
00038090  6c 6c 09 09 09 38 38 09  20 20 28 74 6f 20 72 69  |ll...88.  (to ri|
000380a0  67 68 74 29 20 74 6f 20  62 61 63 6b 67 72 0a 39  |ght) to backgr.9|
000380b0  36 09 52 65 63 74 61 6e  67 6c 65 20 66 69 6c 6c  |6.Rectangle fill|
000380c0  09 09 09 31 30 34 09 20  20 28 6c 65 66 74 26 72  |...104.  (left&r|
000380d0  69 67 68 74 29 20 74 6f  20 66 6f 72 65 67 72 0a  |ight) to foregr.|
000380e0  31 31 32 09 50 61 72 61  6c 6c 65 6c 6c 6f 67 72  |112.Parallellogr|
000380f0  61 6d 20 66 69 6c 6c 09  09 31 32 30 09 20 20 28  |am fill..120.  (|
00038100  74 6f 20 72 69 67 68 74  29 20 74 6f 20 6e 6f 6e  |to right) to non|
00038110  20 66 6f 72 65 67 72 0a  31 32 38 09 46 6c 6f 6f  | foregr.128.Floo|
00038120  64 20 74 6f 20 6e 6f 6e  2d 62 61 63 6b 67 72 6f  |d to non-backgro|
00038130  75 6e 64 09 09 31 33 36  09 46 6c 6f 6f 64 20 74  |und..136.Flood t|
00038140  6f 20 66 6f 72 65 67 72  6f 75 6e 64 0a 31 34 34  |o foreground.144|
00038150  09 43 69 72 63 6c 65 20  6f 75 74 6c 69 6e 65 09  |.Circle outline.|
00038160  09 09 31 35 32 09 43 69  72 63 6c 65 20 66 69 6c  |..152.Circle fil|
00038170  6c 0a 31 36 30 09 43 69  72 63 75 6c 61 72 20 61  |l.160.Circular a|
00038180  72 63 09 09 09 31 36 38  09 53 65 67 6d 65 6e 74  |rc...168.Segment|
00038190  0a 31 37 36 09 53 65 63  74 6f 72 09 09 09 09 31  |.176.Sector....1|
000381a0  38 34 09 42 6c 6f 63 6b  20 63 6f 70 79 2f 6d 6f  |84.Block copy/mo|
000381b0  76 65 0a 31 39 32 09 45  6c 6c 69 70 73 65 20 6f  |ve.192.Ellipse o|
000381c0  75 74 6c 69 6e 65 09 09  09 32 30 30 09 45 6c 6c  |utline...200.Ell|
000381d0  69 70 73 65 20 66 69 6c  6c 0a 32 30 38 09 46 6f  |ipse fill.208.Fo|
000381e0  6e 74 20 70 72 69 6e 74  69 6e 67 20 28 64 6f 6e  |nt printing (don|
000381f0  27 74 20 75 73 65 29 09  32 33 32 09 53 70 72 69  |'t use).232.Spri|
00038200  74 65 20 50 6c 6f 74 0a  0a 23 41 6c 69 67 6e 20  |te Plot..#Align |
00038210  43 65 6e 74 72 65 0a 23  66 31 3a 4d 6f 64 69 66  |Centre.#f1:Modif|
00038220  69 65 72 73 20 3a 0a 23  41 6c 69 67 6e 0a 0a 30  |iers :.#Align..0|
00038230  09 4d 6f 76 65 20 72 65  6c 61 74 69 76 65 09 09  |.Move relative..|
00038240  09 34 09 4d 6f 76 65 20  61 62 73 6f 6c 75 74 65  |.4.Move absolute|
00038250  0a 31 09 50 6c 6f 74 20  72 65 6c 61 74 69 76 65  |.1.Plot relative|
00038260  2c 20 66 6f 72 65 67 72  6f 75 6e 64 09 35 09 50  |, foreground.5.P|
00038270  6c 6f 74 20 61 62 73 6f  6c 75 74 65 2c 20 66 6f  |lot absolute, fo|
00038280  72 65 67 72 6f 75 6e 64  0a 32 09 50 6c 6f 74 20  |reground.2.Plot |
00038290  72 65 6c 61 74 69 76 65  2c 20 69 6e 76 65 72 73  |relative, invers|
000382a0  65 09 09 36 09 50 6c 6f  74 20 61 62 73 6f 6c 75  |e..6.Plot absolu|
000382b0  74 65 2c 20 69 6e 76 65  72 73 65 0a 33 09 50 6c  |te, inverse.3.Pl|
000382c0  6f 74 20 72 65 6c 61 74  69 76 65 2c 20 62 61 63  |ot relative, bac|
000382d0  6b 67 72 6f 75 6e 64 09  37 09 50 6c 6f 74 20 61  |kground.7.Plot a|
000382e0  62 73 6f 6c 75 74 65 2c  20 62 61 63 6b 67 72 6f  |bsolute, backgro|
000382f0  75 6e 64 0a 0a 00 00 00  44 49 52 24 a4 00 00 00  |und.....DIR$....|
00038300  a4 00 00 00 9c 83 03 00  43 fd ff ff 3f 98 1e c5  |........C...?...|
00038310  90 00 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |............0...|
00038320  2c 84 03 00 46 fd ff ff  5d fd ed 91 2b 01 00 00  |,...F...]...+...|
00038330  13 00 00 00 00 00 00 00  31 00 00 00 58 85 03 00  |........1...X...|
00038340  45 ff ff ff de 9b e6 ff  dd 00 00 00 13 00 00 00  |E...............|
00038350  00 00 00 00 49 6e 69 74  00 00 00 00 38 86 03 00  |....Init....8...|
00038360  46 ff ff ff d1 19 ec 4d  07 01 00 00 13 00 00 00  |F......M........|
00038370  00 00 00 00 52 65 61 64  00 00 00 00 40 87 03 00  |....Read....@...|
00038380  45 ff ff ff 6d 94 e6 ff  5f 01 00 00 13 00 00 00  |E...m..._.......|
00038390  00 00 00 00 54 72 61 6e  73 00 00 00 44 41 54 41  |....Trans...DATA|
000383a0  90 00 00 00 47 53 20 66  6c 61 67 73 0a 62 69 74  |....GS flags.bit|
000383b0  09 20 4d 65 61 6e 69 6e  67 20 77 68 65 6e 20 73  |. Meaning when s|
000383c0  65 74 0a 23 4c 69 6e 65  0a 32 39 09 53 70 61 63  |et.#Line.29.Spac|
000383d0  65 20 69 73 20 73 74 72  69 6e 67 20 74 65 72 6d  |e is string term|
000383e0  69 6e 61 74 6f 72 0a 33  30 09 43 74 72 6c 20 63  |inator.30.Ctrl c|
000383f0  6f 64 65 73 20 28 27 7c  27 29 20 6e 6f 74 20 63  |odes ('|') not c|
00038400  6f 6e 76 65 72 74 65 64  0a 33 31 09 22 20 69 73  |onverted.31." is|
00038410  20 6e 6f 74 20 73 74 72  69 70 70 65 64 20 61 72  | not stripped ar|
00038420  6f 75 6e 64 20 73 74 72  69 6e 67 73 44 41 54 41  |ound stringsDATA|
00038430  2b 01 00 00 54 72 61 6e  73 6c 61 74 69 6f 6e 73  |+...Translations|
00038440  0a 54 6f 6b 65 6e 09 52  65 70 6c 61 63 65 64 20  |.Token.Replaced |
00038450  62 79 0a 23 4c 69 6e 65  0a 7c 22 09 22 0a 7c 5c  |by.#Line.|".".|\|
00038460  3c 09 5c 3c 0a 7c 21 09  66 6f 72 63 65 73 20 74  |<.\<.|!.forces t|
00038470  6f 70 20 62 69 74 20 6f  66 20 6e 65 78 74 20 63  |op bit of next c|
00038480  68 61 72 20 74 6f 20 62  65 20 73 65 74 2e 0a 7c  |har to be set..||
00038490  63 68 61 72 09 43 54 52  4c 28 20 41 53 43 49 49  |char.CTRL( ASCII|
000384a0  28 75 70 70 65 72 63 61  73 65 28 63 68 61 72 29  |(uppercase(char)|
000384b0  20 2d 20 36 34 20 29 0a  22 73 74 72 22 09 73 74  | - 64 )."str".st|
000384c0  72 0a 5c 3c 6e 72 3e 09  43 54 52 4c 28 6e 72 29  |r.\<nr>.CTRL(nr)|
000384d0  0a 5c 3c 73 74 72 3e 09  73 79 73 74 65 6d 20 76  |.\<str>.system v|
000384e0  61 72 69 61 62 6c 65 20  73 74 72 0a 0a 45 78 61  |ariable str..Exa|
000384f0  6d 70 6c 65 3a 20 3c 5c  3c 37 5c 3e 44 61 74 65  |mple: <\<7\>Date|
00038500  3a 20 5c 3c 53 79 73 24  44 61 74 65 5c 3e 7c 4d  |: \<Sys$Date\>|M|
00038510  7c 4a 54 69 6d 65 3a 20  5c 3c 53 79 73 24 54 69  ||JTime: \<Sys$Ti|
00038520  6d 65 5c 3e 3d 3e 2a 45  43 48 4f 20 3c 37 5c 3e  |me\>=>*ECHO <7\>|
00038530  44 61 74 65 3a 20 3c 53  79 73 24 44 61 74 65 5c  |Date: <Sys$Date\|
00038540  3e 7c 4d 7c 4a 54 69 6d  65 3a 20 3c 53 79 73 24  |>|M|JTime: <Sys$|
00038550  54 69 6d 65 5c 3e 3e 00  44 41 54 41 dd 00 00 00  |Time\>>.DATA....|
00038560  4f 53 5f 47 53 49 6e 69  74 20 20 28 26 32 35 29  |OS_GSInit  (&25)|
00038570  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
00038580  52 30 20 3d 20 53 74 72  69 6e 67 20 74 6f 20 74  |R0 = String to t|
00038590  72 61 6e 73 6c 61 74 65  0a 09 52 32 20 3d 20 3c  |ranslate..R2 = <|
000385a0  66 6c 61 67 73 3d 3e 6f  73 5f 67 73 30 3e 0a 0a  |flags=>os_gs0>..|
000385b0  5c 3c 3d 09 52 30 20 3d  20 56 61 6c 75 65 20 66  |\<=.R0 = Value f|
000385c0  6f 72 20 4f 53 5f 47 53  52 65 61 64 0a 09 52 31  |or OS_GSRead..R1|
000385d0  20 3d 20 31 73 74 20 6e  6f 6e 62 6c 61 6e 6b 20  | = 1st nonblank |
000385e0  63 68 61 72 0a 09 52 32  20 3d 20 56 61 6c 75 65  |char..R2 = Value|
000385f0  20 66 6f 72 20 4f 53 5f  47 53 52 65 61 64 0a 0a  | for OS_GSRead..|
00038600  54 68 69 73 20 53 57 49  20 69 73 20 66 6f 6c 6c  |This SWI is foll|
00038610  6f 77 65 64 20 62 79 20  72 65 70 65 61 74 65 64  |owed by repeated|
00038620  20 63 61 6c 6c 73 20 74  6f 20 3c 4f 53 5f 47 53  | calls to <OS_GS|
00038630  52 65 61 64 3e 00 00 00  44 41 54 41 07 01 00 00  |Read>...DATA....|
00038640  4f 53 5f 47 53 52 65 61  64 20 20 28 26 32 36 29  |OS_GSRead  (&26)|
00038650  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
00038660  52 30 2c 52 32 20 66 72  6f 6d 20 6c 61 73 74 20  |R0,R2 from last |
00038670  63 61 6c 6c 0a 0a 5c 3c  3d 09 52 31 20 3d 20 54  |call..\<=.R1 = T|
00038680  72 61 6e 73 6c 61 74 65  64 20 63 68 61 72 0a 09  |ranslated char..|
00038690  43 20 73 65 74 20 69 66  20 65 6e 64 2d 6f 66 2d  |C set if end-of-|
000386a0  73 74 72 69 6e 67 0a 0a  54 68 69 73 20 53 57 49  |string..This SWI|
000386b0  20 72 65 61 64 73 20 26  20 3c 74 72 61 6e 73 6c  | reads & <transl|
000386c0  61 74 65 73 3d 3e 6f 73  5f 67 73 31 3e 20 61 20  |ates=>os_gs1> a |
000386d0  73 74 72 69 6e 67 2c 20  6f 6e 65 20 63 68 61 72  |string, one char|
000386e0  20 61 74 20 61 20 74 69  6d 65 2e 20 42 65 66 6f  | at a time. Befo|
000386f0  72 65 20 66 69 72 73 74  20 63 61 6c 6c 2c 20 3c  |re first call, <|
00038700  4f 53 5f 47 53 49 6e 69  74 3e 20 6d 75 73 74 20  |OS_GSInit> must |
00038710  62 65 20 63 61 6c 6c 65  64 2e 20 54 6f 20 64 6f  |be called. To do|
00038720  20 77 68 6f 6c 65 20 73  74 72 69 6e 67 2c 20 75  | whole string, u|
00038730  73 65 20 3c 4f 53 5f 47  53 54 72 61 6e 73 3e 00  |se <OS_GSTrans>.|
00038740  44 41 54 41 5f 01 00 00  4f 53 5f 47 53 54 72 61  |DATA_...OS_GSTra|
00038750  6e 73 20 20 28 26 32 37  29 0a 23 50 61 72 65 6e  |ns  (&27).#Paren|
00038760  74 20 4f 53 5f 0a 3d 3e  09 52 30 20 3d 20 53 74  |t OS_.=>.R0 = St|
00038770  72 69 6e 67 2c 20 74 65  72 6d 69 6e 61 74 65 64  |ring, terminated|
00038780  20 62 79 20 31 30 2c 31  33 2c 30 0a 09 52 31 20  | by 10,13,0..R1 |
00038790  3d 20 64 65 73 74 2e 20  62 75 66 66 65 72 0a 09  |= dest. buffer..|
000387a0  52 32 20 3d 20 62 75 66  66 65 72 20 73 69 7a 65  |R2 = buffer size|
000387b0  20 2b 20 3c 66 6c 61 67  73 3d 3e 6f 73 5f 67 73  | + <flags=>os_gs|
000387c0  30 3e 0a 0a 5c 3c 3d 09  52 30 20 3d 20 50 74 72  |0>..\<=.R0 = Ptr|
000387d0  20 74 6f 20 74 65 72 6d  69 6e 61 74 6f 72 2b 31  | to terminator+1|
000387e0  0a 09 52 32 20 3d 20 43  68 61 72 73 20 63 6f 6e  |..R2 = Chars con|
000387f0  76 65 72 74 65 64 0a 09  43 20 73 65 74 20 69 66  |verted..C set if|
00038800  20 62 75 66 66 65 72 20  6f 76 65 72 66 6c 6f 77  | buffer overflow|
00038810  0a 0a 54 68 69 73 20 53  57 49 20 69 73 20 65 71  |..This SWI is eq|
00038820  75 69 76 61 6c 65 6e 74  20 74 6f 20 61 20 63 61  |uivalent to a ca|
00038830  6c 6c 20 74 6f 20 3c 4f  53 5f 47 53 49 6e 69 74  |ll to <OS_GSInit|
00038840  3e 2c 20 66 6f 6c 6c 6f  77 65 64 20 62 79 20 72  |>, followed by r|
00038850  65 70 65 61 74 65 64 20  63 61 6c 6c 73 20 74 6f  |epeated calls to|
00038860  20 3c 4f 53 5f 47 53 52  65 61 64 3e 2e 20 49 74  | <OS_GSRead>. It|
00038870  20 72 65 61 64 73 20 61  6e 64 20 3c 74 72 61 6e  | reads and <tran|
00038880  73 6c 61 74 65 73 3d 3e  6f 73 5f 67 73 31 3e 20  |slates=>os_gs1> |
00038890  61 20 77 68 6f 6c 65 20  73 74 72 69 6e 67 2e 00  |a whole string..|
000388a0  44 49 52 24 70 01 00 00  70 01 00 00 10 8a 03 00  |DIR$p...p.......|
000388b0  46 ff ff ff 08 79 bb 88  c1 01 00 00 13 00 00 00  |F....y..........|
000388c0  00 00 00 00 21 52 6f 6f  74 00 00 00 d4 8b 03 00  |....!Root.......|
000388d0  46 ff ff ff 0a ea 39 48  70 01 00 00 13 00 00 00  |F.....9Hp.......|
000388e0  00 00 00 00 53 6f 72 74  00 00 00 00 44 8d 03 00  |....Sort....D...|
000388f0  45 fd ff ff 8b df e9 ff  8c 00 00 00 13 00 00 00  |E...............|
00038900  00 00 00 00 73 6f 72 74  30 00 00 00 d0 8d 03 00  |....sort0.......|
00038910  46 fd ff ff 00 bb 51 4a  15 01 00 00 13 00 00 00  |F.....QJ........|
00038920  00 00 00 00 73 6f 72 74  31 00 00 00 e8 8e 03 00  |....sort1.......|
00038930  46 fd ff ff fd 9a 36 48  d1 00 00 00 13 00 00 00  |F.....6H........|
00038940  00 00 00 00 73 6f 72 74  32 00 00 00 bc 8f 03 00  |....sort2.......|
00038950  46 fd ff ff 35 88 bb 88  ac 00 00 00 13 00 00 00  |F...5...........|
00038960  00 00 00 00 30 00 00 00  68 90 03 00 46 fd ff ff  |....0...h...F...|
00038970  ff df ec 47 a6 00 00 00  13 00 00 00 00 00 00 00  |...G............|
00038980  31 00 00 00 10 91 03 00  46 fd ff ff 5b 97 bb 88  |1.......F...[...|
00038990  b2 00 00 00 13 00 00 00  00 00 00 00 32 00 00 00  |............2...|
000389a0  c4 91 03 00 46 fd ff ff  5c c2 f3 47 9f 00 00 00  |....F...\..G....|
000389b0  13 00 00 00 00 00 00 00  33 00 00 00 64 92 03 00  |........3...d...|
000389c0  46 fd ff ff 16 7a ec 47  e4 00 00 00 13 00 00 00  |F....z.G........|
000389d0  00 00 00 00 34 00 00 00  48 93 03 00 46 fd ff ff  |....4...H...F...|
000389e0  5a 96 5d a8 25 01 00 00  13 00 00 00 00 00 00 00  |Z.].%...........|
000389f0  35 00 00 00 70 94 03 00  46 fd ff ff c9 c7 bb 88  |5...p...F.......|
00038a00  bb 00 00 00 13 00 00 00  00 00 00 00 36 00 00 00  |............6...|
00038a10  44 41 54 41 c1 01 00 00  4f 53 5f 48 65 61 70 20  |DATA....OS_Heap |
00038a20  20 28 26 31 44 29 0a 23  50 61 72 65 6e 74 20 4f  | (&1D).#Parent O|
00038a30  53 5f 0a 3d 3e 09 52 30  20 3d 09 52 65 61 73 6f  |S_.=>.R0 =.Reaso|
00038a40  6e 20 3a 0a 09 20 09 20  20 30 09 3c 49 6e 69 74  |n :.. .  0.<Init|
00038a50  69 61 6c 69 73 65 20 68  65 61 70 3d 3e 4f 53 5f  |ialise heap=>OS_|
00038a60  48 65 61 70 30 3e 0a 09  20 09 20 20 31 09 3c 44  |Heap0>.. .  1.<D|
00038a70  65 73 63 72 69 62 65 20  68 65 61 70 3d 3e 4f 53  |escribe heap=>OS|
00038a80  5f 48 65 61 70 31 3e 0a  09 20 09 20 20 32 09 3c  |_Heap1>.. .  2.<|
00038a90  43 6c 61 69 6d 20 62 6c  6f 63 6b 3d 3e 4f 53 5f  |Claim block=>OS_|
00038aa0  48 65 61 70 32 3e 0a 09  20 09 20 20 33 09 3c 52  |Heap2>.. .  3.<R|
00038ab0  65 6c 65 61 73 65 20 62  6c 6f 63 6b 3d 3e 4f 53  |elease block=>OS|
00038ac0  5f 48 65 61 70 33 3e 0a  09 20 09 20 20 34 09 3c  |_Heap3>.. .  4.<|
00038ad0  43 68 61 6e 67 65 20 73  69 7a 65 20 6f 66 20 62  |Change size of b|
00038ae0  6c 6f 63 6b 3d 3e 4f 53  5f 48 65 61 70 34 3e 0a  |lock=>OS_Heap4>.|
00038af0  09 20 09 20 20 35 09 3c  43 68 61 6e 67 65 20 73  |. .  5.<Change s|
00038b00  69 7a 65 20 6f 66 20 68  65 61 70 3d 3e 4f 53 5f  |ize of heap=>OS_|
00038b10  48 65 61 70 35 3e 0a 09  20 09 20 20 36 09 3c 52  |Heap5>.. .  6.<R|
00038b20  65 61 64 20 62 6c 6f 63  6b 20 73 69 7a 65 3d 3e  |ead block size=>|
00038b30  4f 53 5f 48 65 61 70 36  3e 0a 09 52 31 20 3d 09  |OS_Heap6>..R1 =.|
00038b40  50 6f 69 6e 74 65 72 20  74 6f 20 68 65 61 70 0a  |Pointer to heap.|
00038b50  0a 54 68 65 73 65 20 63  61 6c 6c 73 20 63 6f 6e  |.These calls con|
00038b60  74 72 6f 6c 20 61 20 75  73 65 72 20 68 65 61 70  |trol a user heap|
00038b70  20 62 6c 6f 63 6b 20 61  6e 64 20 74 68 65 20 61  | block and the a|
00038b80  6c 6c 6f 63 61 74 69 6f  6e 20 6f 66 20 73 70 61  |llocation of spa|
00038b90  63 65 20 77 69 74 68 20  69 6e 20 69 74 2e 20 4e  |ce with in it. N|
00038ba0  6f 74 65 20 74 68 61 74  20 6e 6f 20 63 6f 64 65  |ote that no code|
00038bb0  20 69 73 20 70 72 6f 76  69 64 65 64 20 74 6f 20  | is provided to |
00038bc0  63 6f 6d 70 61 63 74 20  74 68 65 20 68 65 61 70  |compact the heap|
00038bd0  2e 00 00 00 44 41 54 41  70 01 00 00 4f 53 5f 48  |....DATAp...OS_H|
00038be0  65 61 70 53 6f 72 74 20  20 28 26 34 46 29 0a 23  |eapSort  (&4F).#|
00038bf0  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
00038c00  20 3d 20 6e 6f 20 6f 66  20 65 6c 65 6d 65 6e 74  | = no of element|
00038c10  73 0a 09 52 31 20 3d 20  70 74 72 20 74 6f 20 77  |s..R1 = ptr to w|
00038c20  6f 72 64 2d 61 72 72 61  79 20 2b 20 3c 66 6c 61  |ord-array + <fla|
00038c30  67 73 3d 3e 6f 73 5f 68  65 61 70 73 6f 72 74 30  |gs=>os_heapsort0|
00038c40  3e 0a 09 52 32 20 3d 20  3c 74 79 70 65 3d 3e 6f  |>..R2 = <type=>o|
00038c50  73 5f 68 65 61 70 73 6f  72 74 31 3e 20 6f 72 20  |s_heapsort1> or |
00038c60  3c 63 6f 6d 70 61 72 69  73 6f 6e 20 72 6f 75 74  |<comparison rout|
00038c70  69 6e 65 3d 3e 6f 73 5f  68 65 61 70 73 6f 72 74  |ine=>os_heapsort|
00038c80  32 3e 0a 6f 70 74 69 6f  6e 61 6c 20 3a 0a 09 52  |2>.optional :..R|
00038c90  33 20 3d 20 77 6f 72 6b  73 70 61 63 65 20 70 74  |3 = workspace pt|
00038ca0  72 0a 09 52 34 20 3d 20  61 72 72 61 79 20 6f 66  |r..R4 = array of|
00038cb0  20 61 63 74 75 61 6c 20  6f 62 6a 65 63 74 73 0a  | actual objects.|
00038cc0  09 52 35 20 3d 20 73 69  7a 65 20 6f 66 20 6f 62  |.R5 = size of ob|
00038cd0  6a 65 63 74 20 69 6e 20  52 34 0a 09 52 36 20 3d  |ject in R4..R6 =|
00038ce0  20 77 6f 72 6b 73 70 61  63 65 20 6f 66 20 52 35  | workspace of R5|
00038cf0  20 62 79 74 65 73 20 28  69 66 20 52 35 3e 31 36  | bytes (if R5>16|
00038d00  4b 29 0a 0a 54 68 69 73  20 53 57 49 20 73 6f 72  |K)..This SWI sor|
00038d10  74 73 20 61 20 6c 69 73  74 20 6f 66 20 6f 62 6a  |ts a list of obj|
00038d20  65 63 74 73 2c 20 75 73  69 6e 67 20 74 68 65 20  |ects, using the |
00038d30  48 65 61 70 20 53 6f 72  74 20 61 6c 67 6f 72 69  |Heap Sort algori|
00038d40  74 68 6d 2e 44 41 54 41  8c 00 00 00 46 6c 61 67  |thm.DATA....Flag|
00038d50  73 0a 42 69 74 09 4d 65  61 6e 69 6e 67 20 77 68  |s.Bit.Meaning wh|
00038d60  65 6e 20 73 65 74 0a 23  4c 69 6e 65 0a 32 39 09  |en set.#Line.29.|
00038d70  55 73 65 20 52 36 20 61  73 20 77 6f 72 6b 73 70  |Use R6 as worksp|
00038d80  61 63 65 0a 33 30 09 42  75 69 6c 64 20 77 6f 72  |ace.30.Build wor|
00038d90  64 20 61 72 72 61 79 20  69 6e 20 52 31 20 66 72  |d array in R1 fr|
00038da0  6f 6d 20 52 34 2b 52 35  0a 33 31 09 53 6f 72 74  |om R4+R5.31.Sort|
00038db0  20 52 34 20 61 72 72 61  79 20 61 66 74 65 72 20  | R4 array after |
00038dc0  73 6f 72 74 69 6e 67 20  70 6f 69 6e 74 65 72 73  |sorting pointers|
00038dd0  44 41 54 41 15 01 00 00  53 74 61 6e 64 61 72 64  |DATA....Standard|
00038de0  20 73 6f 72 74 20 72 6f  75 74 69 6e 65 73 0a 52  | sort routines.R|
00038df0  31 20 69 73 20 61 72 72  61 79 20 6f 66 20 3a 0a  |1 is array of :.|
00038e00  20 30 20 63 61 72 64 69  6e 61 6c 0a 20 31 20 69  | 0 cardinal. 1 i|
00038e10  6e 74 65 67 65 72 0a 20  32 20 70 74 72 20 74 6f  |nteger. 2 ptr to|
00038e20  20 63 61 72 64 69 6e 61  6c 0a 20 33 20 70 74 72  | cardinal. 3 ptr|
00038e30  20 74 6f 20 69 6e 74 65  67 65 72 0a 20 34 20 70  | to integer. 4 p|
00038e40  74 72 20 74 6f 20 63 68  61 72 73 20 28 63 61 73  |tr to chars (cas|
00038e50  65 20 69 6e 73 65 6e 73  69 74 69 76 65 29 0a 20  |e insensitive). |
00038e60  35 20 70 74 72 20 74 6f  20 63 68 61 72 73 20 28  |5 ptr to chars (|
00038e70  63 61 73 65 20 73 65 6e  73 69 74 69 76 65 29 0a  |case sensitive).|
00038e80  0a 49 66 20 52 32 20 3e  20 35 2c 20 74 68 65 6e  |.If R2 > 5, then|
00038e90  20 52 31 20 70 6f 69 6e  74 73 20 74 6f 20 63 75  | R1 points to cu|
00038ea0  73 74 6f 6d 20 6f 62 6a  65 63 74 73 2c 20 61 6e  |stom objects, an|
00038eb0  64 20 52 32 20 69 73 20  61 64 64 72 65 73 73 20  |d R2 is address |
00038ec0  6f 66 20 3c 63 6f 6d 70  61 72 69 73 6f 6e 20 72  |of <comparison r|
00038ed0  6f 75 74 69 6e 65 3d 3e  6f 73 5f 68 65 61 70 73  |outine=>os_heaps|
00038ee0  6f 72 74 32 3e 00 00 00  44 41 54 41 d1 00 00 00  |ort2>...DATA....|
00038ef0  43 6f 6d 70 61 72 69 73  6f 6e 20 72 6f 75 74 69  |Comparison routi|
00038f00  6e 65 0a 3d 3e 09 52 30  2c 52 31 09 3d 09 6f 62  |ne.=>.R0,R1.=.ob|
00038f10  6a 65 63 74 73 20 66 72  6f 6d 20 52 31 20 61 72  |jects from R1 ar|
00038f20  72 61 79 0a 09 52 31 32  09 3d 09 77 6f 72 6b 73  |ray..R12.=.works|
00038f30  70 61 63 65 20 70 74 72  20 67 69 76 65 6e 20 69  |pace ptr given i|
00038f40  6e 20 52 33 0a 0a 5c 3c  3d 09 52 30 2d 52 33 20  |n R3..\<=.R0-R3 |
00038f50  6d 61 79 20 62 65 20 63  6f 72 72 75 70 74 65 64  |may be corrupted|
00038f60  0a 09 66 6c 61 67 73 3a  20 4c 54 20 69 66 20 52  |..flags: LT if R|
00038f70  30 5c 3c 52 31 2c 20 65  6c 73 65 20 47 45 0a 0a  |0\<R1, else GE..|
00038f80  54 68 69 73 20 72 6f 75  74 69 6e 65 20 63 6f 6d  |This routine com|
00038f90  70 61 72 65 73 20 74 68  65 20 74 77 6f 20 6f 62  |pares the two ob|
00038fa0  6a 65 63 74 73 20 67 69  76 65 6e 20 62 79 20 52  |jects given by R|
00038fb0  30 20 61 6e 64 20 52 31  2e 00 00 00 44 41 54 41  |0 and R1....DATA|
00038fc0  ac 00 00 00 4f 53 5f 48  65 61 70 20 30 0a 23 50  |....OS_Heap 0.#P|
00038fd0  61 72 65 6e 74 20 4f 53  5f 48 65 61 70 0a 23 57  |arent OS_Heap.#W|
00038fe0  72 61 70 20 6f 66 66 0a  3d 3e 09 52 30 20 3d 20  |rap off.=>.R0 = |
00038ff0  30 0a 09 52 31 20 3d 20  70 6f 69 6e 74 65 72 20  |0..R1 = pointer |
00039000  74 6f 20 68 65 61 70 20  28 77 6f 72 64 20 61 6c  |to heap (word al|
00039010  69 67 6e 65 64 29 0a 09  52 33 20 3d 20 73 69 7a  |igned)..R3 = siz|
00039020  65 20 6f 66 20 68 65 61  70 20 28 6d 75 6c 74 69  |e of heap (multi|
00039030  70 6c 65 20 6f 66 20 34  29 0a 0a 54 68 69 73 20  |ple of 4)..This |
00039040  53 57 49 20 73 65 74 73  20 75 70 20 61 20 68 65  |SWI sets up a he|
00039050  61 70 20 6f 66 20 61 20  70 61 72 74 69 63 75 6c  |ap of a particul|
00039060  61 72 20 73 69 7a 65 2e  44 41 54 41 a6 00 00 00  |ar size.DATA....|
00039070  4f 53 5f 48 65 61 70 20  31 0a 23 50 61 72 65 6e  |OS_Heap 1.#Paren|
00039080  74 20 4f 53 5f 48 65 61  70 0a 23 57 72 61 70 20  |t OS_Heap.#Wrap |
00039090  6f 66 66 0a 3d 3e 09 52  30 20 3d 20 31 0a 09 52  |off.=>.R0 = 1..R|
000390a0  31 20 3d 20 70 6f 69 6e  74 65 72 20 74 6f 20 68  |1 = pointer to h|
000390b0  65 61 70 0a 5c 3c 3d 09  52 32 20 3d 20 6c 61 72  |eap.\<=.R2 = lar|
000390c0  67 65 73 74 20 66 72 65  65 0a 09 52 33 20 3d 20  |gest free..R3 = |
000390d0  74 6f 74 61 6c 20 66 72  65 65 0a 0a 54 68 69 73  |total free..This|
000390e0  20 53 57 49 20 72 65 61  64 73 20 74 68 65 20 63  | SWI reads the c|
000390f0  75 72 72 65 6e 74 20 73  74 61 74 75 73 20 6f 66  |urrent status of|
00039100  20 61 20 68 65 61 70 20  62 6c 6f 63 6b 2e 00 00  | a heap block...|
00039110  44 41 54 41 b2 00 00 00  4f 53 5f 48 65 61 70 20  |DATA....OS_Heap |
00039120  32 0a 23 50 61 72 65 6e  74 20 4f 53 5f 48 65 61  |2.#Parent OS_Hea|
00039130  70 0a 23 57 72 61 70 20  6f 66 66 0a 3d 3e 09 52  |p.#Wrap off.=>.R|
00039140  30 20 3d 20 32 0a 09 52  31 20 3d 20 70 6f 69 6e  |0 = 2..R1 = poin|
00039150  74 65 72 20 74 6f 20 68  65 61 70 0a 09 52 33 20  |ter to heap..R3 |
00039160  3d 20 73 69 7a 65 20 74  6f 20 63 6c 61 69 6d 0a  |= size to claim.|
00039170  0a 5c 3c 3d 09 52 32 20  3d 20 70 6f 69 6e 74 65  |.\<=.R2 = pointe|
00039180  72 20 74 6f 20 62 6c 6f  63 6b 2c 20 6f 72 20 30  |r to block, or 0|
00039190  20 69 66 20 66 61 69 6c  65 64 0a 0a 54 68 69 73  | if failed..This|
000391a0  20 53 57 49 20 63 6c 61  69 6d 73 20 61 20 73 65  | SWI claims a se|
000391b0  63 74 69 6f 6e 20 6f 66  20 74 68 65 20 68 65 61  |ction of the hea|
000391c0  70 2e 00 00 44 41 54 41  9f 00 00 00 4f 53 5f 48  |p...DATA....OS_H|
000391d0  65 61 70 20 33 0a 23 50  61 72 65 6e 74 20 4f 53  |eap 3.#Parent OS|
000391e0  5f 48 65 61 70 0a 23 57  72 61 70 20 6f 66 66 0a  |_Heap.#Wrap off.|
000391f0  3d 3e 09 52 30 20 3d 20  33 0a 09 52 31 20 3d 20  |=>.R0 = 3..R1 = |
00039200  70 6f 69 6e 74 65 72 20  74 6f 20 68 65 61 70 0a  |pointer to heap.|
00039210  09 52 32 20 3d 20 70 6f  69 6e 74 65 72 20 74 6f  |.R2 = pointer to|
00039220  20 62 6c 6f 63 6b 0a 0a  54 68 69 73 20 53 57 49  | block..This SWI|
00039230  20 72 65 6c 65 61 73 65  73 20 61 20 70 72 65 76  | releases a prev|
00039240  69 6f 75 73 6c 79 20 63  6c 61 69 6d 65 64 20 73  |iously claimed s|
00039250  65 63 74 69 6f 6e 20 6f  66 20 74 68 65 20 68 65  |ection of the he|
00039260  61 70 2e 00 44 41 54 41  e4 00 00 00 4f 53 5f 48  |ap..DATA....OS_H|
00039270  65 61 70 20 34 0a 23 50  61 72 65 6e 74 20 4f 53  |eap 4.#Parent OS|
00039280  5f 48 65 61 70 0a 23 57  72 61 70 20 6f 66 66 0a  |_Heap.#Wrap off.|
00039290  3d 3e 09 52 30 20 3d 20  34 0a 09 52 31 20 3d 20  |=>.R0 = 4..R1 = |
000392a0  70 6f 69 6e 74 65 72 20  74 6f 20 68 65 61 70 0a  |pointer to heap.|
000392b0  09 52 32 20 3d 20 70 6f  69 6e 74 65 72 20 74 6f  |.R2 = pointer to|
000392c0  20 62 6c 6f 63 6b 0a 09  52 33 20 3d 20 73 69 7a  | block..R3 = siz|
000392d0  65 20 69 6e 63 72 65 61  73 65 20 28 6f 72 20 2d  |e increase (or -|
000392e0  76 65 20 66 6f 72 20 64  65 63 72 65 61 73 65 29  |ve for decrease)|
000392f0  0a 5c 3c 3d 09 52 32 20  3d 20 6e 65 77 20 62 6c  |.\<=.R2 = new bl|
00039300  6f 63 6b 20 70 6f 69 6e  74 65 72 0a 0a 54 68 69  |ock pointer..Thi|
00039310  73 20 53 57 49 20 63 68  61 6e 67 65 73 20 74 68  |s SWI changes th|
00039320  65 20 73 69 7a 65 20 6f  66 20 61 20 63 6c 61 69  |e size of a clai|
00039330  6d 65 64 20 73 65 63 74  69 6f 6e 20 6f 66 20 74  |med section of t|
00039340  68 65 20 68 65 61 70 2e  44 41 54 41 25 01 00 00  |he heap.DATA%...|
00039350  4f 53 5f 48 65 61 70 20  35 0a 23 50 61 72 65 6e  |OS_Heap 5.#Paren|
00039360  74 20 4f 53 5f 48 65 61  70 0a 23 57 72 61 70 20  |t OS_Heap.#Wrap |
00039370  6f 66 66 0a 3d 3e 09 52  30 20 3d 20 35 0a 09 52  |off.=>.R0 = 5..R|
00039380  31 20 3d 20 70 6f 69 6e  74 65 72 20 74 6f 20 68  |1 = pointer to h|
00039390  65 61 70 0a 09 52 33 20  3d 20 73 69 7a 65 20 69  |eap..R3 = size i|
000393a0  6e 63 72 65 61 73 65 20  28 6f 72 20 2d 76 65 20  |ncrease (or -ve |
000393b0  66 6f 72 20 64 65 63 72  65 61 73 65 29 0a 3c 3d  |for decrease).<=|
000393c0  09 52 33 20 3d 20 61 63  74 75 61 6c 20 63 68 61  |.R3 = actual cha|
000393d0  6e 67 65 20 69 6e 20 73  69 7a 65 0a 0a 23 57 72  |nge in size..#Wr|
000393e0  61 70 0a 54 68 69 73 20  53 57 49 20 6e 6f 74 69  |ap.This SWI noti|
000393f0  66 69 65 73 20 74 68 65  20 4f 53 20 6f 66 20 61  |fies the OS of a|
00039400  20 63 68 61 6e 67 65 20  69 6e 20 74 68 65 20 73  | change in the s|
00039410  69 7a 65 20 6f 66 20 74  68 65 20 68 65 61 70 2e  |ize of the heap.|
00039420  20 49 66 20 74 68 65 20  68 65 61 70 20 63 61 6e  | If the heap can|
00039430  6e 6f 74 20 62 65 20 73  68 72 75 6e 6b 20 62 79  |not be shrunk by|
00039440  20 74 68 65 20 72 65 71  75 69 72 65 64 20 61 6d  | the required am|
00039450  6f 75 6e 74 20 61 6e 20  65 72 72 6f 72 20 77 69  |ount an error wi|
00039460  6c 6c 20 62 65 20 63 61  75 73 65 64 2e 00 00 00  |ll be caused....|
00039470  44 41 54 41 bb 00 00 00  4f 53 5f 48 65 61 70 20  |DATA....OS_Heap |
00039480  36 0a 23 50 61 72 65 6e  74 20 4f 53 5f 48 65 61  |6.#Parent OS_Hea|
00039490  70 0a 23 57 72 61 70 20  6f 66 66 0a 3d 3e 09 52  |p.#Wrap off.=>.R|
000394a0  30 20 3d 20 36 0a 09 52  31 20 3d 20 70 6f 69 6e  |0 = 6..R1 = poin|
000394b0  74 65 72 20 74 6f 20 68  65 61 70 0a 09 52 32 20  |ter to heap..R2 |
000394c0  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |= pointer to blo|
000394d0  63 6b 0a 5c 3c 3d 09 52  33 20 3d 20 73 69 7a 65  |ck.\<=.R3 = size|
000394e0  20 6f 66 20 62 6c 6f 63  6b 20 28 69 6e 63 6c 75  | of block (inclu|
000394f0  64 69 6e 67 20 68 65 61  64 65 72 29 0a 0a 54 68  |ding header)..Th|
00039500  69 73 20 53 57 49 20 72  65 74 75 72 6e 73 20 74  |is SWI returns t|
00039510  68 65 20 73 69 7a 65 20  6f 66 20 61 20 63 6c 61  |he size of a cla|
00039520  69 6d 65 64 20 62 6c 6f  63 6b 2e 00 44 49 52 24  |imed block..DIR$|
00039530  64 02 00 00 64 02 00 00  90 97 03 00 46 ff ff ff  |d...d.......F...|
00039540  6a 1a 62 f2 1e 01 00 00  13 00 00 00 00 00 00 00  |j.b.............|
00039550  44 79 6e 61 6d 69 63 41  72 65 61 00 b0 98 03 00  |DynamicArea.....|
00039560  46 ff ff ff 5b e2 fd fc  41 02 00 00 13 00 00 00  |F...[...A.......|
00039570  00 00 00 00 4c 69 6e 65  00 00 00 00 f4 9a 03 00  |....Line........|
00039580  45 ff ff ff 63 51 e6 ff  f0 00 00 00 13 00 00 00  |E...cQ..........|
00039590  00 00 00 00 4d 65 6d 4d  61 70 49 6e 66 6f 00 00  |....MemMapInfo..|
000395a0  e4 9b 03 00 47 ff ff ff  ff bb 0c 0a ac 04 00 00  |....G...........|
000395b0  13 00 00 00 00 00 00 00  4d 6f 64 65 56 61 72 69  |........ModeVari|
000395c0  61 62 6c 65 00 00 00 00  90 a0 03 00 46 ff ff ff  |able........F...|
000395d0  f8 3b 14 1e 68 00 00 00  13 00 00 00 00 00 00 00  |.;..h...........|
000395e0  4d 6f 6e 6f 74 6f 6e 69  63 54 69 6d 65 00 00 00  |MonotonicTime...|
000395f0  f8 a0 03 00 45 ff ff ff  c4 43 e6 ff d0 00 00 00  |....E....C......|
00039600  13 00 00 00 00 00 00 00  50 6f 69 6e 74 00 00 00  |........Point...|
00039610  c8 a1 03 00 47 ff ff ff  09 7a 0c 0a 21 02 00 00  |....G....z..!...|
00039620  13 00 00 00 00 00 00 00  55 6e 73 69 67 6e 65 64  |........Unsigned|
00039630  00 00 00 00 ec a3 03 00  46 ff ff ff 94 f2 34 56  |........F.....4V|
00039640  b4 01 00 00 13 00 00 00  00 00 00 00 56 61 72 56  |............VarV|
00039650  61 6c 00 00 a0 a5 03 00  47 ff ff ff 06 b8 16 0a  |al......G.......|
00039660  6d 07 00 00 13 00 00 00  00 00 00 00 53 79 73 49  |m...........SysI|
00039670  6e 66 6f 00 10 ad 03 00  47 ff ff ff 11 aa 0b 0a  |nfo.....G.......|
00039680  58 05 00 00 13 00 00 00  00 00 00 00 41 72 67 73  |X...........Args|
00039690  00 00 00 00 68 b2 03 00  46 ff ff ff e8 f7 65 f5  |....h...F.....e.|
000396a0  dd 08 00 00 13 00 00 00  00 00 00 00 56 64 75 56  |............VduV|
000396b0  61 72 69 61 62 6c 65 73  00 00 00 00 48 bb 03 00  |ariables....H...|
000396c0  46 ff ff ff 62 91 28 a7  0e 01 00 00 13 00 00 00  |F...b.(.........|
000396d0  00 00 00 00 4d 65 6d 4d  61 70 45 6e 74 72 69 65  |....MemMapEntrie|
000396e0  73 00 00 00 58 bc 03 00  46 ff ff ff f7 2b 1e a2  |s...X...F....+..|
000396f0  03 01 00 00 13 00 00 00  00 00 00 00 52 41 4d 46  |............RAMF|
00039700  73 4c 69 6d 69 74 73 00  5c bd 03 00 46 ff ff ff  |sLimits.\...F...|
00039710  b2 a3 64 f5 63 01 00 00  13 00 00 00 00 00 00 00  |..d.c...........|
00039720  43 00 00 00 c0 be 03 00  46 ff ff ff 2b c3 64 f5  |C.......F...+.d.|
00039730  0c 01 00 00 13 00 00 00  00 00 00 00 44 65 66 61  |............Defa|
00039740  75 6c 74 48 61 6e 64 6c  65 72 00 00 cc bf 03 00  |ultHandler......|
00039750  46 ff ff ff 20 70 a8 fa  f2 02 00 00 13 00 00 00  |F... p..........|
00039760  00 00 00 00 65 73 63 61  70 65 73 74 61 74 65 00  |....escapestate.|
00039770  c0 c2 03 00 46 ff ff ff  df 53 65 f5 47 03 00 00  |....F....Se.G...|
00039780  13 00 00 00 00 00 00 00  50 61 6c 65 74 74 65 00  |........Palette.|
00039790  44 41 54 41 1e 01 00 00  4f 53 5f 52 65 61 64 44  |DATA....OS_ReadD|
000397a0  79 6e 61 6d 69 63 41 72  65 61 20 20 28 26 35 43  |ynamicArea  (&5C|
000397b0  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3d 3e  |).#Parent OS_.=>|
000397c0  09 52 30 20 3d 09 3c 41  72 65 61 3d 3e 4f 53 5f  |.R0 =.<Area=>OS_|
000397d0  41 72 65 61 73 3e 20 74  6f 20 72 65 61 64 2c 20  |Areas> to read, |
000397e0  62 69 74 20 37 20 73 65  74 20 74 6f 20 72 65 61  |bit 7 set to rea|
000397f0  64 20 6d 61 78 69 6d 75  6d 20 73 69 7a 65 20 74  |d maximum size t|
00039800  6f 20 52 32 0a 0a 5c 3c  3d 09 52 30 20 3d 09 73  |o R2..\<=.R0 =.s|
00039810  74 61 72 74 20 61 64 64  72 65 73 73 20 6f 66 20  |tart address of |
00039820  61 72 65 61 20 28 4e 4f  54 20 63 6f 72 72 75 70  |area (NOT corrup|
00039830  74 20 61 73 20 70 72 65  76 69 6f 75 73 6c 79 20  |t as previously |
00039840  73 74 61 74 65 64 29 0a  09 52 31 20 3d 09 63 75  |stated)..R1 =.cu|
00039850  72 72 65 6e 74 20 6e 75  6d 62 65 72 20 6f 66 20  |rrent number of |
00039860  62 79 74 65 73 20 69 6e  20 61 72 65 61 0a 09 52  |bytes in area..R|
00039870  32 20 3d 09 6d 61 78 69  6d 75 6d 20 73 69 7a 65  |2 =.maximum size|
00039880  20 6f 66 20 61 72 65 61  0a 09 0a 54 68 69 73 20  | of area...This |
00039890  53 57 49 20 72 65 61 64  73 20 74 68 65 20 73 69  |SWI reads the si|
000398a0  7a 65 20 6f 66 20 61 6e  20 61 72 65 61 2e 00 00  |ze of an area...|
000398b0  44 41 54 41 41 02 00 00  4f 53 5f 52 65 61 64 4c  |DATAA...OS_ReadL|
000398c0  69 6e 65 20 20 28 26 30  45 29 0a 23 50 61 72 65  |ine  (&0E).#Pare|
000398d0  6e 74 20 4f 53 5f 0a 3d  3e 09 52 30 20 3d 09 62  |nt OS_.=>.R0 =.b|
000398e0  75 66 66 65 72 20 2b 20  3c 66 6c 61 67 73 3d 3e  |uffer + <flags=>|
000398f0  2e 66 6c 61 67 73 3e 0a  09 52 31 20 3d 09 73 69  |.flags>..R1 =.si|
00039900  7a 65 20 6f 66 20 62 75  66 66 65 72 0a 09 52 32  |ze of buffer..R2|
00039910  20 3d 09 6c 6f 77 65 73  74 20 63 68 61 72 20 61  | =.lowest char a|
00039920  6c 6c 6f 77 65 64 0a 09  52 33 20 3d 09 68 69 67  |llowed..R3 =.hig|
00039930  68 65 73 74 20 63 68 61  72 20 61 6c 6c 6f 77 65  |hest char allowe|
00039940  64 0a 09 52 34 20 3d 09  63 68 61 72 61 63 74 65  |d..R4 =.characte|
00039950  72 20 74 6f 20 6f 75 74  70 75 74 20 28 69 66 20  |r to output (if |
00039960  62 69 74 20 33 30 20 73  65 74 29 0a 0a 3c 3d 09  |bit 30 set)..<=.|
00039970  52 30 20 63 6f 72 72 75  70 74 65 64 0a 09 52 31  |R0 corrupted..R1|
00039980  20 3d 09 63 68 61 72 73  20 72 65 61 64 2c 20 65  | =.chars read, e|
00039990  78 63 6c 20 52 65 74 75  72 6e 0a 09 52 32 20 63  |xcl Return..R2 c|
000399a0  6f 72 72 75 70 74 65 64  0a 09 52 33 20 63 6f 72  |orrupted..R3 cor|
000399b0  72 75 70 74 65 64 0a 09  43 20 73 65 74 20 69 66  |rupted..C set if|
000399c0  20 45 73 63 61 70 65 0a  0a 54 68 69 73 20 53 57  | Escape..This SW|
000399d0  49 20 72 65 61 64 73 20  61 20 6c 69 6e 65 20 66  |I reads a line f|
000399e0  72 6f 6d 20 74 68 65 20  63 75 72 72 65 6e 74 20  |rom the current |
000399f0  69 6e 70 75 74 20 73 74  72 65 61 6d 2e 20 49 6e  |input stream. In|
00039a00  70 75 74 20 69 73 20 74  65 72 6d 69 6e 61 74 65  |put is terminate|
00039a10  64 20 77 69 74 68 20 52  65 74 75 72 6e 2c 20 43  |d with Return, C|
00039a20  74 72 6c 2d 4a 20 6f 72  20 45 73 63 61 70 65 2e  |trl-J or Escape.|
00039a30  20 44 65 6c 65 74 65 20  61 6e 64 20 42 61 63 6b  | Delete and Back|
00039a40  73 70 61 63 65 20 64 65  6c 65 74 65 73 20 6c 61  |space deletes la|
00039a50  73 74 20 63 68 61 72 20  65 6e 74 65 72 65 64 2e  |st char entered.|
00039a60  20 43 74 72 6c 2d 55 20  65 6d 70 74 69 65 73 20  | Ctrl-U empties |
00039a70  62 75 66 66 65 72 2e 0a  23 53 75 62 70 61 67 65  |buffer..#Subpage|
00039a80  20 66 6c 61 67 73 0a 62  69 74 09 6d 65 61 6e 69  | flags.bit.meani|
00039a90  6e 67 20 69 66 20 73 65  74 0a 23 4c 69 6e 65 0a  |ng if set.#Line.|
00039aa0  33 30 09 45 63 68 6f 20  63 68 61 72 61 63 74 65  |30.Echo characte|
00039ab0  72 20 69 6e 20 52 34 20  28 70 61 73 73 77 6f 72  |r in R4 (passwor|
00039ac0  64 20 73 74 79 6c 65 29  0a 33 31 09 45 63 68 6f  |d style).31.Echo|
00039ad0  20 6f 6e 6c 79 20 63 68  61 72 61 63 74 65 72 73  | only characters|
00039ae0  20 65 6e 74 65 72 69 6e  67 20 62 75 66 66 65 72  | entering buffer|
00039af0  0a 00 00 00 44 41 54 41  f0 00 00 00 4f 53 5f 52  |....DATA....OS_R|
00039b00  65 61 64 4d 65 6d 4d 61  70 49 6e 66 6f 20 20 28  |eadMemMapInfo  (|
00039b10  26 35 31 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&51).#Parent OS_|
00039b20  0a 5c 3c 3d 09 52 30 20  3d 20 70 61 67 65 20 73  |.\<=.R0 = page s|
00039b30  69 7a 65 20 69 6e 20 62  79 74 65 73 0a 09 52 31  |ize in bytes..R1|
00039b40  20 3d 20 6e 75 6d 62 65  72 20 6f 66 20 70 61 67  | = number of pag|
00039b50  65 73 0a 0a 54 68 69 73  20 63 61 6c 6c 20 72 65  |es..This call re|
00039b60  61 64 73 20 74 68 65 20  70 61 67 65 20 73 69 7a  |ads the page siz|
00039b70  65 20 75 73 65 64 20 62  79 20 4d 45 4d 43 20 61  |e used by MEMC a|
00039b80  6e 64 20 74 68 65 20 6e  75 6d 62 65 72 20 6f 66  |nd the number of|
00039b90  20 70 61 67 65 73 20 69  6e 20 75 73 65 2e 20 56  | pages in use. V|
00039ba0  61 6c 69 64 20 70 61 67  65 20 6e 75 6d 62 65 72  |alid page number|
00039bb0  73 20 61 72 65 20 30 20  74 6f 20 52 31 2d 31 2c  |s are 0 to R1-1,|
00039bc0  20 61 6e 64 20 74 68 65  20 74 6f 74 61 6c 20 6d  | and the total m|
00039bd0  65 6d 6f 72 79 20 73 69  7a 65 20 69 73 20 52 30  |emory size is R0|
00039be0  2a 52 31 2e 44 41 54 41  ac 04 00 00 4f 53 5f 52  |*R1.DATA....OS_R|
00039bf0  65 61 64 4d 6f 64 65 56  61 72 69 61 62 6c 65 20  |eadModeVariable |
00039c00  20 28 26 33 35 29 0a 23  50 61 72 65 6e 74 20 4f  | (&35).#Parent O|
00039c10  53 5f 0a 3d 3e 09 52 30  20 3d 20 73 63 72 65 65  |S_.=>.R0 = scree|
00039c20  6e 20 6d 6f 64 65 20 28  2d 31 20 66 6f 72 20 63  |n mode (-1 for c|
00039c30  75 72 72 65 6e 74 29 0a  09 52 31 20 3d 20 3c 76  |urrent)..R1 = <v|
00039c40  61 72 69 61 62 6c 65 20  6e 75 6d 62 65 72 3d 3e  |ariable number=>|
00039c50  2e 76 61 72 69 61 62 6c  65 3e 0a 0a 5c 3c 3d 09  |.variable>..\<=.|
00039c60  52 32 20 3d 20 76 61 6c  75 65 20 6f 66 20 76 61  |R2 = value of va|
00039c70  72 69 61 62 6c 65 0a 09  43 20 69 73 20 73 65 74  |riable..C is set|
00039c80  20 69 66 20 76 61 72 69  61 62 6c 65 20 6f 72 20  | if variable or |
00039c90  6d 6f 64 65 20 77 65 72  65 20 69 6e 76 61 6c 69  |mode were invali|
00039ca0  64 0a 0a 54 68 69 73 20  53 57 49 20 61 6c 6c 6f  |d..This SWI allo|
00039cb0  77 73 20 79 6f 75 20 74  6f 20 72 65 61 64 20 69  |ws you to read i|
00039cc0  6e 66 6f 72 6d 61 74 69  6f 6e 20 61 62 6f 75 74  |nformation about|
00039cd0  20 61 20 70 61 72 74 69  63 75 6c 61 72 20 6d 6f  | a particular mo|
00039ce0  64 65 20 77 69 74 68 6f  75 74 20 68 61 76 69 6e  |de without havin|
00039cf0  67 20 74 6f 20 63 68 61  6e 67 65 20 69 6e 74 6f  |g to change into|
00039d00  20 74 68 61 74 20 6d 6f  64 65 2e 20 53 65 65 20  | that mode. See |
00039d10  61 6c 73 6f 20 3c 4f 53  5f 52 65 61 64 56 64 75  |also <OS_ReadVdu|
00039d20  56 61 72 69 61 62 6c 65  73 3e 2e 0a 23 0a 23 53  |Variables>..#.#S|
00039d30  75 62 70 61 67 65 20 76  61 72 69 61 62 6c 65 0a  |ubpage variable.|
00039d40  56 61 72 69 61 62 6c 65  20 6e 75 6d 62 65 72 73  |Variable numbers|
00039d50  0a 4e 72 09 4e 61 6d 65  09 09 4d 65 61 6e 69 6e  |.Nr.Name..Meanin|
00039d60  67 0a 23 4c 69 6e 65 0a  30 09 4d 6f 64 65 46 6c  |g.#Line.0.ModeFl|
00039d70  61 67 73 09 42 69 74 73  20 6f 66 20 72 65 73 75  |ags.Bits of resu|
00039d80  6c 74 3a 0a 09 20 09 09  20 20 30 20 20 31 20 2d  |lt:.. ..  0  1 -|
00039d90  3e 09 6e 6f 6e 20 67 72  61 70 68 69 63 73 20 6d  |>.non graphics m|
00039da0  6f 64 65 0a 09 20 09 09  20 20 31 20 20 31 20 2d  |ode.. ..  1  1 -|
00039db0  3e 09 74 65 6c 65 74 65  78 74 20 6d 6f 64 65 0a  |>.teletext mode.|
00039dc0  09 20 09 09 20 20 32 20  20 31 20 2d 3e 09 67 61  |. ..  2  1 ->.ga|
00039dd0  70 20 6d 6f 64 65 20 28  67 61 70 20 62 65 74 77  |p mode (gap betw|
00039de0  2e 20 76 64 75 34 20 6c  69 6e 65 73 29 0a 09 20  |. vdu4 lines).. |
00039df0  09 09 20 20 33 20 20 31  20 2d 3e 09 27 42 42 43  |..  3  1 ->.'BBC|
00039e00  27 20 67 61 70 20 6d 6f  64 65 20 28 33 20 26 20  |' gap mode (3 & |
00039e10  36 29 2c 20 30 20 2d 3e  20 6e 6f 6e 20 67 61 70  |6), 0 -> non gap|
00039e20  0a 09 20 09 09 20 20 34  20 20 31 20 2d 3e 09 68  |.. ..  4  1 ->.h|
00039e30  69 2d 72 65 73 20 6d 6f  6e 6f 20 6d 6f 64 65 0a  |i-res mono mode.|
00039e40  09 20 09 09 20 20 35 20  20 31 20 2d 3e 09 64 6f  |. ..  5  1 ->.do|
00039e50  75 62 6c 65 20 68 65 69  67 68 74 20 56 44 55 20  |uble height VDU |
00039e60  63 68 61 72 73 2c 20 30  20 2d 3e 20 6e 6f 72 6d  |chars, 0 -> norm|
00039e70  61 6c 0a 09 20 09 09 20  20 36 20 20 31 20 2d 3e  |al.. ..  6  1 ->|
00039e80  09 68 61 72 64 77 61 72  65 20 73 63 72 6f 6c 6c  |.hardware scroll|
00039e90  20 6e 65 76 65 72 20 75  73 65 64 0a 31 09 53 63  | never used.1.Sc|
00039ea0  72 52 43 6f 6c 09 09 4e  75 6d 62 65 72 20 6f 66  |rRCol..Number of|
00039eb0  20 74 65 78 74 63 6f 6c  75 6d 6e 73 20 2d 31 0a  | textcolumns -1.|
00039ec0  32 09 53 63 72 42 52 6f  77 09 09 4e 75 6d 62 65  |2.ScrBRow..Numbe|
00039ed0  72 20 6f 66 20 74 65 78  74 72 6f 77 73 20 2d 31  |r of textrows -1|
00039ee0  0a 33 09 4e 43 6f 6c 6f  75 72 09 09 4d 61 78 20  |.3.NColour..Max |
00039ef0  6c 6f 67 69 63 61 6c 20  63 6f 6c 6f 75 72 20 28  |logical colour (|
00039f00  31 2c 33 2c 31 35 20 6f  72 20 36 33 29 0a 34 09  |1,3,15 or 63).4.|
00039f10  58 45 69 67 46 61 63 74  6f 72 09 53 63 72 65 65  |XEigFactor.Scree|
00039f20  6e 78 20 3d 20 6f 73 78  20 3e 3e 20 58 45 69 67  |nx = osx >> XEig|
00039f30  46 61 63 74 6f 72 0a 35  09 59 45 69 67 46 61 63  |Factor.5.YEigFac|
00039f40  74 6f 72 09 53 63 72 65  65 6e 79 20 3d 20 6f 73  |tor.Screeny = os|
00039f50  79 20 3e 3e 20 59 45 69  67 46 61 63 74 6f 72 0a  |y >> YEigFactor.|
00039f60  36 09 4c 69 6e 65 4c 65  6e 67 74 68 09 42 79 74  |6.LineLength.Byt|
00039f70  65 6c 65 6e 67 74 68 20  6f 66 20 6f 6e 65 20 70  |elength of one p|
00039f80  69 78 65 6c 2d 6c 69 6e  65 0a 37 09 53 63 72 65  |ixel-line.7.Scre|
00039f90  65 6e 53 69 7a 65 09 42  79 74 65 73 69 7a 65 20  |enSize.Bytesize |
00039fa0  6f 66 20 65 6e 74 69 72  65 20 73 63 72 65 65 6e  |of entire screen|
00039fb0  0a 38 09 59 53 68 66 74  46 61 63 74 6f 72 09 4b  |.8.YShftFactor.K|
00039fc0  65 70 74 20 66 6f 72 20  63 6f 6d 70 61 62 69 6c  |ept for compabil|
00039fd0  69 74 79 2e 20 44 6f 6e  27 74 20 75 73 65 2e 0a  |ity. Don't use..|
00039fe0  39 09 4c 6f 67 32 42 50  50 09 09 42 69 74 73 20  |9.Log2BPP..Bits |
00039ff0  70 72 20 70 69 78 65 6c  20 3d 20 31 20 5c 3c 5c  |pr pixel = 1 \<\|
0003a000  3c 20 4c 6f 67 32 42 50  50 0a 31 30 09 4c 6f 67  |< Log2BPP.10.Log|
0003a010  32 42 50 43 09 09 42 79  74 65 73 20 70 72 20 63  |2BPC..Bytes pr c|
0003a020  68 61 72 20 3d 20 31 20  5c 3c 5c 3c 20 4c 6f 67  |har = 1 \<\< Log|
0003a030  32 42 50 43 0a 31 31 09  58 57 69 6e 64 4c 69 6d  |2BPC.11.XWindLim|
0003a040  69 74 09 4e 75 6d 62 65  72 20 6f 66 20 78 20 70  |it.Number of x p|
0003a050  69 78 65 6c 73 20 6f 6e  20 73 63 72 65 65 6e 20  |ixels on screen |
0003a060  2d 31 0a 31 32 09 59 57  69 6e 64 4c 69 6d 69 74  |-1.12.YWindLimit|
0003a070  09 4e 75 6d 62 65 72 20  6f 66 20 79 20 70 69 78  |.Number of y pix|
0003a080  65 6c 73 20 6f 6e 20 73  63 72 65 65 6e 20 2d 31  |els on screen -1|
0003a090  44 41 54 41 68 00 00 00  4f 53 5f 52 65 61 64 4d  |DATAh...OS_ReadM|
0003a0a0  6f 6e 6f 74 6f 6e 69 63  54 69 6d 65 20 20 28 26  |onotonicTime  (&|
0003a0b0  34 32 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |42).#Parent OS_.|
0003a0c0  5c 3c 3d 09 52 30 20 3d  09 4e 75 6d 62 65 72 20  |\<=.R0 =.Number |
0003a0d0  6f 66 20 63 65 6e 74 69  2d 63 65 63 6f 6e 64 73  |of centi-ceconds|
0003a0e0  20 73 69 6e 63 65 20 6c  61 73 74 20 68 61 72 64  | since last hard|
0003a0f0  20 72 65 73 65 74 2e 0a  44 41 54 41 d0 00 00 00  | reset..DATA....|
0003a100  4f 53 5f 52 65 61 64 50  6f 69 6e 74 20 20 28 26  |OS_ReadPoint  (&|
0003a110  33 32 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |32).#Parent OS_.|
0003a120  3d 3e 09 52 30 20 3d 20  58 20 63 6f 6f 72 64 0a  |=>.R0 = X coord.|
0003a130  09 52 31 20 3d 20 59 20  63 6f 6f 72 64 0a 0a 5c  |.R1 = Y coord..\|
0003a140  3c 3d 09 52 32 20 3d 20  43 6f 6c 6f 75 72 0a 09  |<=.R2 = Colour..|
0003a150  52 33 20 3d 20 54 69 6e  74 0a 09 52 34 20 3d 20  |R3 = Tint..R4 = |
0003a160  46 6c 61 67 0a 0a 54 68  69 73 20 53 57 49 20 72  |Flag..This SWI r|
0003a170  65 74 75 72 6e 73 20 74  68 65 20 63 6f 6c 6f 75  |eturns the colou|
0003a180  72 20 61 6e 64 20 74 69  6e 74 20 6f 66 20 61 20  |r and tint of a |
0003a190  70 6f 69 6e 74 2e 20 49  66 20 70 6f 69 6e 74 20  |point. If point |
0003a1a0  77 61 73 20 6f 66 66 20  73 63 72 65 65 6e 20 74  |was off screen t|
0003a1b0  68 65 6e 20 52 34 20 3d  20 2d 31 2c 20 65 6c 73  |hen R4 = -1, els|
0003a1c0  65 20 52 34 20 3d 20 30  44 41 54 41 21 02 00 00  |e R4 = 0DATA!...|
0003a1d0  4f 53 5f 52 65 61 64 55  6e 73 69 67 6e 65 64 20  |OS_ReadUnsigned |
0003a1e0  20 28 26 32 31 29 0a 23  50 61 72 65 6e 74 20 4f  | (&21).#Parent O|
0003a1f0  53 5f 0a 3d 3e 09 52 30  20 3d 20 42 61 73 65 20  |S_.=>.R0 = Base |
0003a200  28 32 2d 33 36 20 44 65  66 61 75 6c 74 20 31 30  |(2-36 Default 10|
0003a210  29 20 2b 20 3c 66 6c 61  67 73 3d 3e 2e 66 6c 61  |) + <flags=>.fla|
0003a220  67 73 3e 0a 09 52 31 20  3d 20 53 74 72 69 6e 67  |gs>..R1 = String|
0003a230  20 74 6f 20 63 6f 6e 76  65 72 74 0a 09 28 52 32  | to convert..(R2|
0003a240  20 3d 20 4d 61 78 20 76  61 6c 75 65 29 0a 0a 5c  | = Max value)..\|
0003a250  3c 3d 09 52 31 20 3d 20  70 74 72 20 74 6f 20 74  |<=.R1 = ptr to t|
0003a260  65 72 6d 69 6e 61 74 6f  72 20 63 68 61 72 0a 09  |erminator char..|
0003a270  52 32 20 3d 20 76 61 6c  75 65 0a 0a 54 68 69 73  |R2 = value..This|
0003a280  20 53 57 49 20 63 6f 6e  76 65 72 74 73 20 61 20  | SWI converts a |
0003a290  73 74 72 69 6e 67 20 69  6e 74 6f 20 61 6e 20 69  |string into an i|
0003a2a0  6e 74 65 67 65 72 2e 20  49 66 20 73 74 72 69 6e  |nteger. If strin|
0003a2b0  67 20 73 74 61 72 74 73  20 77 69 74 68 20 26 2c  |g starts with &,|
0003a2c0  20 62 61 73 65 20 31 36  20 69 73 20 61 73 73 75  | base 16 is assu|
0003a2d0  6d 65 64 2e 20 49 66 20  73 74 72 69 6e 67 20 73  |med. If string s|
0003a2e0  74 61 72 74 73 20 77 69  74 68 20 62 61 73 65 5f  |tarts with base_|
0003a2f0  2c 20 74 68 69 73 20 62  61 73 65 20 69 73 20 75  |, this base is u|
0003a300  73 65 64 2e 20 49 66 20  6e 6f 20 62 61 73 65 20  |sed. If no base |
0003a310  69 73 20 67 69 76 65 6e  20 69 6e 20 73 74 72 69  |is given in stri|
0003a320  6e 67 2c 20 74 68 65 20  62 61 73 65 20 69 6e 20  |ng, the base in |
0003a330  52 30 20 69 73 20 75 73  65 64 2c 20 6f 72 20 31  |R0 is used, or 1|
0003a340  30 20 69 66 20 74 68 61  74 20 62 61 73 65 20 69  |0 if that base i|
0003a350  73 20 69 6e 76 61 6c 69  64 2e 0a 23 0a 23 53 75  |s invalid..#.#Su|
0003a360  62 70 61 67 65 20 66 6c  61 67 73 0a 46 6c 61 67  |bpage flags.Flag|
0003a370  73 62 69 74 73 20 69 6e  20 52 30 0a 23 77 72 61  |sbits in R0.#wra|
0003a380  70 20 6f 66 66 0a 20 33  31 09 4d 75 73 74 20 74  |p off. 31.Must t|
0003a390  65 72 6d 69 6e 61 74 65  20 77 69 74 68 20 63 74  |erminate with ct|
0003a3a0  72 6c 2c 73 70 61 63 65  0a 20 33 30 09 4d 75 73  |rl,space. 30.Mus|
0003a3b0  74 20 62 65 20 69 6e 20  74 68 65 20 72 61 6e 67  |t be in the rang|
0003a3c0  65 20 5b 30 2c 32 35 35  5d 0a 20 32 39 09 4d 75  |e [0,255]. 29.Mu|
0003a3d0  73 74 20 62 65 20 69 6e  20 74 68 65 20 72 61 6e  |st be in the ran|
0003a3e0  67 65 20 5b 30 2c 52 32  5d 00 00 00 44 41 54 41  |ge [0,R2]...DATA|
0003a3f0  b4 01 00 00 4f 53 5f 52  65 61 64 56 61 72 56 61  |....OS_ReadVarVa|
0003a400  6c 20 20 28 26 32 33 29  0a 23 50 61 72 65 6e 74  |l  (&23).#Parent|
0003a410  20 4f 53 5f 0a 3d 3e 09  52 30 20 3d 09 50 74 72  | OS_.=>.R0 =.Ptr|
0003a420  20 74 6f 20 28 77 69 6c  64 63 61 72 64 65 64 29  | to (wildcarded)|
0003a430  20 6e 61 6d 65 0a 09 52  31 20 3d 09 50 74 72 20  | name..R1 =.Ptr |
0003a440  74 6f 20 62 75 66 66 65  72 0a 09 52 32 20 3d 09  |to buffer..R2 =.|
0003a450  4c 65 6e 20 6f 66 20 62  75 66 66 65 72 0a 09 52  |Len of buffer..R|
0003a460  33 20 3d 09 4e 61 6d 65  20 70 74 72 20 28 30 20  |3 =.Name ptr (0 |
0003a470  66 6f 72 20 31 73 74 20  63 61 6c 6c 29 0a 09 52  |for 1st call)..R|
0003a480  34 20 3d 09 3c 56 61 72  69 61 62 6c 65 20 74 79  |4 =.<Variable ty|
0003a490  70 65 3d 3e 4f 53 5f 76  61 72 74 79 70 65 73 3e  |pe=>OS_vartypes>|
0003a4a0  0a 09 0a 5c 3c 3d 09 52  32 20 3d 09 42 79 74 65  |...\<=.R2 =.Byte|
0003a4b0  73 20 72 65 61 64 0a 09  52 33 20 3d 09 4e 65 77  |s read..R3 =.New|
0003a4c0  20 6e 61 6d 65 20 70 74  72 0a 09 52 34 20 3d 09  | name ptr..R4 =.|
0003a4d0  56 61 72 69 61 62 6c 65  20 74 79 70 65 0a 0a 54  |Variable type..T|
0003a4e0  68 69 73 20 53 57 49 20  72 65 74 75 72 6e 73 20  |his SWI returns |
0003a4f0  74 79 70 65 20 61 6e 64  20 76 61 6c 75 65 20 6f  |type and value o|
0003a500  66 20 61 20 76 61 72 69  61 62 6c 65 2e 20 54 6f  |f a variable. To|
0003a510  20 6a 75 73 74 20 63 68  65 63 6b 20 69 66 20 69  | just check if i|
0003a520  74 20 65 78 69 73 74 73  2c 20 63 61 6c 6c 20 77  |t exists, call w|
0003a530  69 74 68 20 52 32 5c 3c  30 2e 20 49 66 20 69 74  |ith R2\<0. If it|
0003a540  27 73 20 73 74 69 6c 6c  20 5c 3c 30 20 6f 6e 20  |'s still \<0 on |
0003a550  65 78 69 74 2c 20 76 61  72 69 61 62 6c 65 20 65  |exit, variable e|
0003a560  78 69 73 74 73 2e 20 41  6e 20 65 72 72 6f 72 20  |xists. An error |
0003a570  77 69 6c 6c 20 62 65 20  72 65 74 75 72 6e 65 64  |will be returned|
0003a580  20 69 66 20 74 68 65 20  76 61 72 69 61 62 6c 65  | if the variable|
0003a590  20 64 6f 65 73 20 6e 6f  74 20 65 78 69 73 74 2e  | does not exist.|
0003a5a0  44 41 54 41 6d 07 00 00  4f 53 5f 52 65 61 64 53  |DATAm...OS_ReadS|
0003a5b0  79 73 49 6e 66 6f 20 20  28 26 35 38 29 0a 23 50  |ysInfo  (&58).#P|
0003a5c0  61 72 65 6e 74 20 4f 53  5f 0a 3d 3e 20 52 30 20  |arent OS_.=> R0 |
0003a5d0  3d 09 76 61 72 69 61 62  6c 65 20 3a 0a 09 20 20  |=.variable :..  |
0003a5e0  30 09 3c 53 63 72 65 65  6e 20 73 69 7a 65 3d 3e  |0.<Screen size=>|
0003a5f0  2e 30 3e 0a 09 20 20 31  09 3c 4d 6f 64 65 3d 3e  |.0>..  1.<Mode=>|
0003a600  2e 31 3e 0a 09 20 20 32  09 3c 4d 61 63 68 69 6e  |.1>..  2.<Machin|
0003a610  65 20 49 64 3d 3e 2e 32  3e 0a 09 20 20 33 09 3c  |e Id=>.2>..  3.<|
0003a620  38 32 43 37 31 78 20 66  65 61 74 75 72 65 73 3d  |82C71x features=|
0003a630  3e 2e 33 3e 0a 0a 54 68  65 73 65 20 63 61 6c 6c  |>.3>..These call|
0003a640  73 20 72 65 61 64 20 69  6e 66 6f 72 6d 61 74 69  |s read informati|
0003a650  6f 6e 20 61 62 6f 75 74  20 74 68 65 20 63 75 72  |on about the cur|
0003a660  72 65 6e 74 20 73 79 73  74 65 6d 2e 0a 23 0a 23  |rent system..#.#|
0003a670  53 75 62 70 61 67 65 20  30 0a 4f 53 5f 52 65 61  |Subpage 0.OS_Rea|
0003a680  64 53 79 73 49 6e 66 6f  20 30 0a 3d 3e 09 52 30  |dSysInfo 0.=>.R0|
0003a690  20 3d 20 30 0a 0a 5c 3c  3d 09 52 30 20 3d 20 73  | = 0..\<=.R0 = s|
0003a6a0  63 72 65 65 6e 20 73 69  7a 65 0a 0a 54 68 69 73  |creen size..This|
0003a6b0  20 63 61 6c 6c 20 72 65  61 64 73 20 74 68 65 20  | call reads the |
0003a6c0  73 69 7a 65 20 6f 66 20  73 63 72 65 65 6e 20 6d  |size of screen m|
0003a6d0  65 6d 6f 72 79 2e 0a 23  0a 23 53 75 62 70 61 67  |emory..#.#Subpag|
0003a6e0  65 20 31 0a 4f 53 5f 52  65 61 64 53 79 73 49 6e  |e 1.OS_ReadSysIn|
0003a6f0  66 6f 20 31 0a 3d 3e 09  52 30 20 3d 20 31 0a 0a  |fo 1.=>.R0 = 1..|
0003a700  5c 3c 3d 09 52 30 20 3d  20 6d 6f 64 65 0a 09 52  |\<=.R0 = mode..R|
0003a710  31 20 3d 20 6d 6f 6e 69  74 6f 72 20 74 79 70 65  |1 = monitor type|
0003a720  0a 09 52 32 20 3d 20 73  79 6e 63 0a 0a 54 68 69  |..R2 = sync..Thi|
0003a730  73 20 63 61 6c 6c 20 72  65 61 64 73 20 69 6e 66  |s call reads inf|
0003a740  6f 72 6d 61 74 69 6f 6e  20 61 62 6f 75 74 20 74  |ormation about t|
0003a750  68 65 20 63 75 72 72 65  6e 74 20 73 63 72 65 65  |he current scree|
0003a760  6e 2e 0a 23 0a 23 53 75  62 70 61 67 65 20 32 0a  |n..#.#Subpage 2.|
0003a770  4f 53 5f 52 65 61 64 53  79 73 49 6e 66 6f 20 32  |OS_ReadSysInfo 2|
0003a780  0a 3d 3e 09 52 30 20 3d  09 32 0a 0a 3c 3d 09 52  |.=>.R0 =.2..<=.R|
0003a790  30 20 3d 09 49 4f 45 42  20 41 53 49 43 20 70 72  |0 =.IOEB ASIC pr|
0003a7a0  65 73 65 6e 63 65 20 66  6c 61 67 0a 09 52 31 20  |esence flag..R1 |
0003a7b0  3d 09 38 32 43 37 31 30  20 70 72 65 73 65 6e 63  |=.82C710 presenc|
0003a7c0  65 20 66 6c 61 67 0a 09  52 32 20 3d 09 4c 43 44  |e flag..R2 =.LCD|
0003a7d0  20 41 53 49 43 20 70 72  65 73 65 6e 63 65 20 66  | ASIC presence f|
0003a7e0  6c 61 67 0a 09 52 33 20  3d 09 6c 6f 77 20 68 61  |lag..R3 =.low ha|
0003a7f0  6c 66 20 6f 66 20 49 64  0a 09 52 34 20 3d 09 68  |lf of Id..R4 =.h|
0003a800  69 67 68 20 68 61 6c 66  20 6f 66 20 49 64 0a 0a  |igh half of Id..|
0003a810  54 68 69 73 20 63 61 6c  6c 20 63 68 65 63 6b 73  |This call checks|
0003a820  20 66 6f 72 20 74 68 65  20 70 72 65 73 65 6e 63  | for the presenc|
0003a830  65 20 6f 66 20 76 61 72  69 6f 75 73 20 63 68 69  |e of various chi|
0003a840  70 73 2c 20 72 65 74 75  72 6e 69 6e 67 20 66 6c  |ps, returning fl|
0003a850  61 67 73 2e 20 49 74 20  61 6c 73 6f 20 72 65 61  |ags. It also rea|
0003a860  64 73 20 74 68 65 20 75  6e 69 71 75 65 20 6d 61  |ds the unique ma|
0003a870  63 68 69 6e 65 20 49 44  20 69 66 20 61 20 73 75  |chine ID if a su|
0003a880  69 74 61 62 6c 65 20 63  68 69 70 20 69 73 20 66  |itable chip is f|
0003a890  69 74 74 65 64 20 74 6f  20 74 68 65 20 63 6f 6d  |itted to the com|
0003a8a0  70 75 74 65 72 3b 20 69  66 20 6e 6f 6e 65 20 69  |puter; if none i|
0003a8b0  73 2c 20 61 20 49 44 20  6f 66 20 7a 65 72 6f 20  |s, a ID of zero |
0003a8c0  69 73 20 72 65 74 75 72  6e 65 64 2e 0a 23 0a 23  |is returned..#.#|
0003a8d0  53 75 62 70 61 67 65 20  33 0a 4f 53 5f 52 65 61  |Subpage 3.OS_Rea|
0003a8e0  64 53 79 73 49 6e 66 6f  20 33 0a 3d 3e 09 52 30  |dSysInfo 3.=>.R0|
0003a8f0  20 3d 20 33 0a 0a 5c 3c  3d 09 52 30 20 3d 09 3c  | = 3..\<=.R0 =.<|
0003a900  38 32 43 37 31 30 2f 38  32 43 37 31 31 20 62 61  |82C710/82C711 ba|
0003a910  73 69 63 20 66 65 61 74  75 72 65 73 3d 3e 2e 6d  |sic features=>.m|
0003a920  61 69 6e 3e 0a 09 52 31  20 3d 09 38 32 43 37 31  |ain>..R1 =.82C71|
0003a930  30 2f 38 32 43 37 31 31  20 65 78 74 72 61 20 66  |0/82C711 extra f|
0003a940  65 61 74 75 72 65 73 20  6d 61 73 6b 20 28 72 65  |eatures mask (re|
0003a950  73 65 72 76 65 64 20 66  6f 72 20 75 70 77 61 72  |served for upwar|
0003a960  64 73 0a 20 20 20 20 20  20 20 20 63 6f 6d 70 61  |ds.        compa|
0003a970  74 69 62 6c 65 20 61 64  64 69 74 69 6f 6e 61 6c  |tible additional|
0003a980  20 66 75 6e 63 74 69 6f  6e 61 6c 69 74 79 29 0a  | functionality).|
0003a990  09 52 32 20 3d 09 65 78  74 65 6e 64 65 64 20 66  |.R2 =.extended f|
0003a9a0  65 61 74 75 72 65 73 20  31 0a 09 52 33 20 3d 09  |eatures 1..R3 =.|
0003a9b0  65 78 74 65 6e 64 65 64  20 66 65 61 74 75 72 65  |extended feature|
0003a9c0  73 20 32 0a 09 52 34 20  3d 09 65 78 74 65 6e 64  |s 2..R4 =.extend|
0003a9d0  65 64 20 66 65 61 74 75  72 65 73 20 33 0a 0a 54  |ed features 3..T|
0003a9e0  68 69 73 20 63 61 6c 6c  20 72 65 61 64 73 20 66  |his call reads f|
0003a9f0  65 61 74 75 72 65 73 20  61 76 61 69 6c 61 62 6c  |eatures availabl|
0003aa00  65 20 69 6e 20 74 68 65  20 38 32 43 37 31 78 20  |e in the 82C71x |
0003aa10  63 68 69 70 2e 0a 23 53  75 62 70 61 67 65 20 6d  |chip..#Subpage m|
0003aa20  61 69 6e 0a 38 32 43 37  31 30 2f 38 32 43 37 31  |ain.82C710/82C71|
0003aa30  31 20 62 61 73 69 63 20  66 65 61 74 75 72 65 73  |1 basic features|
0003aa40  20 6d 61 73 6b 0a 54 68  65 20 38 32 43 37 31 30  | mask.The 82C710|
0003aa50  20 63 68 69 70 20 66 61  6d 69 6c 79 20 61 72 65  | chip family are|
0003aa60  20 63 6f 6d 70 6f 73 65  64 20 6f 66 20 73 65 76  | composed of sev|
0003aa70  65 72 61 6c 20 73 75 62  20 75 6e 69 74 73 2e 20  |eral sub units. |
0003aa80  46 75 74 75 72 65 20 63  68 69 70 73 20 69 6e 20  |Future chips in |
0003aa90  74 68 65 20 66 61 6d 69  6c 79 20 6d 61 79 20 68  |the family may h|
0003aaa0  61 76 65 20 73 6f 6d 65  20 73 75 62 20 75 6e 69  |ave some sub uni|
0003aab0  74 73 20 77 68 69 63 68  20 61 72 65 20 69 6e 63  |ts which are inc|
0003aac0  6f 6d 70 61 74 69 62 6c  65 20 77 69 74 68 20 65  |ompatible with e|
0003aad0  61 72 6c 69 65 72 20 76  65 72 73 69 6f 6e 73 2c  |arlier versions,|
0003aae0  20 77 68 69 6c 65 20 6c  65 61 76 69 6e 67 20 74  | while leaving t|
0003aaf0  68 65 20 66 75 6e 63 74  69 6f 6e 61 6c 69 74 79  |he functionality|
0003ab00  20 6f 66 20 6f 74 68 65  72 20 73 75 62 20 75 6e  | of other sub un|
0003ab10  69 74 73 20 75 6e 63 68  61 6e 67 65 64 2e 20 54  |its unchanged. T|
0003ab20  68 69 73 20 63 61 6c 6c  20 72 65 74 75 72 6e 73  |his call returns|
0003ab30  20 61 20 66 65 61 74 75  72 65 20 6d 61 73 6b 2c  | a feature mask,|
0003ab40  20 73 75 62 20 66 69 65  6c 64 73 20 77 69 74 68  | sub fields with|
0003ab50  69 6e 20 77 68 69 63 68  20 73 68 6f 77 20 74 68  |in which show th|
0003ab60  65 20 27 63 6f 6d 70 61  74 69 62 69 6c 69 74 79  |e 'compatibility|
0003ab70  20 6c 65 76 65 6c 27 20  6f 66 20 65 61 63 68 20  | level' of each |
0003ab80  73 75 62 20 75 6e 69 74  2e 20 44 69 66 66 65 72  |sub unit. Differ|
0003ab90  69 6e 67 20 76 61 6c 75  65 73 20 6f 66 20 61 20  |ing values of a |
0003aba0  73 75 62 20 66 69 65 6c  64 20 69 6e 64 69 63 61  |sub field indica|
0003abb0  74 65 20 69 6e 63 6f 6d  70 61 74 69 62 6c 65 20  |te incompatible |
0003abc0  76 65 72 73 69 6f 6e 73  20 6f 66 20 74 68 65 20  |versions of the |
0003abd0  63 6f 72 72 65 73 70 6f  6e 64 69 6e 67 20 73 75  |corresponding su|
0003abe0  62 20 75 6e 69 74 2e 20  41 20 73 75 62 20 66 69  |b unit. A sub fi|
0003abf0  65 6c 64 20 6f 66 20 7a  65 72 6f 20 69 6e 64 69  |eld of zero indi|
0003ac00  63 61 74 65 73 20 74 68  61 74 20 74 68 65 20 73  |cates that the s|
0003ac10  75 62 20 75 6e 69 74 20  69 73 20 6e 6f 74 20 70  |ub unit is not p|
0003ac20  72 65 73 65 6e 74 2e 0a  0a 54 68 65 20 76 61 6c  |resent...The val|
0003ac30  75 65 73 20 61 72 65 3a  0a 42 69 74 73 09 53 75  |ues are:.Bits.Su|
0003ac40  62 20 75 6e 69 74 09 09  37 31 30 09 37 31 31 0a  |b unit..710.711.|
0003ac50  30 2d 33 09 49 44 45 20  68 61 72 64 20 64 69 73  |0-3.IDE hard dis|
0003ac60  63 20 69 6e 74 65 72 66  61 63 65 09 31 09 31 0a  |c interface.1.1.|
0003ac70  34 2d 37 09 66 6c 6f 70  70 79 20 64 69 73 63 20  |4-7.floppy disc |
0003ac80  69 6e 74 65 72 66 61 63  65 09 31 09 31 0a 38 2d  |interface.1.1.8-|
0003ac90  31 31 09 70 61 72 61 6c  6c 65 6c 20 70 6f 72 74  |11.parallel port|
0003aca0  09 09 31 09 31 0a 31 32  2d 31 35 09 31 73 74 20  |..1.1.12-15.1st |
0003acb0  73 65 72 69 61 6c 20 70  6f 72 74 09 09 31 09 31  |serial port..1.1|
0003acc0  0a 31 36 2d 31 39 09 32  6e 64 20 73 65 72 69 61  |.16-19.2nd seria|
0003acd0  6c 20 70 6f 72 74 09 09  30 09 31 0a 32 30 2d 32  |l port..0.1.20-2|
0003ace0  33 09 63 68 69 70 20 63  6f 6e 66 69 67 75 72 61  |3.chip configura|
0003acf0  74 69 6f 6e 09 31 09 32  0a 32 34 2d 33 31 09 72  |tion.1.2.24-31.r|
0003ad00  65 73 65 72 76 65 64 09  09 30 09 30 0a 00 00 00  |eserved..0.0....|
0003ad10  44 41 54 41 58 05 00 00  4f 53 5f 52 65 61 64 41  |DATAX...OS_ReadA|
0003ad20  72 67 73 20 20 28 26 34  39 29 0a 23 50 61 72 65  |rgs  (&49).#Pare|
0003ad30  6e 74 20 4f 53 5f 0a 3d  3e 09 52 30 20 3d 20 3c  |nt OS_.=>.R0 = <|
0003ad40  73 79 6e 74 61 78 20 73  74 72 69 6e 67 3d 3e 2e  |syntax string=>.|
0003ad50  73 79 6e 74 61 78 3e 0a  09 52 31 20 3d 20 3c 69  |syntax>..R1 = <i|
0003ad60  6e 70 75 74 20 73 74 72  69 6e 67 3d 3e 2e 69 6e  |nput string=>.in|
0003ad70  70 75 74 3e 0a 09 52 32  20 3d 20 3c 6f 75 74 70  |put>..R2 = <outp|
0003ad80  75 74 20 62 75 66 66 65  72 3d 3e 2e 6f 75 74 70  |ut buffer=>.outp|
0003ad90  75 74 3e 0a 09 52 33 20  3d 20 73 69 7a 65 20 6f  |ut>..R3 = size o|
0003ada0  66 20 6f 75 74 70 75 74  20 62 75 66 66 65 72 0a  |f output buffer.|
0003adb0  0a 5c 3c 3d 09 52 33 20  3d 20 62 79 74 65 73 20  |.\<=.R3 = bytes |
0003adc0  6c 65 66 74 20 69 6e 20  6f 75 74 70 75 74 20 62  |left in output b|
0003add0  75 66 66 65 72 0a 0a 54  68 69 73 20 63 6f 6d 6d  |uffer..This comm|
0003ade0  61 6e 64 20 73 63 61 6e  73 20 74 68 65 20 69 6e  |and scans the in|
0003adf0  70 75 74 20 73 74 72 69  6e 67 2c 20 61 6e 64 20  |put string, and |
0003ae00  70 6c 61 63 65 73 20 76  61 6c 75 65 73 20 69 6e  |places values in|
0003ae10  20 6f 75 74 70 75 74 20  62 75 66 66 65 72 20 61  | output buffer a|
0003ae20  63 63 6f 72 64 69 6e 67  20 74 6f 20 74 68 65 20  |ccording to the |
0003ae30  73 79 6e 74 61 78 20 73  74 72 69 6e 67 2e 0a 23  |syntax string..#|
0003ae40  0a 23 53 75 62 70 61 67  65 20 73 79 6e 74 61 78  |.#Subpage syntax|
0003ae50  0a 53 79 6e 74 61 78 20  73 74 72 69 6e 67 0a 73  |.Syntax string.s|
0003ae60  74 72 69 6e 67 09 09 3d  20 65 6c 65 6d 65 6e 74  |tring..= element|
0003ae70  5c 7b 2c 20 65 6c 65 6d  65 6e 74 7d 0a 65 6c 65  |\{, element}.ele|
0003ae80  6d 65 6e 74 09 09 3d 20  5b 69 64 65 6e 74 69 66  |ment..= [identif|
0003ae90  69 65 72 20 5b 3d 61 6c  69 61 73 5d 20 5c 7b 2f  |ier [=alias] \{/|
0003aea0  71 75 61 6c 69 66 69 65  72 7d 0a 71 75 61 6c 69  |qualifier}.quali|
0003aeb0  66 69 65 72 09 3d 0a 20  20 41 09 3a 09 4b 65 79  |fier.=.  A.:.Key|
0003aec0  77 6f 72 64 20 6d 75 73  74 20 61 6c 77 61 79 73  |word must always|
0003aed0  20 62 65 20 67 69 76 65  6e 20 76 61 6c 75 65 0a  | be given value.|
0003aee0  20 20 4b 09 3a 09 49 64  65 6e 74 69 66 69 65 72  |  K.:.Identifier|
0003aef0  20 6d 75 73 74 20 62 65  20 75 73 65 64 0a 20 20  | must be used.  |
0003af00  53 09 3a 09 53 77 69 74  63 68 0a 20 20 45 09 3a  |S.:.Switch.  E.:|
0003af10  09 44 6f 20 3c 4f 53 5f  45 76 61 6c 75 61 74 65  |.Do <OS_Evaluate|
0003af20  45 78 70 72 65 73 73 69  6f 6e 3e 20 6f 6e 20 76  |Expression> on v|
0003af30  61 6c 75 65 0a 20 20 47  09 3a 09 44 6f 20 3c 4f  |alue.  G.:.Do <O|
0003af40  53 5f 47 53 54 72 61 6e  73 3e 20 6f 6e 20 76 61  |S_GSTrans> on va|
0003af50  6c 75 65 0a 0a 4e 6f 74  65 3a 20 41 6e 20 65 6c  |lue..Note: An el|
0003af60  65 6d 65 6e 74 20 64 6f  65 73 6e 27 74 20 68 61  |ement doesn't ha|
0003af70  76 65 20 74 6f 20 68 61  76 65 20 61 20 6e 61 6d  |ve to have a nam|
0003af80  65 2e 20 22 2c 22 20 69  73 20 61 20 70 65 72 66  |e. "," is a perf|
0003af90  65 63 74 6c 79 20 6c 65  67 61 6c 20 73 79 6e 74  |ectly legal synt|
0003afa0  61 78 20 73 74 72 69 6e  67 2e 0a 23 0a 23 53 75  |ax string..#.#Su|
0003afb0  62 70 61 67 65 20 69 6e  70 75 74 0a 49 6e 70 75  |bpage input.Inpu|
0003afc0  74 2d 73 74 72 69 6e 67  0a 65 78 61 6d 70 6c 65  |t-string.example|
0003afd0  3a 0a 20 20 53 79 6e 74  61 78 0a 20 20 20 20 22  |:.  Syntax.    "|
0003afe0  6e 75 6d 62 65 72 3d 74  69 6d 65 73 2f 65 2c 66  |number=times/e,f|
0003aff0  69 6c 65 2f 6b 2f 61 2c  65 78 70 61 6e 64 2f 73  |ile/k/a,expand/s|
0003b000  22 0a 0a 20 20 54 68 65  73 65 20 69 6e 70 75 74  |"..  These input|
0003b010  2d 73 74 72 69 6e 67 73  20 77 69 6c 6c 20 6d 61  |-strings will ma|
0003b020  74 63 68 3a 0a 20 20 20  20 22 2d 6e 20 31 30 20  |tch:.    "-n 10 |
0003b030  2d 66 69 6c 65 20 6d 79  66 69 6c 65 22 0a 20 20  |-file myfile".  |
0003b040  20 20 22 2d 74 69 6d 65  73 20 31 2b 37 20 2d 66  |  "-times 1+7 -f|
0003b050  69 6c 65 20 6d 79 66 69  6c 65 20 2d 65 78 70 61  |ile myfile -expa|
0003b060  6e 64 22 0a 20 20 20 20  22 2d 66 69 6c 65 20 6d  |nd".    "-file m|
0003b070  79 66 69 6c 65 20 2d 65  22 0a 0a 20 20 54 68 65  |yfile -e"..  The|
0003b080  73 65 20 77 69 6c 6c 20  6e 6f 74 3a 0a 20 20 20  |se will not:.   |
0003b090  20 22 6d 79 66 69 6c 65  20 2d 6e 75 6d 62 65 72  | "myfile -number|
0003b0a0  20 34 22 0a 20 20 20 20  22 2d 6e 75 6d 62 65 72  | 4".    "-number|
0003b0b0  20 32 30 20 2d 74 69 6d  65 73 20 34 20 2d 66 69  | 20 -times 4 -fi|
0003b0c0  6c 65 20 6d 79 66 69 6c  65 22 0a 23 0a 23 53 75  |le myfile".#.#Su|
0003b0d0  62 70 61 67 65 20 6f 75  74 70 75 74 0a 4f 75 74  |bpage output.Out|
0003b0e0  70 75 74 20 62 75 66 66  65 72 0a 46 6f 72 20 69  |put buffer.For i|
0003b0f0  64 65 6e 74 69 66 69 65  72 20 78 20 28 6e 61 6d  |dentifier x (nam|
0003b100  65 64 20 6f 72 20 6e 6f  74 29 2c 20 77 6f 72 64  |ed or not), word|
0003b110  20 78 20 69 6e 20 6f 75  74 70 75 74 20 62 75 66  | x in output buf|
0003b120  66 65 72 20 63 6f 6e 74  61 69 6e 73 20 3a 0a 0a  |fer contains :..|
0003b130  20 20 20 73 77 69 74 63  68 09 28 2f 53 29 09 3a  |   switch.(/S).:|
0003b140  09 6e 6f 6e 20 7a 65 72  6f 20 76 61 6c 75 65 20  |.non zero value |
0003b150  69 66 20 73 77 69 74 63  68 20 75 73 65 64 0a 20  |if switch used. |
0003b160  20 20 47 53 54 72 61 6e  73 65 64 09 28 2f 47 29  |  GSTransed.(/G)|
0003b170  09 3a 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 6c  |.:.pointer to bl|
0003b180  6f 63 6b 20 28 30 20 69  66 20 75 6e 75 73 65 64  |ock (0 if unused|
0003b190  29 20 77 69 74 68 20 74  77 6f 2d 62 79 74 65 20  |) with two-byte |
0003b1a0  6c 65 6e 67 74 68 20 61  6e 64 20 74 68 65 6e 20  |length and then |
0003b1b0  73 74 72 69 6e 67 20 69  74 73 65 6c 66 20 28 6e  |string itself (n|
0003b1c0  6f 74 20 74 65 72 6d 69  6e 61 74 65 64 29 0a 20  |ot terminated). |
0003b1d0  20 20 45 76 61 6c 75 61  74 65 64 09 28 2f 45 29  |  Evaluated.(/E)|
0003b1e0  09 3a 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 6c  |.:.pointer to bl|
0003b1f0  6f 63 6b 20 28 30 20 69  66 20 75 6e 75 73 65 64  |ock (0 if unused|
0003b200  29 20 77 69 74 68 20 6f  6e 65 20 62 79 74 65 20  |) with one byte |
0003b210  6f 66 20 74 79 70 65 20  66 6f 75 72 20 62 79 74  |of type four byt|
0003b220  65 73 20 6f 66 20 76 61  6c 75 65 20 28 69 6e 74  |es of value (int|
0003b230  20 69 66 20 74 79 70 65  3d 30 29 0a 20 20 20 65  | if type=0).   e|
0003b240  6c 73 65 09 09 20 09 3a  09 70 6f 69 6e 74 65 72  |lse.. .:.pointer|
0003b250  20 74 6f 20 30 2d 74 65  72 6d 69 6e 61 74 65 64  | to 0-terminated|
0003b260  20 73 74 72 69 6e 67 2e  44 41 54 41 dd 08 00 00  | string.DATA....|
0003b270  4f 53 5f 52 65 61 64 56  64 75 56 61 72 69 61 62  |OS_ReadVduVariab|
0003b280  6c 65 73 20 20 28 26 33  31 29 0a 23 50 61 72 65  |les  (&31).#Pare|
0003b290  6e 74 20 4f 53 5f 0a 3d  3e 09 52 30 20 3d 09 70  |nt OS_.=>.R0 =.p|
0003b2a0  74 72 20 74 6f 20 69 6e  70 75 74 20 62 6c 6f 63  |tr to input bloc|
0003b2b0  6b 0a 09 52 31 20 3d 09  70 74 72 20 74 6f 20 6f  |k..R1 =.ptr to o|
0003b2c0  75 74 70 75 74 20 62 6c  6f 63 6b 20 28 63 61 6e  |utput block (can|
0003b2d0  20 62 65 20 73 61 6d 65  20 61 73 20 52 30 29 0a  | be same as R0).|
0003b2e0  0a 54 68 65 20 69 6e 70  75 74 20 62 6c 6f 63 6b  |.The input block|
0003b2f0  20 69 73 20 61 20 6c 69  73 74 20 6f 66 20 3c 76  | is a list of <v|
0003b300  61 72 69 61 62 6c 65 20  6e 75 6d 62 65 72 73 3d  |ariable numbers=|
0003b310  3e 2e 76 61 72 69 61 62  6c 65 73 3e 20 28 77 6f  |>.variables> (wo|
0003b320  72 64 73 29 20 74 65 72  6d 69 6e 61 74 65 64 20  |rds) terminated |
0003b330  62 79 20 2d 31 2e 20 45  61 63 68 20 76 61 72 69  |by -1. Each vari|
0003b340  61 62 6c 65 20 69 73 20  72 65 61 64 2c 20 61 6e  |able is read, an|
0003b350  64 20 69 74 73 20 76 61  6c 75 65 20 69 73 20 77  |d its value is w|
0003b360  72 69 74 74 65 6e 20 61  73 20 61 20 77 6f 72 64  |ritten as a word|
0003b370  20 69 6e 74 6f 20 74 68  65 20 6f 75 74 70 75 74  | into the output|
0003b380  20 62 6c 6f 63 6b 2e 0a  23 0a 23 53 75 62 70 61  | block..#.#Subpa|
0003b390  67 65 20 76 61 72 69 61  62 6c 65 73 0a 56 44 55  |ge variables.VDU|
0003b3a0  20 56 61 72 69 61 62 6c  65 73 0a 23 77 72 61 70  | Variables.#wrap|
0003b3b0  20 6f 66 66 0a 4e 72 09  4e 61 6d 65 09 09 4d 65  | off.Nr.Name..Me|
0003b3c0  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 31 32 38 09  |aning.#Line.128.|
0003b3d0  47 57 4c 43 6f 6c 09 09  47 72 61 70 68 69 63 73  |GWLCol..Graphics|
0003b3e0  20 57 69 6e 64 6f 77 09  4c 65 66 74 68 61 6e 64  | Window.Lefthand|
0003b3f0  20 43 6f 6c 75 6d 6e 09  09 28 69 63 29 0a 31 32  | Column..(ic).12|
0003b400  39 09 47 57 42 52 6f 77  09 09 20 09 09 42 6f 74  |9.GWBRow.. ..Bot|
0003b410  74 6f 6d 20 52 6f 77 09  09 28 69 63 29 0a 31 33  |tom Row..(ic).13|
0003b420  30 09 47 57 52 43 6f 6c  09 09 20 09 09 52 69 67  |0.GWRCol.. ..Rig|
0003b430  68 74 68 61 6e 64 20 43  6f 6c 75 6d 6e 09 28 69  |hthand Column.(i|
0003b440  63 29 0a 31 33 31 09 47  57 54 52 6f 77 09 09 20  |c).131.GWTRow.. |
0003b450  09 09 54 6f 70 20 52 6f  77 09 09 09 28 69 63 29  |..Top Row...(ic)|
0003b460  0a 0a 31 33 32 09 54 57  4c 43 6f 6c 09 09 54 65  |..132.TWLCol..Te|
0003b470  78 74 20 57 69 6e 64 6f  77 09 4c 65 66 74 68 61  |xt Window.Leftha|
0003b480  6e 64 20 43 6f 6c 75 6d  6e 0a 31 33 33 09 54 57  |nd Column.133.TW|
0003b490  42 52 6f 77 09 20 09 20  09 09 42 6f 74 74 6f 6d  |BRow. . ..Bottom|
0003b4a0  20 52 6f 77 0a 31 33 34  09 54 57 52 43 6f 6c 09  | Row.134.TWRCol.|
0003b4b0  20 09 20 09 09 52 69 67  68 74 68 61 6e 64 20 43  | . ..Righthand C|
0003b4c0  6f 6c 75 6d 6e 0a 31 33  35 09 54 57 54 52 6f 77  |olumn.135.TWTRow|
0003b4d0  09 20 09 20 09 09 54 6f  70 20 52 6f 77 0a 0a 31  |. . ..Top Row..1|
0003b4e0  33 36 09 4f 72 67 58 09  09 78 20 63 6f 6f 72 64  |36.OrgX..x coord|
0003b4f0  20 6f 66 20 67 72 61 70  68 69 63 73 20 4f 72 69  | of graphics Ori|
0003b500  67 69 6e 09 20 09 28 65  63 29 0a 31 33 37 09 4f  |gin. .(ec).137.O|
0003b510  72 67 59 09 09 79 20 63  6f 6f 72 64 20 6f 66 20  |rgY..y coord of |
0003b520  67 72 61 70 68 69 63 73  20 4f 72 69 67 69 6e 09  |graphics Origin.|
0003b530  20 09 28 65 63 29 0a 0a  31 33 38 09 47 43 73 58  | .(ec)..138.GCsX|
0003b540  09 09 47 72 61 70 68 69  63 73 20 43 75 72 73 6f  |..Graphics Curso|
0003b550  72 20 58 20 63 6f 6f 72  64 09 09 20 09 28 65 63  |r X coord.. .(ec|
0003b560  29 0a 31 33 39 09 47 43  73 59 09 09 47 72 61 70  |).139.GCsY..Grap|
0003b570  68 69 63 73 20 43 75 72  73 6f 72 20 59 20 63 6f  |hics Cursor Y co|
0003b580  6f 72 64 09 09 20 09 28  65 63 29 0a 31 34 30 09  |ord.. .(ec).140.|
0003b590  4f 6c 64 65 72 43 73 58  09 4f 6c 64 65 73 74 20  |OlderCsX.Oldest |
0003b5a0  67 72 2e 20 43 75 72 73  6f 72 20 58 20 63 6f 6f  |gr. Cursor X coo|
0003b5b0  72 64 09 20 09 28 69 63  29 0a 31 34 31 09 4f 6c  |rd. .(ic).141.Ol|
0003b5c0  64 65 72 43 73 59 09 4f  6c 64 65 73 74 20 67 72  |derCsY.Oldest gr|
0003b5d0  2e 20 43 75 72 73 6f 72  20 59 20 63 6f 6f 72 64  |. Cursor Y coord|
0003b5e0  09 20 09 28 69 63 29 0a  31 34 32 09 4f 6c 64 43  |. .(ic).142.OldC|
0003b5f0  73 58 09 09 50 72 65 76  69 6f 75 73 20 67 72 2e  |sX..Previous gr.|
0003b600  20 43 75 72 73 6f 72 20  58 20 63 6f 6f 72 64 09  | Cursor X coord.|
0003b610  20 09 28 69 63 29 0a 31  34 33 09 4f 6c 64 43 73  | .(ic).143.OldCs|
0003b620  59 09 09 50 72 65 76 69  6f 75 73 20 67 72 2e 20  |Y..Previous gr. |
0003b630  43 75 72 73 6f 72 20 59  20 63 6f 6f 72 64 09 20  |Cursor Y coord. |
0003b640  09 28 69 63 29 0a 31 34  34 09 47 43 73 49 58 09  |.(ic).144.GCsIX.|
0003b650  09 47 72 61 70 68 69 63  73 20 43 75 72 73 6f 72  |.Graphics Cursor|
0003b660  20 58 20 63 6f 6f 72 64  09 09 20 09 28 69 63 29  | X coord.. .(ic)|
0003b670  0a 31 34 35 09 47 43 73  49 59 09 09 47 72 61 70  |.145.GCsIY..Grap|
0003b680  68 69 63 73 20 43 75 72  73 6f 72 20 59 20 63 6f  |hics Cursor Y co|
0003b690  6f 72 64 09 09 20 09 28  69 63 29 0a 31 34 36 09  |ord.. .(ic).146.|
0003b6a0  4e 65 77 50 74 58 09 09  4e 65 77 20 70 6f 69 6e  |NewPtX..New poin|
0003b6b0  74 20 58 20 63 6f 6f 72  64 09 09 20 09 28 69 63  |t X coord.. .(ic|
0003b6c0  29 0a 31 34 37 09 4e 65  77 50 74 59 09 09 4e 65  |).147.NewPtY..Ne|
0003b6d0  77 20 70 6f 69 6e 74 20  59 20 63 6f 6f 72 64 09  |w point Y coord.|
0003b6e0  09 20 09 28 69 63 29 0a  0a 31 34 38 09 53 63 72  |. .(ic)..148.Scr|
0003b6f0  65 65 6e 53 74 61 72 74  09 41 73 20 75 73 65 64  |eenStart.As used|
0003b700  20 62 79 20 56 44 55 20  64 72 69 76 65 72 73 0a  | by VDU drivers.|
0003b710  31 34 39 09 44 69 73 70  6c 61 79 53 74 61 72 74  |149.DisplayStart|
0003b720  09 41 73 20 75 73 65 64  20 62 79 20 64 69 73 70  |.As used by disp|
0003b730  6c 61 79 20 68 61 72 64  77 61 72 65 0a 31 35 30  |lay hardware.150|
0003b740  09 54 6f 74 61 6c 53 63  72 65 65 6e 53 69 7a 65  |.TotalScreenSize|
0003b750  09 4d 65 6d 6f 72 79 20  61 6c 6c 6f 63 61 74 65  |.Memory allocate|
0003b760  64 20 74 6f 20 73 63 72  65 65 6e 0a 0a 31 35 31  |d to screen..151|
0003b770  09 47 50 4c 46 4d 44 09  09 47 43 4f 4c 20 61 63  |.GPLFMD..GCOL ac|
0003b780  74 69 6f 6e 20 66 6f 72  20 66 6f 72 65 67 72 6f  |tion for foregro|
0003b790  75 6e 64 20 63 6f 6c 0a  31 35 32 09 47 50 4c 42  |und col.152.GPLB|
0003b7a0  4d 44 09 09 47 43 4f 4c  20 61 63 74 69 6f 6e 20  |MD..GCOL action |
0003b7b0  66 6f 72 20 62 61 63 6b  67 72 6f 75 6e 64 20 63  |for background c|
0003b7c0  6f 6c 0a 31 35 33 09 47  46 43 4f 4c 09 09 47 72  |ol.153.GFCOL..Gr|
0003b7d0  61 70 68 69 63 73 20 66  6f 72 65 67 72 6f 75 6e  |aphics foregroun|
0003b7e0  64 20 63 6f 6c 0a 31 35  34 09 47 42 43 4f 4c 09  |d col.154.GBCOL.|
0003b7f0  09 47 72 61 70 68 69 63  73 20 62 61 63 6b 67 72  |.Graphics backgr|
0003b800  6f 75 6e 64 20 63 6f 6c  0a 31 35 35 09 54 46 6f  |ound col.155.TFo|
0003b810  72 65 43 6f 6c 09 54 65  78 74 20 66 6f 72 65 67  |reCol.Text foreg|
0003b820  72 6f 75 6e 64 20 63 6f  6c 0a 31 35 36 09 54 42  |round col.156.TB|
0003b830  61 63 6b 43 6f 6c 09 54  65 78 74 20 62 61 63 6b  |ackCol.Text back|
0003b840  67 72 6f 75 6e 64 20 63  6f 6c 0a 31 35 37 09 47  |ground col.157.G|
0003b850  46 54 69 6e 74 09 09 47  72 61 70 68 69 63 73 20  |FTint..Graphics |
0003b860  66 6f 72 65 67 72 6f 75  6e 64 20 74 69 6e 74 0a  |foreground tint.|
0003b870  31 35 38 09 47 42 54 69  6e 74 09 09 47 72 61 70  |158.GBTint..Grap|
0003b880  68 69 63 73 20 62 61 63  6b 67 72 6f 75 6e 64 20  |hics background |
0003b890  74 69 6e 74 0a 31 35 39  09 54 46 54 69 6e 74 09  |tint.159.TFTint.|
0003b8a0  09 54 65 78 74 20 66 6f  72 65 67 72 6f 75 6e 64  |.Text foreground|
0003b8b0  20 74 69 6e 74 0a 31 36  30 09 54 42 54 69 6e 74  | tint.160.TBTint|
0003b8c0  09 09 54 65 78 74 20 62  61 63 6b 67 72 6f 75 6e  |..Text backgroun|
0003b8d0  64 20 74 69 6e 74 0a 0a  31 36 31 09 4d 61 78 4d  |d tint..161.MaxM|
0003b8e0  6f 64 65 09 09 48 69 67  68 65 73 74 20 28 73 74  |ode..Highest (st|
0003b8f0  61 6e 64 61 72 64 29 20  6d 6f 64 65 20 61 76 61  |andard) mode ava|
0003b900  69 6c 61 62 6c 65 0a 0a  31 36 32 09 47 43 68 61  |ilable..162.GCha|
0003b910  72 53 69 7a 65 58 09 58  20 73 69 7a 65 20 6f 66  |rSizeX.X size of|
0003b920  20 56 44 55 35 20 63 68  61 72 73 20 28 70 69 78  | VDU5 chars (pix|
0003b930  65 6c 73 29 0a 31 36 33  09 47 43 68 61 72 53 69  |els).163.GCharSi|
0003b940  7a 65 59 09 59 20 73 69  7a 65 20 6f 66 20 56 44  |zeY.Y size of VD|
0003b950  55 35 20 63 68 61 72 73  20 28 70 69 78 65 6c 73  |U5 chars (pixels|
0003b960  29 0a 31 36 34 09 47 43  68 61 72 53 70 61 63 65  |).164.GCharSpace|
0003b970  58 09 58 20 73 70 61 63  69 6e 67 20 6f 66 20 56  |X.X spacing of V|
0003b980  44 55 35 20 63 68 61 72  73 20 28 70 69 78 65 6c  |DU5 chars (pixel|
0003b990  73 29 0a 31 36 35 09 47  43 68 61 72 53 70 61 63  |s).165.GCharSpac|
0003b9a0  65 59 09 59 20 73 70 61  63 69 6e 67 20 6f 66 20  |eY.Y spacing of |
0003b9b0  56 44 55 35 20 63 68 61  72 73 20 28 70 69 78 65  |VDU5 chars (pixe|
0003b9c0  6c 73 29 0a 0a 31 36 36  09 48 4c 69 6e 65 41 64  |ls)..166.HLineAd|
0003b9d0  64 72 09 41 64 64 72 20  6f 66 20 68 6f 72 20 6c  |dr.Addr of hor l|
0003b9e0  69 6e 65 2d 64 72 61 77  20 72 6f 75 74 69 6e 65  |ine-draw routine|
0003b9f0  0a 0a 31 36 37 09 54 43  68 61 72 53 69 7a 65 58  |..167.TCharSizeX|
0003ba00  09 58 20 73 69 7a 65 20  6f 66 20 56 44 55 34 20  |.X size of VDU4 |
0003ba10  63 68 61 72 73 20 28 70  69 78 65 6c 73 29 0a 31  |chars (pixels).1|
0003ba20  36 38 09 54 43 68 61 72  53 69 7a 65 59 09 59 20  |68.TCharSizeY.Y |
0003ba30  73 69 7a 65 20 6f 66 20  56 44 55 34 20 63 68 61  |size of VDU4 cha|
0003ba40  72 73 20 28 70 69 78 65  6c 73 29 0a 31 36 39 09  |rs (pixels).169.|
0003ba50  54 43 68 61 72 53 70 61  63 65 58 09 58 20 73 70  |TCharSpaceX.X sp|
0003ba60  61 63 69 6e 67 20 6f 66  20 56 44 55 34 20 63 68  |acing of VDU4 ch|
0003ba70  61 72 73 20 28 70 69 78  65 6c 73 29 0a 31 37 30  |ars (pixels).170|
0003ba80  09 54 43 68 61 72 53 70  61 63 65 59 09 59 20 73  |.TCharSpaceY.Y s|
0003ba90  70 61 63 69 6e 67 20 6f  66 20 56 44 55 34 20 63  |pacing of VDU4 c|
0003baa0  68 61 72 73 20 28 70 69  78 65 6c 73 29 0a 0a 31  |hars (pixels)..1|
0003bab0  37 31 09 47 63 6f 6c 4f  72 61 45 6f 72 41 64 64  |71.GcolOraEorAdd|
0003bac0  72 09 41 64 64 72 20 6f  66 20 63 6f 6c 20 62 6c  |r.Addr of col bl|
0003bad0  6f 63 6b 73 20 66 6f 72  20 63 75 72 72 65 6e 74  |ocks for current|
0003bae0  20 47 43 4f 4c 73 0a 0a  32 35 36 09 57 69 6e 64  | GCOLs..256.Wind|
0003baf0  6f 77 57 69 64 74 68 09  57 69 64 74 68 20 6f 66  |owWidth.Width of|
0003bb00  20 74 65 78 74 20 77 69  6e 64 6f 77 20 69 6e 20  | text window in |
0003bb10  63 68 61 72 73 0a 32 35  37 09 57 69 6e 64 6f 77  |chars.257.Window|
0003bb20  48 65 69 67 68 74 09 48  65 69 67 68 74 20 6f 66  |Height.Height of|
0003bb30  20 74 65 78 74 20 77 69  6e 64 6f 77 20 69 6e 20  | text window in |
0003bb40  63 68 61 72 73 00 00 00  44 41 54 41 0e 01 00 00  |chars...DATA....|
0003bb50  4f 53 5f 52 65 61 64 4d  65 6d 4d 61 70 45 6e 74  |OS_ReadMemMapEnt|
0003bb60  72 69 65 73 20 20 28 26  35 32 29 0a 23 50 61 72  |ries  (&52).#Par|
0003bb70  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 20  |ent OS_.=>.R0 = |
0003bb80  70 6f 69 6e 74 65 72 20  74 6f 20 3c 72 65 71 75  |pointer to <requ|
0003bb90  65 73 74 20 62 6c 6f 63  6b 3d 3e 4f 53 5f 6d 65  |est block=>OS_me|
0003bba0  6d 6d 61 70 72 65 71 75  65 73 74 3e 0a 3c 3d 09  |mmaprequest>.<=.|
0003bbb0  62 6c 6f 63 6b 20 61 74  20 52 30 20 75 70 64 61  |block at R0 upda|
0003bbc0  74 65 64 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |ted..This SWI re|
0003bbd0  74 75 72 6e 73 20 74 68  65 20 6c 6f 67 69 63 61  |turns the logica|
0003bbe0  6c 20 70 61 67 65 20 6e  75 6d 62 65 72 20 69 6e  |l page number in|
0003bbf0  20 77 68 69 63 68 20 74  68 65 20 6d 65 6d 6f 72  | which the memor|
0003bc00  79 20 70 61 67 65 73 20  73 70 65 63 69 66 69 65  |y pages specifie|
0003bc10  64 20 72 65 73 69 64 65  2c 20 69 65 20 70 61 67  |d reside, ie pag|
0003bc20  65 20 2d 3e 20 61 64 64  72 65 73 73 2e 0a 0a 54  |e -> address...T|
0003bc30  68 65 20 63 6f 6e 76 65  72 73 65 20 69 73 20 3c  |he converse is <|
0003bc40  4f 53 5f 46 69 6e 64 4d  65 6d 4d 61 70 45 6e 74  |OS_FindMemMapEnt|
0003bc50  72 69 65 73 3e 2e 00 00  44 41 54 41 03 01 00 00  |ries>...DATA....|
0003bc60  4f 53 5f 52 65 61 64 52  41 4d 46 73 4c 69 6d 69  |OS_ReadRAMFsLimi|
0003bc70  74 73 20 20 28 26 34 41  29 0a 23 50 61 72 65 6e  |ts  (&4A).#Paren|
0003bc80  74 20 4f 53 5f 0a 3d 3e  09 52 30 20 3d 09 73 74  |t OS_.=>.R0 =.st|
0003bc90  61 72 74 20 6f 66 20 52  41 4d 20 64 69 73 63 0a  |art of RAM disc.|
0003bca0  09 52 31 20 3d 09 65 6e  64 20 6f 66 20 52 41 4d  |.R1 =.end of RAM|
0003bcb0  20 64 69 73 63 0a 0a 52  65 61 64 73 20 77 68 65  | disc..Reads whe|
0003bcc0  72 65 20 69 6e 20 6d 65  6d 6f 72 79 20 74 68 65  |re in memory the|
0003bcd0  20 52 41 4d 20 64 69 73  63 20 72 65 73 69 64 65  | RAM disc reside|
0003bce0  73 2e 20 54 68 69 73 20  69 73 20 6e 6f 74 20 72  |s. This is not r|
0003bcf0  65 61 6c 6c 79 20 61 6c  6c 20 74 68 61 74 20 75  |eally all that u|
0003bd00  73 65 66 75 6c 20 61 73  20 66 6f 72 20 74 68 65  |seful as for the|
0003bd10  20 6d 61 6a 6f 72 69 74  79 20 6f 66 20 74 68 65  | majority of the|
0003bd20  20 74 69 6d 65 20 74 68  65 20 52 41 4d 20 64 69  | time the RAM di|
0003bd30  73 63 20 69 73 20 73 65  74 20 61 73 20 69 6e 61  |sc is set as ina|
0003bd40  63 63 65 73 73 61 62 6c  65 20 74 6f 20 75 73 65  |ccessable to use|
0003bd50  72 20 70 72 6f 67 72 61  6d 73 2e 00 44 41 54 41  |r programs..DATA|
0003bd60  63 01 00 00 4f 53 5f 52  65 61 64 43 20 20 28 26  |c...OS_ReadC  (&|
0003bd70  30 34 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |04).#Parent OS_.|
0003bd80  3c 3d 09 69 66 20 43 20  66 6c 61 67 20 69 73 20  |<=.if C flag is |
0003bd90  30 0a 09 20 09 52 30 20  3d 20 41 53 43 49 49 20  |0.. .R0 = ASCII |
0003bda0  63 6f 64 65 0a 09 69 66  20 43 20 66 6c 61 67 20  |code..if C flag |
0003bdb0  69 73 20 31 0a 09 20 09  52 30 20 3d 20 65 72 72  |is 1.. .R0 = err|
0003bdc0  6f 72 20 6e 75 6d 62 65  72 2c 20 26 31 42 20 6d  |or number, &1B m|
0003bdd0  65 61 6e 73 20 65 73 63  61 70 65 0a 0a 54 68 69  |eans escape..Thi|
0003bde0  73 20 63 61 6c 6c 20 72  65 61 64 73 20 61 20 63  |s call reads a c|
0003bdf0  68 61 72 61 63 74 65 72  20 66 72 6f 6d 20 74 68  |haracter from th|
0003be00  65 20 69 6e 70 75 74 20  73 74 72 65 61 6d 2e 20  |e input stream. |
0003be10  49 74 20 77 61 69 74 73  20 74 6f 20 67 65 74 20  |It waits to get |
0003be20  74 68 65 20 6e 65 78 74  20 63 68 61 72 61 63 74  |the next charact|
0003be30  65 72 2c 20 69 65 2e 20  79 6f 75 20 77 69 6c 6c  |er, ie. you will|
0003be40  20 6f 6e 6c 79 20 67 65  74 20 74 68 65 20 63 6f  | only get the co|
0003be50  6e 74 72 6f 6c 20 62 61  63 6b 2c 20 77 68 65 6e  |ntrol back, when|
0003be60  20 66 6f 72 20 65 78 61  6d 70 6c 65 20 61 20 6b  | for example a k|
0003be70  65 79 20 69 73 20 70 72  65 73 73 65 64 2e 0a 0a  |ey is pressed...|
0003be80  49 66 20 63 75 72 73 6f  72 20 65 64 69 74 69 6e  |If cursor editin|
0003be90  67 20 69 73 20 65 6e 61  62 6c 65 64 2c 20 74 68  |g is enabled, th|
0003bea0  65 20 63 75 72 73 6f 72  20 6b 65 79 73 20 77 69  |e cursor keys wi|
0003beb0  6c 6c 20 73 74 61 72 74  20 74 68 69 73 2e 0a 00  |ll start this...|
0003bec0  44 41 54 41 0c 01 00 00  4f 53 5f 52 65 61 64 44  |DATA....OS_ReadD|
0003bed0  65 66 61 75 6c 74 48 61  6e 64 6c 65 72 20 20 28  |efaultHandler  (|
0003bee0  26 35 35 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&55).#Parent OS_|
0003bef0  0a 3d 3e 09 52 30 20 3d  09 3c 68 61 6e 64 6c 65  |.=>.R0 =.<handle|
0003bf00  72 20 6e 75 6d 62 65 72  3d 3e 6f 73 5f 68 61 6e  |r number=>os_han|
0003bf10  64 6c 65 72 73 3e 0a 0a  3c 3d 09 52 30 20 70 72  |dlers>..<=.R0 pr|
0003bf20  65 73 65 72 76 65 64 0a  09 52 31 20 3d 09 61 64  |eserved..R1 =.ad|
0003bf30  64 72 65 73 73 20 6f 66  20 64 65 66 61 75 6c 74  |dress of default|
0003bf40  20 68 61 6e 64 6c 65 72  0a 09 52 32 20 3d 09 77  | handler..R2 =.w|
0003bf50  6f 72 6b 73 70 61 63 65  20 61 64 64 72 65 73 73  |orkspace address|
0003bf60  0a 09 52 33 20 3d 09 62  75 66 66 65 72 20 61 64  |..R3 =.buffer ad|
0003bf70  64 72 65 73 73 0a 0a 54  68 69 73 20 65 6e 61 62  |dress..This enab|
0003bf80  6c 65 73 20 79 6f 75 20  74 6f 20 72 65 2d 69 6e  |les you to re-in|
0003bf90  73 74 61 6c 6c 20 74 68  65 20 68 61 6e 64 6c 65  |stall the handle|
0003bfa0  72 20 77 68 69 63 68 20  69 73 20 73 65 74 20 75  |r which is set u|
0003bfb0  70 20 61 66 74 65 72 20  61 20 72 65 73 65 74 20  |p after a reset |
0003bfc0  6f 72 20 70 6f 77 65 72  20 6f 6e 2e 44 41 54 41  |or power on.DATA|
0003bfd0  f2 02 00 00 4f 53 5f 52  65 61 64 45 73 63 61 70  |....OS_ReadEscap|
0003bfe0  65 53 74 61 74 65 20 20  28 26 32 43 29 0a 23 50  |eState  (&2C).#P|
0003bff0  61 72 65 6e 74 20 4f 53  5f 0a 54 68 69 73 20 73  |arent OS_.This s|
0003c000  65 74 73 20 6f 72 20 63  6c 65 61 72 73 20 74 68  |ets or clears th|
0003c010  65 20 63 61 72 72 79 20  66 6c 61 67 20 64 65 70  |e carry flag dep|
0003c020  65 6e 64 69 6e 67 20 6f  6e 20 77 68 65 74 68 65  |ending on whethe|
0003c030  72 20 74 68 65 20 65 73  63 61 70 65 20 6b 65 79  |r the escape key|
0003c040  20 69 73 20 70 72 65 73  73 65 64 20 6f 72 20 6e  | is pressed or n|
0003c050  6f 74 2e 0a 0a 4f 6e 63  65 20 61 6e 20 65 73 63  |ot...Once an esc|
0003c060  61 70 65 20 63 6f 6e 64  69 74 69 6f 6e 20 68 61  |ape condition ha|
0003c070  73 20 62 65 65 6e 20 64  65 74 65 63 74 65 64 2c  |s been detected,|
0003c080  20 28 65 69 74 68 65 72  20 74 68 72 6f 75 67 68  | (either through|
0003c090  20 74 68 69 73 20 6f 72  20 66 6f 72 20 65 78 61  | this or for exa|
0003c0a0  6d 70 6c 65 2c 20 77 69  74 68 20 3c 4f 53 5f 52  |mple, with <OS_R|
0003c0b0  65 61 64 43 3e 29 2c 20  69 74 20 73 68 6f 75 6c  |eadC>), it shoul|
0003c0c0  64 20 62 65 20 61 63 6b  6e 6f 77 6c 65 64 67 65  |d be acknowledge|
0003c0d0  64 20 77 69 74 68 20 4f  53 5f 42 79 74 65 20 31  |d with OS_Byte 1|
0003c0e0  32 36 20 6f 72 20 63 6c  65 61 72 65 64 20 75 73  |26 or cleared us|
0003c0f0  69 6e 67 20 4f 53 5f 42  79 74 65 20 31 32 34 2e  |ing OS_Byte 124.|
0003c100  0a 0a 54 68 69 73 20 63  61 6c 6c 20 69 73 20 75  |..This call is u|
0003c110  73 65 66 75 6c 20 69 66  20 61 20 70 72 6f 67 72  |seful if a progr|
0003c120  61 6d 20 69 73 20 65 78  65 63 75 74 69 6e 67 20  |am is executing |
0003c130  69 6e 20 61 20 6c 6f 6f  70 20 77 68 69 63 68 20  |in a loop which |
0003c140  74 68 65 20 75 73 65 72  20 6d 61 79 20 77 61 6e  |the user may wan|
0003c150  74 20 74 6f 20 65 73 63  61 70 65 20 66 72 6f 6d  |t to escape from|
0003c160  2c 20 62 75 74 20 69 73  6e 27 74 20 70 65 72 66  |, but isn't perf|
0003c170  6f 72 6d 69 6e 67 20 61  6e 79 20 69 6e 70 75 74  |orming any input|
0003c180  20 6f 70 65 72 61 74 69  6f 6e 73 20 77 68 69 63  | operations whic|
0003c190  68 20 77 6f 75 6c 64 20  6c 65 74 20 69 74 20 6b  |h would let it k|
0003c1a0  6e 6f 77 20 61 62 6f 75  74 20 74 68 65 20 65 73  |now about the es|
0003c1b0  63 61 70 65 2e 0a 0a 4e  6f 74 65 20 74 68 61 74  |cape...Note that|
0003c1c0  20 74 68 69 73 20 6d 61  79 20 62 65 20 63 61 6c  | this may be cal|
0003c1d0  6c 65 64 20 66 72 6f 6d  20 61 6e 20 69 6e 74 65  |led from an inte|
0003c1e0  72 72 75 70 74 20 72 6f  75 74 69 6e 65 2e 20 48  |rrupt routine. H|
0003c1f0  6f 77 65 76 65 72 2c 20  4f 53 5f 42 79 74 65 20  |owever, OS_Byte |
0003c200  31 32 36 20 6d 61 79 20  6e 6f 74 20 62 65 2c 20  |126 may not be, |
0003c210  73 6f 20 69 66 20 61 6e  20 65 73 63 61 70 65 20  |so if an escape |
0003c220  69 73 20 64 65 74 65 63  74 65 64 20 75 6e 64 65  |is detected unde|
0003c230  72 20 69 6e 74 65 72 72  75 70 74 73 2c 20 74 68  |r interrupts, th|
0003c240  65 20 69 6e 74 65 72 72  75 70 74 20 72 6f 75 74  |e interrupt rout|
0003c250  69 6e 65 20 6d 75 73 74  20 73 65 74 20 61 20 66  |ine must set a f|
0003c260  6c 61 67 20 77 68 69 63  68 20 69 73 20 63 68 65  |lag which is che|
0003c270  63 6b 65 64 20 62 79 20  74 68 65 20 66 6f 72 65  |cked by the fore|
0003c280  67 72 6f 75 6e 64 20 74  61 73 6b 20 72 61 74 68  |ground task rath|
0003c290  65 72 20 74 68 61 6e 20  74 72 79 20 74 6f 20 61  |er than try to a|
0003c2a0  63 6b 6e 6f 77 6c 65 64  67 65 20 74 68 65 20 65  |cknowledge the e|
0003c2b0  73 63 61 70 65 20 69 74  73 65 6c 66 2e 0a 00 00  |scape itself....|
0003c2c0  44 41 54 41 47 03 00 00  4f 53 5f 52 65 61 64 50  |DATAG...OS_ReadP|
0003c2d0  61 6c 65 74 74 65 20 20  28 26 32 46 29 0a 3d 3e  |alette  (&2F).=>|
0003c2e0  09 52 30 20 3d 09 6c 6f  67 69 63 61 6c 20 63 6f  |.R0 =.logical co|
0003c2f0  6c 6f 75 72 0a 09 52 31  20 3d 09 74 79 70 65 20  |lour..R1 =.type |
0003c300  6f 66 20 63 6f 6c 6f 75  72 0a 0a 3c 3d 09 52 32  |of colour..<=.R2|
0003c310  20 3d 20 73 65 74 74 69  6e 67 20 6f 66 20 66 69  | = setting of fi|
0003c320  72 73 74 20 66 6c 61 73  68 69 6e 67 20 63 6f 6c  |rst flashing col|
0003c330  6f 75 72 0a 09 52 33 20  3d 20 73 65 74 74 69 6e  |our..R3 = settin|
0003c340  67 20 6f 66 20 73 65 63  6f 6e 64 20 66 6c 61 73  |g of second flas|
0003c350  68 69 6e 67 20 63 6f 6c  6f 75 72 0a 0a 54 68 69  |hing colour..Thi|
0003c360  73 20 72 65 61 64 73 20  74 68 65 20 73 65 74 74  |s reads the sett|
0003c370  69 6e 67 20 6f 66 20 61  20 70 61 72 74 69 63 75  |ing of a particu|
0003c380  6c 61 72 20 63 6f 6c 6f  75 72 20 74 68 61 74 20  |lar colour that |
0003c390  69 73 20 73 65 6e 74 20  74 6f 20 74 68 65 20 68  |is sent to the h|
0003c3a0  61 72 64 77 61 72 65 2e  20 52 31 20 73 65 6c 65  |ardware. R1 sele|
0003c3b0  63 74 73 20 77 68 65 74  68 65 72 20 74 68 65 20  |cts whether the |
0003c3c0  6e 6f 72 6d 61 6c 20 63  6f 6c 6f 75 72 20 28 31  |normal colour (1|
0003c3d0  36 29 2c 20 62 6f 72 64  65 72 20 63 6f 6c 6f 75  |6), border colou|
0003c3e0  72 20 28 32 34 29 20 6f  72 20 70 6f 69 6e 74 65  |r (24) or pointe|
0003c3f0  72 20 63 6f 6c 6f 75 72  20 28 32 35 29 20 69 73  |r colour (25) is|
0003c400  20 72 65 61 64 2e 20 49  66 20 52 32 20 3d 20 52  | read. If R2 = R|
0003c410  33 20 6f 6e 20 65 78 69  74 20 74 68 65 20 63 6f  |3 on exit the co|
0003c420  6c 6f 75 72 20 72 65 71  75 65 73 74 65 64 20 69  |lour requested i|
0003c430  73 20 61 20 6e 6f 6e 20  66 6c 61 73 68 69 6e 67  |s a non flashing|
0003c440  20 63 6f 6c 6f 75 72 2e  20 54 68 65 20 76 61 6c  | colour. The val|
0003c450  75 65 73 20 61 72 65 20  74 6f 20 69 6e 74 65 72  |ues are to inter|
0003c460  70 72 65 74 20 61 73 20  66 6f 6c 6c 6f 77 73 3a  |pret as follows:|
0003c470  0a 0a 42 69 74 73 09 4d  65 61 6e 69 6e 67 0a 23  |..Bits.Meaning.#|
0003c480  4c 69 6e 65 0a 30 2d 36  09 56 61 6c 75 65 20 73  |Line.0-6.Value s|
0003c490  68 6f 77 69 6e 67 20 68  6f 77 20 63 6f 6c 6f 75  |howing how colou|
0003c4a0  72 20 77 61 73 20 70 72  6f 67 72 61 6d 6d 65 64  |r was programmed|
0003c4b0  0a 37 09 53 75 70 72 65  6d 61 63 79 20 62 69 74  |.7.Supremacy bit|
0003c4c0  0a 38 2d 31 35 09 41 6d  6f 75 6e 74 20 6f 66 20  |.8-15.Amount of |
0003c4d0  72 65 64 0a 31 36 2d 32  33 09 41 6d 6f 75 6e 74  |red.16-23.Amount|
0003c4e0  20 6f 66 20 67 72 65 65  6e 0a 32 34 2d 33 31 09  | of green.24-31.|
0003c4f0  41 6d 6f 75 6e 74 20 6f  66 20 62 6c 75 65 20 20  |Amount of blue  |
0003c500  0a 0a 54 68 65 20 62 6f  74 74 6f 6d 20 62 79 74  |..The bottom byt|
0003c510  65 20 72 65 74 75 72 6e  73 20 74 68 65 20 73 65  |e returns the se|
0003c520  63 6f 6e 64 20 70 61 72  61 6d 65 74 65 72 20 74  |cond parameter t|
0003c530  6f 20 74 68 65 20 3c 56  44 55 20 31 39 3d 3e 56  |o the <VDU 19=>V|
0003c540  44 55 3a 31 39 3e 20 63  6f 6d 6d 61 6e 64 2e 20  |DU:19> command. |
0003c550  46 6f 72 20 65 78 61 6d  70 6c 65 3a 0a 0a 56 61  |For example:..Va|
0003c560  6c 75 65 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |lue.Meaning.#Lin|
0003c570  65 0a 30 2d 31 35 09 41  63 74 75 61 6c 20 63 6f  |e.0-15.Actual co|
0003c580  6c 6f 75 72 20 28 42 42  43 20 63 6f 6d 70 61 74  |lour (BBC compat|
0003c590  69 62 6c 65 29 0a 31 36  09 44 65 66 69 6e 65 64  |ible).16.Defined|
0003c5a0  20 62 79 20 67 69 76 69  6e 67 20 61 6d 6f 75 6e  | by giving amoun|
0003c5b0  74 73 20 6f 66 20 52 20  47 20 61 6e 64 20 42 0a  |ts of R G and B.|
0003c5c0  31 37 2d 31 38 09 46 6c  61 73 68 69 6e 67 20 63  |17-18.Flashing c|
0003c5d0  6f 6c 6f 75 72 20 64 65  66 69 6e 65 64 20 62 79  |olour defined by|
0003c5e0  20 67 69 76 69 6e 67 20  61 6d 6f 75 6e 74 73 20  | giving amounts |
0003c5f0  6f 66 20 72 65 64 2c 20  67 72 65 65 6e 20 61 6e  |of red, green an|
0003c600  64 20 62 6c 75 65 0a 00  44 49 52 24 68 01 00 00  |d blue..DIR$h...|
0003c610  68 01 00 00 70 c7 03 00  45 ff ff ff 2d 7a e5 ff  |h...p...E...-z..|
0003c620  87 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0003c630  74 00 00 00 f8 c7 03 00  45 fd ff ff 1f e5 e7 ff  |t.......E.......|
0003c640  b1 00 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |............0...|
0003c650  ac c8 03 00 45 fd ff ff  05 e2 e7 ff e1 00 00 00  |....E...........|
0003c660  13 00 00 00 00 00 00 00  31 00 00 00 90 c9 03 00  |........1.......|
0003c670  45 fd ff ff a3 de e7 ff  2b 01 00 00 13 00 00 00  |E.......+.......|
0003c680  00 00 00 00 31 30 00 00  bc ca 03 00 46 fd ff ff  |....10......F...|
0003c690  b2 71 4c 53 f8 00 00 00  13 00 00 00 00 00 00 00  |.qLS............|
0003c6a0  31 34 00 00 b4 cb 03 00  45 fd ff ff 22 d2 e7 ff  |14......E..."...|
0003c6b0  42 01 00 00 13 00 00 00  00 00 00 00 31 34 2c 31  |B...........14,1|
0003c6c0  00 00 00 00 f8 cc 03 00  45 fd ff ff 01 b2 e7 ff  |........E.......|
0003c6d0  cb 00 00 00 13 00 00 00  00 00 00 00 32 00 00 00  |............2...|
0003c6e0  c4 cd 03 00 45 fd ff ff  74 ac e7 ff 5c 01 00 00  |....E...t...\...|
0003c6f0  13 00 00 00 00 00 00 00  32 32 00 00 20 cf 03 00  |........22.. ...|
0003c700  45 fd ff ff e3 a5 e7 ff  5e 01 00 00 13 00 00 00  |E.......^.......|
0003c710  00 00 00 00 39 00 00 00  80 d0 03 00 46 fd ff ff  |....9.......F...|
0003c720  bc 17 6c f5 23 02 00 00  13 00 00 00 00 00 00 00  |..l.#...........|
0003c730  69 6e 64 65 78 00 00 00  a4 d2 03 00 46 fd ff ff  |index.......F...|
0003c740  94 fa 6b f5 f9 00 00 00  13 00 00 00 00 00 00 00  |..k.............|
0003c750  31 31 00 00 a0 d3 03 00  46 fd ff ff 61 d7 0e fb  |11......F...a...|
0003c760  0d 01 00 00 13 00 00 00  00 00 00 00 31 32 00 00  |............12..|
0003c770  44 41 54 41 87 00 00 00  4f 53 5f 57 6f 72 64 20  |DATA....OS_Word |
0003c780  20 28 26 30 37 29 0a 23  50 61 72 65 6e 74 20 4f  | (&07).#Parent O|
0003c790  53 5f 0a 3d 3e 09 52 30  20 3d 20 3c 72 65 61 73  |S_.=>.R0 = <reas|
0003c7a0  6f 6e 20 63 6f 64 65 3d  3e 6f 73 5f 77 6f 72 64  |on code=>os_word|
0003c7b0  69 6e 64 65 78 3e 0a 09  52 31 20 3d 20 70 61 72  |index>..R1 = par|
0003c7c0  61 6d 65 74 65 72 20 62  6c 6f 63 6b 0a 0a 41 63  |ameter block..Ac|
0003c7d0  74 69 6f 6e 20 74 61 6b  65 6e 20 64 65 70 65 6e  |tion taken depen|
0003c7e0  64 73 20 6f 6e 20 72 65  61 73 6f 6e 20 63 6f 64  |ds on reason cod|
0003c7f0  65 20 69 6e 20 52 30 00  44 41 54 41 b1 00 00 00  |e in R0.DATA....|
0003c800  4f 53 5f 57 6f 72 64 20  30 0a 3d 3e 09 52 30 20  |OS_Word 0.=>.R0 |
0003c810  3d 20 30 0a 09 52 31 20  3d 20 62 75 66 66 65 72  |= 0..R1 = buffer|
0003c820  3a 0a 09 20 20 30 20 54  77 6f 20 62 79 74 65 20  |:..  0 Two byte |
0003c830  62 75 66 66 65 72 20 61  64 64 72 65 73 73 0a 09  |buffer address..|
0003c840  20 20 32 20 53 69 7a 65  20 6f 66 20 62 75 66 66  |  2 Size of buff|
0003c850  65 72 0a 09 20 20 33 20  4c 6f 77 65 73 74 20 41  |er..  3 Lowest A|
0003c860  53 43 49 49 20 63 6f 64  65 0a 09 20 20 34 20 48  |SCII code..  4 H|
0003c870  69 67 68 65 73 74 20 41  53 43 49 49 20 63 6f 64  |ighest ASCII cod|
0003c880  65 0a 0a 44 6f 6e 27 74  20 75 73 65 20 74 68 69  |e..Don't use thi|
0003c890  73 20 53 57 49 2c 20 75  73 65 20 3c 4f 53 5f 52  |s SWI, use <OS_R|
0003c8a0  65 61 64 4c 69 6e 65 3e  2e 00 00 00 44 41 54 41  |eadLine>....DATA|
0003c8b0  e1 00 00 00 4f 53 5f 57  6f 72 64 20 31 0a 3d 3e  |....OS_Word 1.=>|
0003c8c0  09 52 30 20 3d 20 31 0a  09 52 31 20 3d 20 66 69  |.R0 = 1..R1 = fi|
0003c8d0  76 65 20 62 79 74 65 20  62 6c 6f 63 6b 0a 0a 54  |ve byte block..T|
0003c8e0  68 69 73 20 53 57 49 20  72 65 61 64 73 20 74 68  |his SWI reads th|
0003c8f0  65 20 73 79 73 74 65 6d  20 63 6c 6f 63 6b 2e 20  |e system clock. |
0003c900  4f 6e 20 65 78 69 74 2c  20 74 68 65 20 62 75 66  |On exit, the buf|
0003c910  66 65 72 20 63 6f 6e 74  61 69 6e 73 20 66 69 76  |fer contains fiv|
0003c920  65 20 62 79 74 65 20 73  79 73 74 65 6d 20 63 6c  |e byte system cl|
0003c930  6f 63 6b 2c 20 77 69 74  68 20 4c 53 42 20 66 69  |ock, with LSB fi|
0003c940  72 73 74 2e 0a 0a 54 68  65 20 63 6c 6f 63 6b 20  |rst...The clock |
0003c950  69 73 20 69 6e 63 72 65  6d 65 6e 74 65 64 20 31  |is incremented 1|
0003c960  30 30 20 74 69 6d 65 73  20 61 20 73 65 63 6f 6e  |00 times a secon|
0003c970  64 2c 20 61 6e 64 20 72  65 73 65 74 20 6f 6e 20  |d, and reset on |
0003c980  61 20 68 61 72 64 20 62  72 65 61 6b 2e 00 00 00  |a hard break....|
0003c990  44 41 54 41 2b 01 00 00  4f 53 5f 57 6f 72 64 20  |DATA+...OS_Word |
0003c9a0  31 30 0a 3d 3e 09 52 30  20 3d 20 31 30 0a 09 52  |10.=>.R0 = 10..R|
0003c9b0  31 20 3d 20 39 20 62 79  74 65 20 62 6c 6f 63 6b  |1 = 9 byte block|
0003c9c0  20 3a 0a 09 20 20 30 20  63 68 61 72 61 63 74 65  | :..  0 characte|
0003c9d0  72 20 63 6f 64 65 0a 5c  3c 3d 09 42 75 66 66 65  |r code.\<=.Buffe|
0003c9e0  72 20 61 74 20 52 31 20  63 6f 6e 74 61 69 6e 73  |r at R1 contains|
0003c9f0  3a 0a 09 20 20 31 20 74  6f 70 20 72 6f 77 20 6f  |:..  1 top row o|
0003ca00  66 20 64 65 66 2e 0a 09  20 20 2e 0a 09 20 20 2e  |f def...  ...  .|
0003ca10  0a 09 20 20 38 20 62 6f  74 74 6f 6d 20 72 6f 77  |..  8 bottom row|
0003ca20  20 6f 66 20 64 65 66 2e  0a 0a 54 68 69 73 20 53  | of def...This S|
0003ca30  57 49 20 72 65 61 64 73  20 61 20 63 68 61 72 61  |WI reads a chara|
0003ca40  63 74 65 72 20 64 65 66  69 6e 69 74 69 6f 6e 2e  |cter definition.|
0003ca50  20 56 61 6c 69 64 20 76  61 6c 75 65 73 20 61 72  | Valid values ar|
0003ca60  65 20 33 32 2d 31 32 36  20 61 6e 64 20 31 32 38  |e 32-126 and 128|
0003ca70  2d 32 35 36 2e 20 56 61  6c 75 65 73 20 32 2d 35  |-256. Values 2-5|
0003ca80  20 72 65 74 75 72 6e 73  20 45 43 46 20 70 61 74  | returns ECF pat|
0003ca90  74 65 72 6e 20 31 2d 34  2e 20 56 61 6c 75 65 20  |tern 1-4. Value |
0003caa0  36 20 72 65 74 75 72 6e  73 20 64 6f 74 2d 64 61  |6 returns dot-da|
0003cab0  73 68 20 70 61 74 74 65  72 6e 2e 00 44 41 54 41  |sh pattern..DATA|
0003cac0  f8 00 00 00 4f 53 5f 57  6f 72 64 20 31 34 0a 3d  |....OS_Word 14.=|
0003cad0  3e 09 52 30 20 3d 20 31  34 0a 09 52 31 20 3d 20  |>.R0 = 14..R1 = |
0003cae0  70 61 72 61 6d 65 74 65  72 20 62 6c 6f 63 6b 0a  |parameter block.|
0003caf0  09 52 31 2b 30 20 3d 20  72 65 61 73 6f 6e 20 63  |.R1+0 = reason c|
0003cb00  6f 64 65 20 3a 0a 09 20  20 30 20 3a 09 52 65 61  |ode :..  0 :.Rea|
0003cb10  64 20 73 6f 66 74 2d 63  6f 70 79 20 6f 66 20 43  |d soft-copy of C|
0003cb20  4d 4f 53 20 63 6c 6f 63  6b 20 61 73 20 73 74 72  |MOS clock as str|
0003cb30  69 6e 67 0a 09 20 20 31  20 3a 09 3c 52 65 61 64  |ing..  1 :.<Read|
0003cb40  20 43 4d 4f 53 20 63 6c  6f 63 6b 20 61 73 20 42  | CMOS clock as B|
0003cb50  43 44 3d 3e 4f 53 5f 57  6f 72 64 31 34 2c 31 3e  |CD=>OS_Word14,1>|
0003cb60  0a 09 20 20 32 20 3a 09  43 6f 6e 76 65 72 74 20  |..  2 :.Convert |
0003cb70  42 43 44 20 74 6f 20 73  74 72 69 6e 67 0a 09 20  |BCD to string.. |
0003cb80  20 33 20 3a 09 52 65 61  64 20 73 6f 66 74 2d 63  | 3 :.Read soft-c|
0003cb90  6f 70 79 20 6f 66 20 43  4d 4f 53 20 63 6c 6f 63  |opy of CMOS cloc|
0003cba0  6b 20 61 73 20 35 2d 62  79 74 65 20 69 6e 74 65  |k as 5-byte inte|
0003cbb0  67 65 72 0a 44 41 54 41  42 01 00 00 4f 53 5f 57  |ger.DATAB...OS_W|
0003cbc0  6f 72 64 20 31 34 2c 31  0a 3d 3e 09 52 30 20 3d  |ord 14,1.=>.R0 =|
0003cbd0  20 31 34 0a 09 52 31 20  3d 20 70 74 72 20 74 6f  | 14..R1 = ptr to|
0003cbe0  20 37 2d 62 79 74 65 20  62 6c 6f 63 6b 3a 0a 09  | 7-byte block:..|
0003cbf0  52 31 2b 30 20 3d 20 31  0a 0a 5c 3c 3d 20 42 6c  |R1+0 = 1..\<= Bl|
0003cc00  6f 63 6b 20 63 6f 6e 74  61 69 6e 73 3a 0a 09 52  |ock contains:..R|
0003cc10  31 2b 30 20 3d 20 79 65  61 72 09 09 28 30 2d 39  |1+0 = year..(0-9|
0003cc20  39 29 0a 09 52 31 2b 31  20 3d 20 6d 6f 6e 74 68  |9)..R1+1 = month|
0003cc30  09 09 28 31 2d 31 32 29  0a 09 52 31 2b 32 20 3d  |..(1-12)..R1+2 =|
0003cc40  20 64 61 79 20 6f 66 20  6d 6f 6e 74 68 09 28 31  | day of month.(1|
0003cc50  2d 33 31 29 0a 09 52 31  2b 33 20 3d 20 64 61 79  |-31)..R1+3 = day|
0003cc60  20 6f 66 20 77 65 65 6b  09 28 31 2d 37 2c 20 31  | of week.(1-7, 1|
0003cc70  3d 53 75 6e 64 61 79 29  0a 09 52 31 2b 34 20 3d  |=Sunday)..R1+4 =|
0003cc80  20 68 6f 75 72 09 09 28  30 2d 32 33 29 0a 09 52  | hour..(0-23)..R|
0003cc90  31 2b 35 20 3d 20 6d 69  6e 75 74 65 09 09 28 30  |1+5 = minute..(0|
0003cca0  2d 35 39 29 0a 09 52 31  2b 36 20 3d 20 73 65 63  |-59)..R1+6 = sec|
0003ccb0  6f 6e 64 09 09 28 30 2d  35 39 29 0a 0a 54 68 69  |ond..(0-59)..Thi|
0003ccc0  73 20 4f 53 5f 57 6f 72  64 20 72 65 61 64 73 20  |s OS_Word reads |
0003ccd0  74 68 65 20 74 69 6d 65  20 64 69 72 65 63 74 6c  |the time directl|
0003cce0  79 20 66 72 6f 6d 20 74  68 65 20 43 4d 4f 53 20  |y from the CMOS |
0003ccf0  63 6c 6f 63 6b 2e 00 00  44 41 54 41 cb 00 00 00  |clock...DATA....|
0003cd00  4f 53 5f 57 6f 72 64 20  32 0a 3d 3e 09 52 30 20  |OS_Word 2.=>.R0 |
0003cd10  3d 09 31 0a 09 52 31 20  3d 09 66 69 76 65 20 62  |=.1..R1 =.five b|
0003cd20  79 74 65 20 62 6c 6f 63  6b 20 63 6f 6e 74 61 69  |yte block contai|
0003cd30  6e 69 6e 67 20 6e 65 77  20 73 79 73 74 65 6d 20  |ning new system |
0003cd40  63 6c 6f 63 6b 20 76 61  6c 75 65 2c 20 4c 53 42  |clock value, LSB|
0003cd50  20 66 69 72 73 74 0a 0a  54 68 69 73 20 53 57 49  | first..This SWI|
0003cd60  20 77 72 69 74 65 73 20  74 68 65 20 73 79 73 74  | writes the syst|
0003cd70  65 6d 20 63 6c 6f 63 6b  2e 20 0a 0a 54 68 65 20  |em clock. ..The |
0003cd80  63 6c 6f 63 6b 20 69 73  20 69 6e 63 72 65 6d 65  |clock is increme|
0003cd90  6e 74 65 64 20 31 30 30  20 74 69 6d 65 73 20 61  |nted 100 times a|
0003cda0  20 73 65 63 6f 6e 64 2c  20 61 6e 64 20 72 65 73  | second, and res|
0003cdb0  65 74 20 6f 6e 20 61 20  68 61 72 64 20 62 72 65  |et on a hard bre|
0003cdc0  61 6b 2e 00 44 41 54 41  5c 01 00 00 4f 53 5f 57  |ak..DATA\...OS_W|
0003cdd0  6f 72 64 20 32 32 0a 3d  3e 09 52 30 20 3d 20 32  |ord 22.=>.R0 = 2|
0003cde0  32 0a 09 52 31 20 3d 20  46 69 76 65 2d 62 79 74  |2..R1 = Five-byt|
0003cdf0  65 20 62 75 66 66 65 72  3a 0a 09 20 20 30 20 54  |e buffer:..  0 T|
0003ce00  79 70 65 0a 09 20 20 31  20 55 6e 2d 41 6c 69 67  |ype..  1 Un-Alig|
0003ce10  6e 65 64 20 77 6f 72 64  20 63 6f 6e 74 61 69 6e  |ned word contain|
0003ce20  69 6e 67 20 6e 65 77 20  73 63 72 65 65 6e 20 6f  |ing new screen o|
0003ce30  66 66 73 65 74 2e 0a 0a  54 68 69 73 20 53 57 49  |ffset...This SWI|
0003ce40  20 73 65 74 73 20 75 70  20 61 20 6e 65 77 20 73  | sets up a new s|
0003ce50  63 72 65 65 6e 20 62 61  73 65 20 61 64 64 72 65  |creen base addre|
0003ce60  73 73 2e 20 49 74 20 69  73 20 67 69 76 65 6e 20  |ss. It is given |
0003ce70  61 73 20 74 68 65 20 6f  66 66 73 65 74 20 66 72  |as the offset fr|
0003ce80  6f 6d 20 74 68 65 20 62  61 73 65 20 6f 66 20 74  |om the base of t|
0003ce90  68 65 20 73 63 72 65 65  6e 2e 20 4f 66 66 73 65  |he screen. Offse|
0003cea0  74 20 6d 75 73 74 20 62  65 20 64 69 76 69 73 69  |t must be divisi|
0003ceb0  62 6c 65 20 62 79 20 31  36 2e 0a 54 79 70 65 20  |ble by 16..Type |
0003cec0  3a 0a 20 20 42 69 74 20  30 20 20 69 66 20 73 65  |:.  Bit 0  if se|
0003ced0  74 3a 20 53 65 74 20 73  63 72 65 65 6e 20 62 61  |t: Set screen ba|
0003cee0  73 65 20 75 73 65 64 20  62 79 20 56 44 55 0a 20  |se used by VDU. |
0003cef0  20 42 69 74 20 31 20 20  69 66 20 73 65 74 3a 20  | Bit 1  if set: |
0003cf00  53 65 74 20 73 63 72 65  65 6e 20 62 61 73 65 20  |Set screen base |
0003cf10  75 73 65 64 20 62 79 20  68 61 72 64 77 61 72 65  |used by hardware|
0003cf20  44 41 54 41 5e 01 00 00  4f 53 5f 57 6f 72 64 20  |DATA^...OS_Word |
0003cf30  39 0a 3d 3e 09 52 30 20  3d 20 39 0a 09 52 31 20  |9.=>.R0 = 9..R1 |
0003cf40  3d 20 66 69 76 65 20 62  79 74 65 20 62 6c 6f 63  |= five byte bloc|
0003cf50  6b 3a 0a 09 20 20 30 20  54 77 6f 20 62 79 74 65  |k:..  0 Two byte|
0003cf60  20 78 20 63 6f 6f 72 64  2e 0a 09 20 20 32 20 54  | x coord...  2 T|
0003cf70  77 6f 20 62 79 74 65 20  79 20 63 6f 6f 72 64 2e  |wo byte y coord.|
0003cf80  0a 5c 3c 3d 09 52 31 2b  34 20 63 6f 6e 74 61 69  |.\<=.R1+4 contai|
0003cf90  6e 73 20 6c 6f 67 69 63  61 6c 20 63 6f 6c 6f 75  |ns logical colou|
0003cfa0  72 20 6f 66 20 73 70 65  63 69 66 69 65 64 20 70  |r of specified p|
0003cfb0  69 78 65 6c 2e 0a 0a 54  68 69 73 20 53 57 49 20  |ixel...This SWI |
0003cfc0  72 65 74 75 72 6e 73 20  74 68 65 20 6c 6f 67 69  |returns the logi|
0003cfd0  63 61 6c 20 63 6f 6c 6f  75 72 20 61 74 20 74 68  |cal colour at th|
0003cfe0  65 20 73 70 65 63 69 66  69 65 64 20 70 69 78 65  |e specified pixe|
0003cff0  6c 2e 20 26 46 46 20 69  73 20 72 65 74 75 72 6e  |l. &FF is return|
0003d000  65 64 20 69 66 20 3a 0a  20 20 53 63 72 65 65 6e  |ed if :.  Screen|
0003d010  20 69 73 20 69 6e 20 61  20 32 35 36 2d 63 6f 6c  | is in a 256-col|
0003d020  6f 75 72 20 6d 6f 64 65  2e 0a 20 20 50 69 78 65  |our mode..  Pixe|
0003d030  6c 20 69 73 20 6f 66 66  20 73 63 72 65 65 6e 0a  |l is off screen.|
0003d040  20 20 4d 6f 64 65 20 69  73 20 6e 6f 6e 2d 67 72  |  Mode is non-gr|
0003d050  61 70 69 63 61 6c 0a 0a  44 6f 6e 27 74 20 75 73  |apical..Don't us|
0003d060  65 20 74 68 69 73 20 53  57 49 2c 20 75 73 65 20  |e this SWI, use |
0003d070  3c 4f 53 5f 52 65 61 64  50 6f 69 6e 74 3e 00 00  |<OS_ReadPoint>..|
0003d080  44 41 54 41 23 02 00 00  4f 53 5f 57 6f 72 64 20  |DATA#...OS_Word |
0003d090  69 6e 64 65 78 0a 30 09  26 30 30 09 3c 52 65 61  |index.0.&00.<Rea|
0003d0a0  64 20 6c 69 6e 65 20 66  72 6f 6d 20 69 6e 70 75  |d line from inpu|
0003d0b0  74 20 73 74 72 65 61 6d  3d 3e 6f 73 5f 77 6f 72  |t stream=>os_wor|
0003d0c0  64 30 3e 0a 31 09 26 30  31 09 3c 52 65 61 64 20  |d0>.1.&01.<Read |
0003d0d0  73 79 73 74 65 6d 20 63  6c 6f 63 6b 3d 3e 6f 73  |system clock=>os|
0003d0e0  5f 77 6f 72 64 31 3e 0a  32 09 26 30 32 09 3c 57  |_word1>.2.&02.<W|
0003d0f0  72 69 74 65 20 73 79 73  74 65 6d 20 63 6c 6f 63  |rite system cloc|
0003d100  6b 3d 3e 6f 73 5f 77 6f  72 64 32 3e 0a 33 09 26  |k=>os_word2>.3.&|
0003d110  30 33 09 52 65 61 64 20  69 6e 74 65 72 76 61 6c  |03.Read interval|
0003d120  20 74 69 6d 65 72 0a 34  09 26 30 34 09 57 72 69  | timer.4.&04.Wri|
0003d130  74 65 20 69 6e 74 65 72  76 61 6c 20 74 69 6d 65  |te interval time|
0003d140  72 0a 39 09 26 30 39 09  3c 52 65 61 64 20 70 69  |r.9.&09.<Read pi|
0003d150  78 65 6c 20 6c 6f 67 69  63 61 6c 20 63 6f 6c 6f  |xel logical colo|
0003d160  75 72 3d 3e 6f 73 5f 77  6f 72 64 39 3e 0a 31 30  |ur=>os_word9>.10|
0003d170  09 26 30 41 09 3c 52 65  61 64 20 61 20 63 68 61  |.&0A.<Read a cha|
0003d180  72 61 63 74 65 72 20 64  65 66 69 6e 69 74 69 6f  |racter definitio|
0003d190  6e 3d 3e 6f 73 5f 77 6f  72 64 31 30 3e 0a 31 31  |n=>os_word10>.11|
0003d1a0  09 26 30 42 09 3c 52 65  61 64 20 70 61 6c 65 74  |.&0B.<Read palet|
0003d1b0  74 65 3d 3e 6f 73 5f 77  6f 72 64 31 31 3e 0a 31  |te=>os_word11>.1|
0003d1c0  32 09 26 30 43 09 3c 57  72 69 74 65 20 70 61 6c  |2.&0C.<Write pal|
0003d1d0  65 74 74 65 3d 3e 6f 73  5f 77 6f 72 64 31 32 3e  |ette=>os_word12>|
0003d1e0  0a 31 33 09 26 30 44 09  52 65 61 64 20 63 75 72  |.13.&0D.Read cur|
0003d1f0  72 65 6e 74 20 61 6e 64  20 6c 61 73 74 20 67 72  |rent and last gr|
0003d200  61 70 68 69 63 73 20 63  75 72 73 6f 72 73 0a 31  |aphics cursors.1|
0003d210  34 09 26 30 45 09 3c 52  65 61 64 20 43 4d 4f 53  |4.&0E.<Read CMOS|
0003d220  20 63 6c 6f 63 6b 3d 3e  6f 73 5f 77 6f 72 64 31  | clock=>os_word1|
0003d230  34 3e 0a 31 35 09 26 30  46 09 57 72 69 74 65 20  |4>.15.&0F.Write |
0003d240  43 4d 4f 53 20 63 6c 6f  63 6b 0a 32 31 09 26 31  |CMOS clock.21.&1|
0003d250  35 09 44 65 66 69 6e 65  20 70 6f 69 6e 74 65 72  |5.Define pointer|
0003d260  20 61 6e 64 20 6d 6f 75  73 65 20 70 61 72 61 6d  | and mouse param|
0003d270  65 74 65 72 73 0a 32 32  09 26 31 36 09 3c 57 72  |eters.22.&16.<Wr|
0003d280  69 74 65 20 73 63 72 65  65 6e 20 62 61 73 65 20  |ite screen base |
0003d290  61 64 64 72 65 73 73 3d  3e 6f 73 5f 77 6f 72 64  |address=>os_word|
0003d2a0  32 32 3e 00 44 41 54 41  f9 00 00 00 4f 53 5f 57  |22>.DATA....OS_W|
0003d2b0  6f 72 64 20 31 31 0a 3d  3e 09 52 30 20 3d 09 31  |ord 11.=>.R0 =.1|
0003d2c0  31 0a 09 52 31 20 3d 09  62 75 66 66 65 72 3a 0a  |1..R1 =.buffer:.|
0003d2d0  09 20 09 20 30 20 6c 6f  67 69 63 61 6c 20 63 6f  |. . 0 logical co|
0003d2e0  6c 6f 75 72 20 74 6f 20  72 65 61 64 0a 0a 3c 3d  |lour to read..<=|
0003d2f0  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
0003d300  31 20 70 72 65 73 65 72  76 65 64 3a 0a 09 20 31  |1 preserved:.. 1|
0003d310  09 70 68 79 73 69 63 61  6c 20 63 6f 6c 6f 75 72  |.physical colour|
0003d320  20 61 73 73 6f 63 69 61  74 65 64 20 77 69 74 68  | associated with|
0003d330  20 74 68 65 20 6c 6f 67  69 63 61 6c 20 63 6f 6c  | the logical col|
0003d340  6f 75 72 0a 09 20 32 09  72 65 64 20 63 6f 6d 70  |our.. 2.red comp|
0003d350  6f 6e 65 6e 74 0a 09 20  33 09 67 72 65 65 6e 20  |onent.. 3.green |
0003d360  63 6f 6d 70 6f 6e 65 6e  74 0a 09 20 34 09 62 6c  |component.. 4.bl|
0003d370  75 65 20 63 6f 6d 70 6f  6e 65 6e 74 0a 0a 50 72  |ue component..Pr|
0003d380  65 66 65 72 61 62 6c 65  20 69 73 20 3c 4f 53 5f  |eferable is <OS_|
0003d390  52 65 61 64 50 61 6c 65  74 74 65 3e 2e 00 00 00  |ReadPalette>....|
0003d3a0  44 41 54 41 0d 01 00 00  4f 53 5f 57 6f 72 64 20  |DATA....OS_Word |
0003d3b0  31 32 0a 3d 3e 09 52 30  20 3d 09 31 32 0a 09 52  |12.=>.R0 =.12..R|
0003d3c0  31 20 3d 09 62 75 66 66  65 72 3a 0a 09 20 09 20  |1 =.buffer:.. . |
0003d3d0  30 20 6c 6f 67 69 63 61  6c 20 63 6f 6c 6f 75 72  |0 logical colour|
0003d3e0  20 74 6f 20 63 68 61 6e  67 65 0a 09 20 09 20 31  | to change.. . 1|
0003d3f0  20 6e 65 77 20 70 68 79  73 69 63 61 6c 20 63 6f  | new physical co|
0003d400  6c 6f 75 72 0a 09 20 09  20 32 20 72 65 64 20 63  |lour.. . 2 red c|
0003d410  6f 6d 70 6f 6e 65 6e 74  0a 09 20 09 20 33 20 67  |omponent.. . 3 g|
0003d420  72 65 65 6e 20 63 6f 6d  70 6f 6e 65 6e 74 0a 09  |reen component..|
0003d430  20 09 20 34 20 62 6c 75  65 20 63 6f 6d 70 6f 6e  | . 4 blue compon|
0003d440  65 6e 74 0a 0a 54 68 69  73 20 69 73 20 6e 65 61  |ent..This is nea|
0003d450  72 6c 79 20 65 71 75 61  6c 20 74 6f 20 3c 56 44  |rly equal to <VD|
0003d460  55 20 31 39 3d 3e 56 44  55 3a 31 39 3e 2c 20 62  |U 19=>VDU:19>, b|
0003d470  75 74 20 68 6f 77 65 76  65 72 20 69 74 27 73 20  |ut however it's |
0003d480  66 61 73 74 65 72 20 61  6e 64 20 6d 61 79 20 62  |faster and may b|
0003d490  65 20 75 73 65 64 20 69  6e 20 69 6e 74 65 72 72  |e used in interr|
0003d4a0  75 70 74 20 72 6f 75 74  69 6e 65 73 2e 00 00 00  |upt routines....|
0003d4b0  44 49 52 24 98 00 00 00  98 00 00 00 48 d5 03 00  |DIR$........H...|
0003d4c0  45 ff ff ff 90 77 e5 ff  dc 00 00 00 13 00 00 00  |E....w..........|
0003d4d0  00 00 00 00 30 00 00 00  24 d6 03 00 45 ff ff ff  |....0...$...E...|
0003d4e0  1b 71 e5 ff 7f 00 00 00  13 00 00 00 00 00 00 00  |.q..............|
0003d4f0  49 00 00 00 a4 d6 03 00  45 ff ff ff 60 8f e5 ff  |I.......E...`...|
0003d500  7c 00 00 00 13 00 00 00  00 00 00 00 43 00 00 00  ||...........C...|
0003d510  20 d7 03 00 45 ff ff ff  a1 6e e5 ff 9a 00 00 00  | ...E....n......|
0003d520  13 00 00 00 00 00 00 00  4e 00 00 00 bc d7 03 00  |........N.......|
0003d530  45 ff ff ff f1 6a e5 ff  ed 00 00 00 13 00 00 00  |E....j..........|
0003d540  00 00 00 00 53 00 00 00  44 41 54 41 dc 00 00 00  |....S...DATA....|
0003d550  4f 53 5f 57 72 69 74 65  30 20 20 28 26 30 32 29  |OS_Write0  (&02)|
0003d560  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
0003d570  52 30 20 3d 20 70 74 72  20 74 6f 20 6e 75 6c 6c  |R0 = ptr to null|
0003d580  2d 74 65 72 6d 69 6e 61  74 65 64 20 73 74 72 69  |-terminated stri|
0003d590  6e 67 0a 5c 3c 3d 09 52  30 20 3d 20 70 74 72 20  |ng.\<=.R0 = ptr |
0003d5a0  74 6f 20 74 65 72 6d 69  6e 61 74 69 6e 67 20 5c  |to terminating \|
0003d5b0  5c 30 0a 0a 54 68 69 73  20 53 57 49 20 73 65 6e  |\0..This SWI sen|
0003d5c0  64 73 20 74 68 65 20 73  74 72 69 6e 67 20 70 6f  |ds the string po|
0003d5d0  69 6e 74 65 64 20 74 6f  20 62 79 20 52 30 20 74  |inted to by R0 t|
0003d5e0  6f 20 61 6c 6c 20 61 63  74 69 76 65 20 6f 75 74  |o all active out|
0003d5f0  70 75 74 20 73 74 72 65  61 6d 73 2e 0a 49 74 20  |put streams..It |
0003d600  75 73 65 73 20 3c 4f 53  5f 57 72 69 74 65 43 3e  |uses <OS_WriteC>|
0003d610  20 74 6f 20 77 72 69 74  65 20 65 61 63 68 20 63  | to write each c|
0003d620  68 61 72 2e 44 41 54 41  7f 00 00 00 4f 53 5f 57  |har.DATA....OS_W|
0003d630  72 69 74 65 49 20 20 28  26 31 30 30 2d 26 31 46  |riteI  (&100-&1F|
0003d640  46 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 54  |F).#Parent OS_.T|
0003d650  68 69 73 20 53 57 49 20  77 72 69 74 65 73 20 74  |his SWI writes t|
0003d660  68 65 20 63 68 61 72 20  63 6f 6e 74 61 69 6e 65  |he char containe|
0003d670  64 20 69 6e 20 74 68 65  20 62 6f 74 74 6f 6d 20  |d in the bottom |
0003d680  62 79 74 65 20 6f 66 20  74 68 65 20 53 57 49 2c  |byte of the SWI,|
0003d690  20 75 73 69 6e 67 20 3c  4f 53 5f 57 72 69 74 65  | using <OS_Write|
0003d6a0  43 3e 2e 00 44 41 54 41  7c 00 00 00 4f 53 5f 57  |C>..DATA|...OS_W|
0003d6b0  72 69 74 65 43 20 20 28  26 30 30 29 0a 23 50 61  |riteC  (&00).#Pa|
0003d6c0  72 65 6e 74 20 4f 53 5f  0a 3d 3e 20 52 30 20 3d  |rent OS_.=> R0 =|
0003d6d0  20 63 68 61 72 61 63 74  65 72 20 74 6f 20 77 72  | character to wr|
0003d6e0  69 74 65 0a 0a 54 68 69  73 20 53 57 49 20 73 65  |ite..This SWI se|
0003d6f0  6e 64 73 20 74 68 65 20  62 79 74 65 20 69 6e 20  |nds the byte in |
0003d700  52 30 20 74 6f 20 61 6c  6c 20 61 63 74 69 76 65  |R0 to all active|
0003d710  20 6f 75 74 70 75 74 20  73 74 72 65 61 6d 73 2e  | output streams.|
0003d720  44 41 54 41 9a 00 00 00  4f 53 5f 57 72 69 74 65  |DATA....OS_Write|
0003d730  4e 20 20 28 26 34 36 29  0a 23 50 61 72 65 6e 74  |N  (&46).#Parent|
0003d740  20 4f 53 5f 0a 3d 3e 09  52 30 20 3d 20 70 6f 69  | OS_.=>.R0 = poi|
0003d750  6e 74 65 72 20 74 6f 20  73 74 72 69 6e 67 0a 09  |nter to string..|
0003d760  52 31 20 3d 20 6e 72 20  6f 66 20 62 79 74 65 73  |R1 = nr of bytes|
0003d770  20 74 6f 20 77 72 69 74  65 0a 0a 54 68 69 73 20  | to write..This |
0003d780  53 57 49 20 73 65 6e 64  73 20 74 68 65 20 52 31  |SWI sends the R1|
0003d790  20 62 79 74 65 73 20 69  6e 20 52 30 20 74 6f 20  | bytes in R0 to |
0003d7a0  61 6c 6c 20 61 63 74 69  76 65 20 6f 75 74 70 75  |all active outpu|
0003d7b0  74 20 73 74 72 65 61 6d  73 2e 00 00 44 41 54 41  |t streams...DATA|
0003d7c0  ed 00 00 00 4f 53 5f 57  72 69 74 65 53 20 20 28  |....OS_WriteS  (|
0003d7d0  26 30 31 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&01).#Parent OS_|
0003d7e0  0a 54 68 69 73 20 53 57  49 20 77 72 69 74 65 73  |.This SWI writes|
0003d7f0  20 74 68 65 20 6e 75 6c  6c 20 74 65 72 6d 69 6e  | the null termin|
0003d800  61 74 65 64 20 73 74 72  69 6e 67 20 66 6f 6c 6c  |ated string foll|
0003d810  6f 77 69 6e 67 20 74 68  69 73 20 53 57 49 20 69  |owing this SWI i|
0003d820  6e 20 6d 65 6d 6f 72 79  2e 20 49 74 20 75 73 65  |n memory. It use|
0003d830  73 20 74 68 65 20 76 61  6c 75 65 20 69 6e 20 52  |s the value in R|
0003d840  31 34 20 74 6f 20 66 69  6e 64 20 74 68 65 20 73  |14 to find the s|
0003d850  74 72 69 6e 67 2c 20 61  6e 64 20 75 70 64 61 74  |tring, and updat|
0003d860  65 73 20 52 31 34 20 74  6f 20 70 6f 69 6e 74 20  |es R14 to point |
0003d870  61 66 74 65 72 20 73 74  72 69 6e 67 2e 0a 54 68  |after string..Th|
0003d880  69 73 20 53 57 49 20 63  61 6e 6e 6f 74 20 62 65  |is SWI cannot be|
0003d890  20 63 6f 6e 64 69 74 69  6f 6e 61 6c 6c 79 20 65  | conditionally e|
0003d8a0  78 65 63 75 74 65 64 2e  2e 00 00 00 44 41 54 41  |xecuted.....DATA|
0003d8b0  51 03 00 00 4f 53 5f 46  69 6e 64 4d 65 6d 4d 61  |Q...OS_FindMemMa|
0003d8c0  70 45 6e 74 72 69 65 73  20 20 28 26 36 30 29 0a  |pEntries  (&60).|
0003d8d0  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0003d8e0  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |0 =.pointer to <|
0003d8f0  72 65 71 75 65 73 74 20  62 6c 6f 63 6b 3d 3e 4f  |request block=>O|
0003d900  53 5f 6d 65 6d 6d 61 70  72 65 71 75 65 73 74 3e  |S_memmaprequest>|
0003d910  2c 20 74 65 72 6d 69 6e  61 74 65 64 20 77 69 74  |, terminated wit|
0003d920  68 20 2d 31 0a 3c 3d 09  62 6c 6f 63 6b 20 61 74  |h -1.<=.block at|
0003d930  20 52 30 20 75 70 64 61  74 65 64 0a 0a 54 68 69  | R0 updated..Thi|
0003d940  73 20 53 57 49 20 72 65  74 75 72 6e 73 20 74 68  |s SWI returns th|
0003d950  65 20 6c 6f 67 69 63 61  6c 20 61 64 64 72 65 73  |e logical addres|
0003d960  73 20 74 6f 20 77 68 69  63 68 20 74 68 65 20 72  |s to which the r|
0003d970  65 71 75 65 73 74 65 64  20 70 61 67 65 20 6e 75  |equested page nu|
0003d980  6d 62 65 72 73 20 61 72  65 20 6d 61 70 70 65 64  |mbers are mapped|
0003d990  2c 20 69 65 20 61 64 64  72 65 73 73 20 2d 3e 20  |, ie address -> |
0003d9a0  70 61 67 65 2e 0a 0a 4f  6e 20 65 6e 74 72 79 2c  |page...On entry,|
0003d9b0  20 74 68 65 20 6c 6f 67  69 63 61 6c 20 61 64 64  | the logical add|
0003d9c0  72 65 73 73 20 66 69 65  6c 64 20 6d 75 73 74 20  |ress field must |
0003d9d0  62 65 20 73 65 74 2e 20  59 6f 75 20 6d 61 79 20  |be set. You may |
0003d9e0  73 75 70 70 6c 79 20 70  72 6f 62 61 62 6c 65 20  |supply probable |
0003d9f0  70 61 67 65 20 6e 75 6d  62 65 72 73 2c 20 77 68  |page numbers, wh|
0003da00  69 63 68 2c 20 69 66 20  63 6f 72 72 65 63 74 20  |ich, if correct |
0003da10  77 69 6c 6c 20 6d 61 6b  65 20 74 68 69 73 20 63  |will make this c|
0003da20  61 6c 6c 20 72 65 74 75  72 6e 20 6d 6f 72 65 20  |all return more |
0003da30  71 75 69 63 6b 6c 79 20  74 68 61 6e 20 69 74 20  |quickly than it |
0003da40  6d 69 67 68 74 20 6f 74  68 65 72 77 69 73 65 2e  |might otherwise.|
0003da50  20 49 66 20 79 6f 75 20  68 61 76 65 20 6e 6f 20  | If you have no |
0003da60  69 64 65 61 20 77 68 61  74 20 74 68 65 20 70 61  |idea what the pa|
0003da70  67 65 20 6e 75 6d 62 65  72 20 6d 69 67 68 74 20  |ge number might |
0003da80  62 65 2c 20 79 6f 75 20  73 68 6f 75 6c 64 20 73  |be, you should s|
0003da90  65 74 20 74 68 65 20 70  61 67 65 20 6e 75 6d 62  |et the page numb|
0003daa0  65 72 20 74 6f 20 7a 65  72 6f 20 6f 6e 20 65 6e  |er to zero on en|
0003dab0  74 72 79 2e 20 54 68 65  20 70 72 6f 74 65 63 74  |try. The protect|
0003dac0  69 6f 6e 20 76 61 6c 75  65 20 69 73 20 69 67 6e  |ion value is ign|
0003dad0  6f 72 65 64 20 6f 6e 20  65 6e 74 72 79 2e 20 49  |ored on entry. I|
0003dae0  66 20 74 68 65 20 70 61  67 65 20 6e 75 6d 62 65  |f the page numbe|
0003daf0  72 20 69 73 20 2d 31 20  6f 6e 20 65 78 69 74 2c  |r is -1 on exit,|
0003db00  20 74 68 65 6e 20 74 68  65 20 6d 65 6d 6f 72 79  | then the memory|
0003db10  20 6d 61 70 20 65 6e 74  72 79 20 77 61 73 20 6e  | map entry was n|
0003db20  6f 74 20 66 6f 75 6e 64  3b 20 69 6e 20 74 68 69  |ot found; in thi|
0003db30  73 20 63 61 73 65 2c 20  74 68 65 20 70 72 6f 74  |s case, the prot|
0003db40  65 63 74 69 6f 6e 20 6c  65 76 65 6c 20 77 69 6c  |ection level wil|
0003db50  6c 6c 20 61 6c 77 61 79  73 20 62 65 20 33 2e 20  |ll always be 3. |
0003db60  4f 74 68 65 72 77 69 73  65 20 74 68 65 20 72 65  |Otherwise the re|
0003db70  71 75 65 73 74 20 6c 69  73 74 20 68 61 73 20 62  |quest list has b|
0003db80  65 65 6e 20 75 70 64 61  74 65 64 20 77 69 74 68  |een updated with|
0003db90  20 74 68 65 20 70 61 67  65 20 6e 75 6d 62 65 72  | the page number|
0003dba0  20 61 6e 64 20 70 72 6f  74 65 63 74 69 6f 6e 20  | and protection |
0003dbb0  6c 65 76 65 6c 20 66 6f  72 20 74 68 65 20 67 69  |level for the gi|
0003dbc0  76 65 6e 20 6c 6f 67 69  63 61 6c 20 61 64 64 72  |ven logical addr|
0003dbd0  65 73 73 2e 0a 0a 54 68  65 20 63 6f 6e 76 65 72  |ess...The conver|
0003dbe0  73 65 20 69 73 20 3c 4f  53 5f 52 65 61 64 4d 65  |se is <OS_ReadMe|
0003dbf0  6d 4d 61 70 45 6e 74 72  69 65 73 3e 2e 00 00 00  |mMapEntries>....|
0003dc00  44 41 54 41 74 01 00 00  4d 65 6d 6f 72 79 20 6d  |DATAt...Memory m|
0003dc10  61 70 20 72 65 71 75 65  73 74 65 72 20 62 6c 6f  |ap requester blo|
0003dc20  63 6b 0a 6f 66 66 73 65  74 09 63 6f 6e 74 65 6e  |ck.offset.conten|
0003dc30  74 73 0a 23 4c 69 6e 65  0a 30 09 70 61 67 65 20  |ts.#Line.0.page |
0003dc40  6e 75 6d 62 65 72 0a 34  09 62 61 73 65 20 61 64  |number.4.base ad|
0003dc50  64 72 65 73 73 20 6f 66  20 6d 61 70 70 69 6e 67  |dress of mapping|
0003dc60  0a 38 09 3c 61 63 63 65  73 73 20 74 6f 20 70 61  |.8.<access to pa|
0003dc70  67 65 3d 3e 2e 61 63 63  65 73 73 3e 0a 2e 2e 2e  |ge=>.access>....|
0003dc80  09 72 65 70 65 61 74 65  64 20 3f 0a 23 53 75 62  |.repeated ?.#Sub|
0003dc90  70 61 67 65 20 61 63 63  65 73 73 0a 50 61 67 65  |page access.Page|
0003dca0  20 61 63 63 65 73 73 0a  56 61 6c 75 65 09 4d 65  | access.Value.Me|
0003dcb0  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 30 09 52 65  |aning.#Line.0.Re|
0003dcc0  61 64 2f 57 72 69 74 65  0a 31 09 52 65 61 64 20  |ad/Write.1.Read |
0003dcd0  6f 6e 6c 79 0a 32 09 49  6e 61 63 63 65 73 73 61  |only.2.Inaccessa|
0003dce0  62 6c 65 20 69 6e 20 75  73 65 72 20 6d 6f 64 65  |ble in user mode|
0003dcf0  0a 33 09 4d 61 70 70 65  64 20 6f 75 74 0a 31 30  |.3.Mapped out.10|
0003dd00  09 4e 6f 74 20 62 75 66  66 65 72 61 62 6c 65 20  |.Not bufferable |
0003dd10  3f 0a 32 30 09 4e 6f 74  20 63 61 63 68 65 61 62  |?.20.Not cacheab|
0003dd20  6c 65 20 3f 0a 34 30 09  44 6f 75 62 6c 79 20 6d  |le ?.40.Doubly m|
0003dd30  61 70 70 65 64 20 3f 0a  38 30 09 4e 6f 20 75 73  |apped ?.80.No us|
0003dd40  65 72 20 64 72 61 67 20  28 66 6f 72 20 64 79 6e  |er drag (for dyn|
0003dd50  61 6d 69 63 20 61 72 65  61 73 29 0a 31 30 30 09  |amic areas).100.|
0003dd60  4e 65 65 64 73 20 67 69  76 65 6e 20 70 61 67 65  |Needs given page|
0003dd70  73 20 3f 0a 44 41 54 41  63 01 00 00 4f 53 5f 53  |s ?.DATAc...OS_S|
0003dd80  65 74 4d 65 6d 4d 61 70  45 6e 74 72 69 65 73 20  |etMemMapEntries |
0003dd90  20 28 26 35 33 29 0a 23  50 61 72 65 6e 74 20 4f  | (&53).#Parent O|
0003dda0  53 5f 0a 3d 3e 09 52 30  20 3d 20 70 6f 69 6e 74  |S_.=>.R0 = point|
0003ddb0  65 72 20 74 6f 20 3c 72  65 71 75 65 73 74 20 62  |er to <request b|
0003ddc0  6c 6f 63 6b 3d 3e 4f 53  5f 6d 65 6d 6d 61 70 72  |lock=>OS_memmapr|
0003ddd0  65 71 75 65 73 74 3e 0a  3c 3d 09 62 6c 6f 63 6b  |equest>.<=.block|
0003dde0  20 61 74 20 52 30 20 75  70 64 61 74 65 64 0a 0a  | at R0 updated..|
0003ddf0  54 68 69 73 20 53 57 49  20 73 65 74 73 20 74 68  |This SWI sets th|
0003de00  65 20 6c 6f 67 69 63 61  6c 20 74 6f 20 70 68 79  |e logical to phy|
0003de10  73 69 63 61 6c 20 6d 61  70 70 69 6e 67 20 6f 66  |sical mapping of|
0003de20  20 74 68 65 20 6d 65 6d  6f 72 79 20 70 61 67 65  | the memory page|
0003de30  73 2e 0a 0a 49 66 20 79  6f 75 20 61 72 65 20 75  |s...If you are u|
0003de40  73 69 6e 67 20 74 68 69  73 20 63 61 6c 6c 2c 20  |sing this call, |
0003de50  74 68 65 6e 20 79 6f 75  20 63 61 6e 20 6f 6e 6c  |then you can onl|
0003de60  79 20 75 73 65 20 3c 4f  53 5f 43 68 61 6e 67 65  |y use <OS_Change|
0003de70  44 79 6e 61 6d 69 63 41  72 65 61 3e 20 69 66 20  |DynamicArea> if |
0003de80  74 68 65 20 6b 65 72 6e  65 6c 27 73 20 6c 69 6d  |the kernel's lim|
0003de90  69 74 73 20 61 72 65 20  6d 61 69 6e 74 61 69 6e  |its are maintain|
0003dea0  65 64 2c 20 61 6e 64 20  61 6c 6c 20 61 70 70 72  |ed, and all appr|
0003deb0  6f 70 72 69 61 74 65 20  61 72 65 61 73 20 63 6f  |opriate areas co|
0003dec0  6e 74 61 69 6e 20 63 6f  6e 74 69 6e 6f 75 73 20  |ntain continous |
0003ded0  6d 65 6d 6f 72 79 2e 00  44 41 54 41 3c 01 00 00  |memory..DATA<...|
0003dee0  4f 53 5f 43 61 6c 6c 41  66 74 65 72 20 20 28 26  |OS_CallAfter  (&|
0003def0  33 42 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |3B).#Parent OS_.|
0003df00  3d 3e 09 52 30 20 3d 20  64 65 6c 61 79 20 69 6e  |=>.R0 = delay in|
0003df10  20 63 73 0a 09 52 31 20  3d 20 61 64 64 72 65 73  | cs..R1 = addres|
0003df20  73 20 74 6f 20 63 61 6c  6c 0a 09 52 32 20 3d 20  |s to call..R2 = |
0003df30  76 61 6c 75 65 20 6f 66  20 52 31 32 20 74 6f 20  |value of R12 to |
0003df40  62 65 20 63 61 6c 6c 65  64 20 77 69 74 68 0a 0a  |be called with..|
0003df50  5c 3c 3d 09 52 30 20 3d  20 70 72 65 73 65 72 76  |\<=.R0 = preserv|
0003df60  65 64 0a 09 52 31 20 3d  20 70 72 65 73 65 72 76  |ed..R1 = preserv|
0003df70  65 64 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ed.             |
0003df80  20 20 20 20 0a 53 65 74  73 20 61 20 43 61 6c 6c  |    .Sets a Call|
0003df90  42 61 63 6b 20 72 6f 75  74 69 6e 65 20 74 6f 20  |Back routine to |
0003dfa0  62 65 20 74 72 69 67 67  65 72 65 64 20 61 66 74  |be triggered aft|
0003dfb0  65 72 20 61 20 73 70 65  63 69 66 69 65 64 20 64  |er a specified d|
0003dfc0  65 6c 61 79 2e 20 53 65  65 20 3c 4f 53 5f 41 64  |elay. See <OS_Ad|
0003dfd0  64 43 61 6c 6c 42 61 63  6b 3e 20 66 6f 72 20 6d  |dCallBack> for m|
0003dfe0  6f 72 65 20 64 65 74 61  69 6c 73 2e 20 54 6f 20  |ore details. To |
0003dff0  72 65 6d 6f 76 65 2c 20  75 73 65 20 3c 4f 53 5f  |remove, use <OS_|
0003e000  52 65 6d 6f 76 65 54 69  63 6b 65 72 45 76 65 6e  |RemoveTickerEven|
0003e010  74 3e 2e 0a 44 41 54 41  93 00 00 00 4f 53 5f 52  |t>..DATA....OS_R|
0003e020  65 6d 6f 76 65 43 61 6c  6c 42 61 63 6b 20 20 28  |emoveCallBack  (|
0003e030  26 35 46 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&5F).#Parent OS_|
0003e040  0a 3d 3e 09 52 30 20 3d  20 63 6f 64 65 20 63 61  |.=>.R0 = code ca|
0003e050  6c 6c 65 64 0a 09 52 31  20 3d 20 76 61 6c 75 65  |lled..R1 = value|
0003e060  20 6f 66 20 52 31 32 20  63 61 6c 6c 65 64 20 77  | of R12 called w|
0003e070  69 74 68 0a 0a 52 65 6d  6f 76 65 73 20 61 20 63  |ith..Removes a c|
0003e080  61 6c 6c 20 62 61 63 6b  20 65 76 65 6e 74 2c 20  |all back event, |
0003e090  73 75 63 68 20 61 73 20  3c 4f 53 5f 43 61 6c 6c  |such as <OS_Call|
0003e0a0  42 61 63 6b 3e 2e 0a 00  44 41 54 41 ac 00 00 00  |Back>...DATA....|
0003e0b0  4f 53 5f 52 65 6d 6f 76  65 54 69 63 6b 65 72 45  |OS_RemoveTickerE|
0003e0c0  76 65 6e 74 20 20 28 26  33 44 29 0a 23 50 61 72  |vent  (&3D).#Par|
0003e0d0  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 20  |ent OS_.=>.R0 = |
0003e0e0  63 6f 64 65 20 63 61 6c  6c 65 64 0a 09 52 31 20  |code called..R1 |
0003e0f0  3d 20 76 61 6c 75 65 20  6f 66 20 52 31 32 20 63  |= value of R12 c|
0003e100  61 6c 6c 65 64 20 77 69  74 68 0a 0a 52 65 6d 6f  |alled with..Remo|
0003e110  76 65 73 20 61 20 74 69  63 6b 65 72 20 74 69 6d  |ves a ticker tim|
0003e120  65 72 20 65 76 65 6e 74  2c 20 73 75 63 68 20 61  |er event, such a|
0003e130  73 20 3c 4f 53 5f 43 61  6c 6c 45 76 65 72 79 3e  |s <OS_CallEvery>|
0003e140  20 6f 72 20 3c 4f 53 5f  43 61 6c 6c 41 66 74 65  | or <OS_CallAfte|
0003e150  72 3e 2e 0a 44 41 54 41  53 01 00 00 4f 53 5f 43  |r>..DATAS...OS_C|
0003e160  61 6c 6c 45 76 65 72 79  20 20 28 26 33 43 29 0a  |allEvery  (&3C).|
0003e170  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0003e180  30 20 3d 20 74 69 6d 65  20 74 6f 20 63 61 6c 6c  |0 = time to call|
0003e190  20 69 6e 20 63 73 0a 09  52 31 20 3d 20 61 64 64  | in cs..R1 = add|
0003e1a0  72 65 73 73 20 74 6f 20  63 61 6c 6c 0a 09 52 32  |ress to call..R2|
0003e1b0  20 3d 20 76 61 6c 75 65  20 6f 66 20 52 31 32 20  | = value of R12 |
0003e1c0  74 6f 20 62 65 20 63 61  6c 6c 65 64 20 77 69 74  |to be called wit|
0003e1d0  68 0a 0a 5c 3c 3d 09 52  30 20 3d 20 70 72 65 73  |h..\<=.R0 = pres|
0003e1e0  65 72 76 65 64 0a 09 52  31 20 3d 20 70 72 65 73  |erved..R1 = pres|
0003e1f0  65 72 76 65 64 0a 20 20  20 20 20 20 20 20 20 20  |erved.          |
0003e200  20 20 20 20 20 20 20 0a  53 65 74 73 20 61 20 43  |       .Sets a C|
0003e210  61 6c 6c 42 61 63 6b 20  72 6f 75 74 69 6e 65 20  |allBack routine |
0003e220  74 6f 20 62 65 20 74 72  69 67 67 65 72 65 64 20  |to be triggered |
0003e230  65 76 65 72 79 20 74 69  6d 65 20 61 20 73 70 65  |every time a spe|
0003e240  63 69 66 69 65 64 20 64  65 6c 61 79 20 68 61 73  |cified delay has|
0003e250  20 65 6c 61 70 73 65 64  2e 20 53 65 65 20 3c 4f  | elapsed. See <O|
0003e260  53 5f 41 64 64 43 61 6c  6c 42 61 63 6b 3e 20 66  |S_AddCallBack> f|
0003e270  6f 72 20 6d 6f 72 65 20  64 65 74 61 69 6c 73 2e  |or more details.|
0003e280  20 54 6f 20 72 65 6d 6f  76 65 20 75 73 65 20 3c  | To remove use <|
0003e290  4f 53 5f 52 65 6d 6f 76  65 54 69 63 6b 65 72 45  |OS_RemoveTickerE|
0003e2a0  76 65 6e 74 3e 2e 0a 00  44 49 52 24 68 01 00 00  |vent>...DIR$h...|
0003e2b0  68 01 00 00 10 e4 03 00  46 ff ff ff 15 5f 8a a5  |h.......F...._..|
0003e2c0  a9 01 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0003e2d0  74 00 00 00 bc e5 03 00  47 fd ff ff ec 59 0e 0a  |t.......G....Y..|
0003e2e0  dc 05 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |............0...|
0003e2f0  98 eb 03 00 46 fd ff ff  1b 74 f1 f5 f6 01 00 00  |....F....t......|
0003e300  13 00 00 00 00 00 00 00  48 61 6e 64 6c 65 72 00  |........Handler.|
0003e310  90 ed 03 00 46 fd ff ff  f6 51 26 a2 3d 04 00 00  |....F....Q&.=...|
0003e320  13 00 00 00 00 00 00 00  48 61 6e 64 6c 65 72 30  |........Handler0|
0003e330  00 00 00 00 d0 f1 03 00  46 fd ff ff 2b 79 a8 fa  |........F...+y..|
0003e340  88 02 00 00 13 00 00 00  00 00 00 00 68 61 6e 64  |............hand|
0003e350  6c 65 72 31 00 00 00 00  58 f4 03 00 46 fd ff ff  |ler1....X...F...|
0003e360  2d 6e 26 a2 6b 03 00 00  13 00 00 00 00 00 00 00  |-n&.k...........|
0003e370  48 61 6e 64 6c 65 72 32  00 00 00 00 c4 f7 03 00  |Handler2........|
0003e380  46 fd ff ff a3 96 26 a2  f6 01 00 00 13 00 00 00  |F.....&.........|
0003e390  00 00 00 00 48 61 6e 64  6c 65 72 33 00 00 00 00  |....Handler3....|
0003e3a0  bc f9 03 00 46 fd ff ff  9f ec 68 c4 c6 02 00 00  |....F.....h.....|
0003e3b0  13 00 00 00 00 00 00 00  31 00 00 00 84 fc 03 00  |........1.......|
0003e3c0  46 fd ff ff a8 fe 68 c4  98 02 00 00 13 00 00 00  |F.....h.........|
0003e3d0  00 00 00 00 32 00 00 00  1c ff 03 00 46 fd ff ff  |....2.......F...|
0003e3e0  c3 0a 69 c4 76 01 00 00  13 00 00 00 00 00 00 00  |..i.v...........|
0003e3f0  33 00 00 00 94 00 04 00  46 fd ff ff 41 0f 69 c4  |3.......F...A.i.|
0003e400  c3 01 00 00 13 00 00 00  00 00 00 00 34 00 00 00  |............4...|
0003e410  44 41 54 41 a9 01 00 00  4f 53 5f 44 79 6e 61 6d  |DATA....OS_Dynam|
0003e420  69 63 41 72 65 61 20 20  28 26 36 36 29 0a 23 50  |icArea  (&66).#P|
0003e430  61 72 65 6e 74 20 4f 53  5f 0a 3d 3e 09 52 30 20  |arent OS_.=>.R0 |
0003e440  3d 20 72 65 61 73 6f 6e  20 63 6f 64 65 0a 5c 3c  |= reason code.\<|
0003e450  3d 09 52 30 20 3d 20 70  72 65 73 65 72 76 65 64  |=.R0 = preserved|
0003e460  0a 0a 50 65 72 66 6f 72  6d 73 20 6f 70 65 72 61  |..Performs opera|
0003e470  74 69 6f 6e 73 20 6f 6e  20 75 73 65 72 20 64 79  |tions on user dy|
0003e480  6e 61 6d 69 63 20 61 72  65 61 73 20 28 52 49 53  |namic areas (RIS|
0003e490  43 20 4f 53 20 33 2e 35  2b 29 2e 0a 0a 23 54 61  |C OS 3.5+)...#Ta|
0003e4a0  62 0a 43 6f 64 65 09 41  63 74 69 6f 6e 0a 23 4c  |b.Code.Action.#L|
0003e4b0  69 6e 65 0a 30 09 3c 43  72 65 61 74 65 73 20 61  |ine.0.<Creates a|
0003e4c0  20 6e 65 77 20 64 79 6e  61 6d 69 63 20 61 72 65  | new dynamic are|
0003e4d0  61 3d 3e 4f 53 5f 44 79  6e 61 6d 69 63 41 72 65  |a=>OS_DynamicAre|
0003e4e0  61 30 3e 0a 31 09 3c 52  65 6d 6f 76 65 73 20 61  |a0>.1.<Removes a|
0003e4f0  20 70 72 65 76 69 6f 75  73 6c 79 20 63 72 65 61  | previously crea|
0003e500  74 65 64 20 64 79 6e 61  6d 69 63 20 61 72 65 61  |ted dynamic area|
0003e510  3d 3e 4f 53 5f 44 79 6e  61 6d 69 63 41 72 65 61  |=>OS_DynamicArea|
0003e520  31 3e 0a 32 09 3c 52 65  74 75 72 6e 73 20 69 6e  |1>.2.<Returns in|
0003e530  66 6f 72 6d 61 74 69 6f  6e 20 6f 6e 20 61 20 64  |formation on a d|
0003e540  79 6e 61 6d 69 63 20 61  72 65 61 3d 3e 4f 53 5f  |ynamic area=>OS_|
0003e550  44 79 6e 61 6d 69 63 41  72 65 61 32 3e 0a 33 09  |DynamicArea2>.3.|
0003e560  3c 45 6e 75 6d 65 72 61  74 65 73 20 64 79 6e 61  |<Enumerates dyna|
0003e570  6d 69 63 20 61 72 65 61  73 3d 3e 4f 53 5f 44 79  |mic areas=>OS_Dy|
0003e580  6e 61 6d 69 63 41 72 65  61 33 3e 0a 34 09 3c 52  |namicArea3>.4.<R|
0003e590  65 6e 75 6d 62 65 72 73  20 64 79 6e 61 6d 69 63  |enumbers dynamic|
0003e5a0  20 61 72 65 61 73 3d 3e  4f 53 5f 44 79 6e 61 6d  | areas=>OS_Dynam|
0003e5b0  69 63 41 72 65 61 34 3e  0a 00 00 00 44 41 54 41  |icArea4>....DATA|
0003e5c0  dc 05 00 00 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |....OS_DynamicAr|
0003e5d0  65 61 20 30 20 20 28 26  36 36 29 0a 23 50 61 72  |ea 0  (&66).#Par|
0003e5e0  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
0003e5f0  30 0a 09 52 31 20 3d 09  2d 31 20 28 6f 72 20 6e  |0..R1 =.-1 (or n|
0003e600  65 77 20 61 72 65 61 20  6e 75 6d 62 65 72 20 31  |ew area number 1|
0003e610  32 38 2d 32 35 35 3b 20  72 65 73 65 72 76 65 64  |28-255; reserved|
0003e620  20 66 6f 72 20 41 63 6f  72 6e 29 0a 09 52 32 20  | for Acorn)..R2 |
0003e630  3d 09 69 6e 69 74 69 61  6c 20 73 69 7a 65 20 6f  |=.initial size o|
0003e640  66 20 61 72 65 61 2c 20  69 6e 20 62 79 74 65 73  |f area, in bytes|
0003e650  0a 09 52 33 20 3d 09 2d  31 20 28 6f 72 20 62 61  |..R3 =.-1 (or ba|
0003e660  73 65 20 6f 66 20 61 72  65 61 3b 20 72 65 73 65  |se of area; rese|
0003e670  72 76 65 64 20 66 6f 72  20 41 63 6f 72 6e 29 0a  |rved for Acorn).|
0003e680  09 52 34 20 3d 09 3c 61  72 65 61 20 66 6c 61 67  |.R4 =.<area flag|
0003e690  73 3d 3e 2e 66 6c 61 67  73 3e 0a 09 52 35 20 3d  |s=>.flags>..R5 =|
0003e6a0  09 6d 61 78 69 6d 75 6d  20 73 69 7a 65 20 6f 66  |.maximum size of|
0003e6b0  20 61 72 65 61 2c 20 69  6e 20 62 79 74 65 73 20  | area, in bytes |
0003e6c0  28 2d 31 20 66 6f 72 20  75 6e 6c 69 6d 69 74 65  |(-1 for unlimite|
0003e6d0  64 29 0a 09 52 36 20 3d  09 3c 68 61 6e 64 6c 65  |d)..R6 =.<handle|
0003e6e0  72 20 72 6f 75 74 69 6e  65 3d 3e 4f 53 5f 44 79  |r routine=>OS_Dy|
0003e6f0  6e 61 6d 69 63 41 72 65  61 48 61 6e 64 6c 65 72  |namicAreaHandler|
0003e700  3e 0a 09 52 37 20 3d 09  70 6f 69 6e 74 65 72 20  |>..R7 =.pointer |
0003e710  74 6f 20 77 6f 72 6b 73  70 61 63 65 20 66 6f 72  |to workspace for|
0003e720  20 68 61 6e 64 6c 65 72  2c 20 6f 72 20 2d 31 20  | handler, or -1 |
0003e730  66 6f 72 20 62 61 73 65  20 6f 66 20 61 72 65 61  |for base of area|
0003e740  0a 09 52 38 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R8 =.pointer t|
0003e750  6f 20 6e 61 6d 65 20 6f  66 20 61 72 65 61 0a 09  |o name of area..|
0003e760  0a 5c 3c 3d 09 52 30 2c  20 52 32 2c 20 52 34 2c  |.\<=.R0, R2, R4,|
0003e770  20 52 36 2d 52 38 20 3d  20 70 72 65 73 65 72 76  | R6-R8 = preserv|
0003e780  65 64 0a 09 52 31 20 3d  09 61 6c 6c 6f 63 61 74  |ed..R1 =.allocat|
0003e790  65 64 20 61 72 65 61 20  6e 75 6d 62 65 72 0a 09  |ed area number..|
0003e7a0  52 33 20 3d 09 62 61 73  65 20 6f 66 20 61 72 65  |R3 =.base of are|
0003e7b0  61 0a 09 52 35 20 3d 09  6d 61 78 69 6d 75 6d 20  |a..R5 =.maximum |
0003e7c0  73 69 7a 65 20 6f 66 20  61 72 65 61 0a 0a 54 68  |size of area..Th|
0003e7d0  69 73 20 63 61 6c 6c 20  63 72 65 61 74 65 73 20  |is call creates |
0003e7e0  61 20 6e 65 77 20 64 79  6e 61 6d 69 63 20 61 72  |a new dynamic ar|
0003e7f0  65 61 2e 20 41 72 65 61  20 6e 75 6d 62 65 72 73  |ea. Area numbers|
0003e800  20 61 6c 6c 6f 63 61 74  65 64 20 61 72 65 20 67  | allocated are g|
0003e810  72 65 61 74 65 72 20 74  68 61 6e 20 6f 72 20 65  |reater than or e|
0003e820  71 75 61 6c 20 74 6f 20  32 35 36 2e 0a 23 53 75  |qual to 256..#Su|
0003e830  62 70 61 67 65 20 66 6c  61 67 73 0a 44 79 6e 61  |bpage flags.Dyna|
0003e840  6d 69 63 20 61 72 65 61  20 66 6c 61 67 73 0a 42  |mic area flags.B|
0003e850  69 74 28 73 29 09 4d 65  61 6e 69 6e 67 0a 23 4c  |it(s).Meaning.#L|
0003e860  69 6e 65 0a 30 20 2d 20  33 09 61 63 63 65 73 73  |ine.0 - 3.access|
0003e870  20 70 72 69 76 69 6c 65  67 65 73 20 74 6f 20 62  | privileges to b|
0003e880  65 20 67 69 76 65 6e 20  74 6f 20 65 61 63 68 20  |e given to each |
0003e890  70 61 67 65 20 69 6e 20  74 68 65 20 61 72 65 61  |page in the area|
0003e8a0  20 28 73 61 6d 65 20 66  6f 72 6d 61 74 20 61 73  | (same format as|
0003e8b0  20 66 6f 72 20 3c 4f 53  5f 52 65 61 64 4d 65 6d  | for <OS_ReadMem|
0003e8c0  4d 61 70 45 6e 74 72 69  65 73 3e 2f 3c 4f 53 5f  |MapEntries>/<OS_|
0003e8d0  53 65 74 4d 65 6d 4d 61  70 45 6e 74 72 69 65 73  |SetMemMapEntries|
0003e8e0  3e 29 0a 34 09 53 65 74  20 69 66 20 61 72 65 61  |>).4.Set if area|
0003e8f0  20 69 73 20 6e 6f 74 20  62 75 66 66 65 72 61 62  | is not bufferab|
0003e900  6c 65 20 62 79 20 63 68  69 70 73 0a 35 09 53 65  |le by chips.5.Se|
0003e910  74 20 69 66 20 61 72 65  61 20 69 73 20 6e 6f 74  |t if area is not|
0003e920  20 63 61 63 68 65 61 62  6c 65 20 62 79 20 63 68  | cacheable by ch|
0003e930  69 70 73 0a 36 09 49 66  20 73 65 74 2c 20 61 72  |ips.6.If set, ar|
0003e940  65 61 20 69 73 20 64 6f  75 62 6c 79 20 6d 61 70  |ea is doubly map|
0003e950  70 65 64 20 28 72 65 73  65 72 76 65 64 29 2c 20  |ped (reserved), |
0003e960  6f 74 68 65 72 77 69 73  65 20 61 72 65 61 20 69  |otherwise area i|
0003e970  73 20 73 69 6e 67 6c 79  20 6d 61 70 70 65 64 0a  |s singly mapped.|
0003e980  37 09 30 20 3d 3e 20 61  72 65 61 20 6d 61 79 20  |7.0 => area may |
0003e990  62 65 20 64 72 61 67 67  65 64 20 62 79 20 74 68  |be dragged by th|
0003e9a0  65 20 75 73 65 72 20 69  6e 20 54 61 73 6b 20 4d  |e user in Task M|
0003e9b0  61 6e 61 67 65 72 20 77  69 6e 64 6f 77 20 28 68  |anager window (h|
0003e9c0  61 73 20 72 65 64 20 62  61 72 29 0a 09 31 20 3d  |as red bar)..1 =|
0003e9d0  3e 20 61 72 65 61 20 6d  61 79 20 6e 6f 74 20 62  |> area may not b|
0003e9e0  65 20 64 72 61 67 67 65  64 20 62 79 20 74 68 65  |e dragged by the|
0003e9f0  20 75 73 65 72 20 69 6e  20 54 61 73 6b 20 4d 61  | user in Task Ma|
0003ea00  6e 61 67 65 72 20 77 69  6e 64 6f 77 20 28 68 61  |nager window (ha|
0003ea10  73 20 67 72 65 65 6e 20  62 61 72 29 0a 38 09 30  |s green bar).8.0|
0003ea20  20 3d 3e 20 61 72 65 61  20 64 6f 65 73 20 6e 6f  | => area does no|
0003ea30  74 20 72 65 71 75 69 72  65 20 73 70 65 63 69 66  |t require specif|
0003ea40  69 63 20 70 68 79 73 69  63 61 6c 20 70 61 67 65  |ic physical page|
0003ea50  73 20 28 69 65 20 52 31  20 69 73 20 75 6e 64 65  |s (ie R1 is unde|
0003ea60  66 69 6e 65 64 20 6f 6e  20 65 6e 74 72 79 20 74  |fined on entry t|
0003ea70  6f 20 74 68 65 20 3c 50  72 65 47 72 6f 77 3d 3e  |o the <PreGrow=>|
0003ea80  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 48 61  |OS_DynamicAreaHa|
0003ea90  6e 64 6c 65 72 30 3e 20  61 6e 64 20 3c 50 6f 73  |ndler0> and <Pos|
0003eaa0  74 47 72 6f 77 3d 3e 4f  53 5f 44 79 6e 61 6d 69  |tGrow=>OS_Dynami|
0003eab0  63 41 72 65 61 48 61 6e  64 6c 65 72 31 3e 20 68  |cAreaHandler1> h|
0003eac0  61 6e 64 6c 65 72 73 29  0a 09 31 20 3d 3e 20 61  |andlers)..1 => a|
0003ead0  72 65 61 20 6d 61 79 20  72 65 71 75 69 72 65 20  |rea may require |
0003eae0  73 70 65 63 69 66 69 63  20 70 68 79 73 69 63 61  |specific physica|
0003eaf0  6c 20 70 61 67 65 73 20  28 69 65 20 52 31 20 70  |l pages (ie R1 p|
0003eb00  6f 69 6e 74 73 20 61 74  20 61 20 70 61 67 65 20  |oints at a page |
0003eb10  62 6c 6f 63 6b 20 6f 6e  20 65 6e 74 72 79 20 74  |block on entry t|
0003eb20  6f 20 74 68 65 20 3c 50  72 65 47 72 6f 77 3d 3e  |o the <PreGrow=>|
0003eb30  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 48 61  |OS_DynamicAreaHa|
0003eb40  6e 64 6c 65 72 30 3e 20  61 6e 64 20 3c 50 6f 73  |ndler0> and <Pos|
0003eb50  74 47 72 6f 77 3d 3e 4f  53 5f 44 79 6e 61 6d 69  |tGrow=>OS_Dynami|
0003eb60  63 41 72 65 61 48 61 6e  64 6c 65 72 31 3e 20 68  |cAreaHandler1> h|
0003eb70  61 6e 64 6c 65 72 73 29  0a 39 20 2d 20 33 31 09  |andlers).9 - 31.|
0003eb80  72 65 73 65 72 76 65 64  20 28 6d 75 73 74 20 62  |reserved (must b|
0003eb90  65 20 7a 65 72 6f 29 0a  44 41 54 41 f6 01 00 00  |e zero).DATA....|
0003eba0  44 79 6e 61 6d 69 63 20  61 72 65 61 20 68 61 6e  |Dynamic area han|
0003ebb0  64 6c 65 72 20 63 6f 64  65 0a 3d 3e 09 52 30 09  |dler code.=>.R0.|
0003ebc0  3d 09 72 65 61 73 6f 6e  0a 09 52 31 32 09 3d 09  |=.reason..R12.=.|
0003ebd0  77 6f 72 6b 73 70 61 63  65 20 70 6f 69 6e 74 65  |workspace pointe|
0003ebe0  72 20 70 61 73 73 65 64  20 74 6f 20 3c 4f 53 5f  |r passed to <OS_|
0003ebf0  44 79 6e 61 6d 69 63 41  72 65 61 20 30 3d 3e 4f  |DynamicArea 0=>O|
0003ec00  53 5f 44 79 6e 61 6d 69  63 41 72 65 61 30 3e 0a  |S_DynamicArea0>.|
0003ec10  0a 44 79 6e 61 6d 69 63  20 68 61 6e 64 6c 65 72  |.Dynamic handler|
0003ec20  20 63 6f 64 65 20 63 6f  6e 74 72 6f 6c 73 20 77  | code controls w|
0003ec30  68 61 74 20 68 61 70 70  65 6e 73 20 74 6f 20 61  |hat happens to a|
0003ec40  20 64 79 6e 61 6d 69 63  20 61 72 65 61 20 61 73  | dynamic area as|
0003ec50  20 69 74 20 69 73 20 6d  6f 64 69 66 69 65 64 20  | it is modified |
0003ec60  62 79 20 74 68 65 20 73  79 73 74 65 6d 2e 0a 0a  |by the system...|
0003ec70  23 54 61 62 0a 52 65 61  73 6f 6e 09 4d 65 61 6e  |#Tab.Reason.Mean|
0003ec80  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 3c 50 72 65  |ing.#Line.0.<Pre|
0003ec90  47 72 6f 77 20 2d 20 74  68 65 20 61 72 65 61 20  |Grow - the area |
0003eca0  69 73 20 61 62 6f 75 74  20 74 6f 20 67 72 6f 77  |is about to grow|
0003ecb0  3d 3e 4f 53 5f 44 79 6e  61 6d 69 63 41 72 65 61  |=>OS_DynamicArea|
0003ecc0  48 61 6e 64 6c 65 72 30  3e 0a 31 09 3c 50 6f 73  |Handler0>.1.<Pos|
0003ecd0  74 47 72 6f 77 20 2d 20  74 68 65 20 61 72 65 61  |tGrow - the area|
0003ece0  20 68 61 73 20 6a 75 73  74 20 67 72 6f 77 6e 3d  | has just grown=|
0003ecf0  3e 4f 53 5f 44 79 6e 61  6d 69 63 41 72 65 61 48  |>OS_DynamicAreaH|
0003ed00  61 6e 64 6c 65 72 31 3e  0a 32 09 3c 50 72 65 53  |andler1>.2.<PreS|
0003ed10  68 72 69 6e 6b 20 2d 20  74 68 65 20 61 72 65 61  |hrink - the area|
0003ed20  20 69 73 20 61 62 6f 75  74 20 74 6f 20 73 68 72  | is about to shr|
0003ed30  69 6e 6b 3d 3e 4f 53 5f  44 79 6e 61 6d 69 63 41  |ink=>OS_DynamicA|
0003ed40  72 65 61 48 61 6e 64 6c  65 72 32 3e 0a 33 09 3c  |reaHandler2>.3.<|
0003ed50  50 6f 73 74 53 68 72 69  6e 6b 20 2d 20 74 68 65  |PostShrink - the|
0003ed60  20 61 72 65 61 20 68 61  73 20 6a 75 73 74 20 73  | area has just s|
0003ed70  68 72 75 6e 6b 3d 3e 4f  53 5f 44 79 6e 61 6d 69  |hrunk=>OS_Dynami|
0003ed80  63 41 72 65 61 48 61 6e  64 6c 65 72 33 3e 00 00  |cAreaHandler3>..|
0003ed90  44 41 54 41 3d 04 00 00  44 79 6e 61 6d 69 63 20  |DATA=...Dynamic |
0003eda0  61 72 65 61 20 50 72 65  47 72 6f 77 0a 3d 3e 09  |area PreGrow.=>.|
0003edb0  52 30 09 3d 20 30 0a 09  52 31 09 3d 20 70 6f 69  |R0.= 0..R1.= poi|
0003edc0  6e 74 65 72 20 74 6f 20  70 61 67 65 20 62 6c 6f  |nter to page blo|
0003edd0  63 6b 0a 09 52 32 09 3d  20 6e 75 6d 62 65 72 20  |ck..R2.= number |
0003ede0  6f 66 20 65 6e 74 72 69  65 73 20 69 6e 20 74 68  |of entries in th|
0003edf0  65 20 62 6c 6f 63 6b 0a  09 52 33 09 3d 20 61 6d  |e block..R3.= am|
0003ee00  6f 75 6e 74 20 74 68 65  20 61 72 65 61 20 69 73  |ount the area is|
0003ee10  20 67 72 6f 77 69 6e 67  20 62 79 0a 09 52 34 09  | growing by..R4.|
0003ee20  3d 20 63 75 72 72 65 6e  74 20 73 69 7a 65 20 6f  |= current size o|
0003ee30  66 20 61 72 65 61 2c 20  69 6e 20 62 79 74 65 73  |f area, in bytes|
0003ee40  0a 09 52 35 09 3d 20 70  61 67 65 20 73 69 7a 65  |..R5.= page size|
0003ee50  2c 20 69 6e 20 62 79 74  65 73 0a 09 52 31 32 09  |, in bytes..R12.|
0003ee60  3d 20 77 6f 72 6b 73 70  61 63 65 20 70 6f 69 6e  |= workspace poin|
0003ee70  74 65 72 20 70 61 73 73  65 64 20 74 6f 20 3c 4f  |ter passed to <O|
0003ee80  53 5f 44 79 6e 61 6d 69  63 41 72 65 61 20 30 3d  |S_DynamicArea 0=|
0003ee90  3e 4f 53 5f 44 79 6e 61  6d 69 63 41 72 65 61 30  |>OS_DynamicArea0|
0003eea0  3e 20 6f 72 20 62 61 73  65 20 6f 66 20 61 72 65  |> or base of are|
0003eeb0  61 2e 0a 0a 3c 3d 09 61  6c 6c 20 70 72 65 73 65  |a...<=.all prese|
0003eec0  72 76 65 64 2c 20 75 6e  6c 65 73 73 20 67 72 6f  |rved, unless gro|
0003eed0  77 20 69 73 20 64 69 73  61 6c 6c 6f 77 65 64 0a  |w is disallowed.|
0003eee0  0a 54 68 69 73 20 68 61  6e 64 6c 65 72 20 69 73  |.This handler is|
0003eef0  20 63 61 6c 6c 65 64 20  77 68 65 6e 20 61 20 63  | called when a c|
0003ef00  61 6c 6c 20 74 6f 20 3c  4f 53 5f 43 68 61 6e 67  |all to <OS_Chang|
0003ef10  65 44 79 6e 61 6d 69 63  41 72 65 61 3e 20 72 65  |eDynamicArea> re|
0003ef20  73 75 6c 74 73 20 69 6e  20 61 6e 20 61 72 65 61  |sults in an area|
0003ef30  20 67 72 6f 77 69 6e 67  2c 20 62 65 66 6f 72 65  | growing, before|
0003ef40  20 61 6e 79 20 70 61 67  65 73 20 61 72 65 20 61  | any pages are a|
0003ef50  63 74 75 61 6c 6c 79 20  6d 6f 76 65 64 2e 20 49  |ctually moved. I|
0003ef60  74 20 69 73 20 69 73 73  75 65 64 20 6a 75 73 74  |t is issued just|
0003ef70  20 62 65 66 6f 72 65 20  74 68 65 20 70 61 67 65  | before the page|
0003ef80  73 20 74 68 65 6d 73 65  6c 76 65 73 20 61 72 65  |s themselves are|
0003ef90  20 61 6c 6c 6f 63 61 74  65 64 20 74 6f 20 74 68  | allocated to th|
0003efa0  65 20 62 6c 6f 63 6b 2e  0a 0a 59 6f 75 20 63 61  |e block...You ca|
0003efb0  6e 20 72 65 71 75 65 73  74 20 74 68 61 74 20 73  |n request that s|
0003efc0  70 65 63 69 66 69 63 20  70 61 67 65 73 20 62 65  |pecific pages be|
0003efd0  20 75 73 65 64 20 66 6f  72 20 67 72 6f 77 69 6e  | used for growin|
0003efe0  67 20 74 68 65 20 61 72  65 61 20 62 79 20 66 69  |g the area by fi|
0003eff0  6c 6c 69 6e 67 20 69 6e  20 74 68 65 69 72 20 70  |lling in their p|
0003f000  61 67 65 20 6e 75 6d 62  65 72 73 20 69 6e 20 74  |age numbers in t|
0003f010  68 65 20 70 61 67 65 20  62 6c 6f 63 6b 2e 20 49  |he page block. I|
0003f020  66 20 79 6f 75 20 64 6f  20 73 6f 2c 20 79 6f 75  |f you do so, you|
0003f030  20 6d 75 73 74 20 73 70  65 63 69 66 79 20 61 6c  | must specify al|
0003f040  6c 20 74 68 65 20 70 61  67 65 73 2e 20 54 68 65  |l the pages. The|
0003f050  20 66 69 72 73 74 20 65  6e 74 72 79 20 69 6e 20  | first entry in |
0003f060  74 68 65 20 70 61 67 65  20 62 6c 6f 63 6b 20 63  |the page block c|
0003f070  6f 72 72 65 73 70 6f 6e  64 73 20 74 6f 20 74 68  |orresponds to th|
0003f080  65 20 6c 6f 77 65 73 74  20 6d 65 6d 6f 72 79 20  |e lowest memory |
0003f090  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 65  |address of the e|
0003f0a0  78 74 65 6e 73 69 6f 6e  2c 20 61 6e 64 20 74 68  |xtension, and th|
0003f0b0  65 20 6c 61 73 74 20 65  6e 74 72 79 20 69 6e 20  |e last entry in |
0003f0c0  74 68 65 20 70 61 67 65  20 62 6c 6f 63 6b 20 74  |the page block t|
0003f0d0  68 65 20 68 69 67 68 65  73 74 20 6d 65 6d 6f 72  |he highest memor|
0003f0e0  79 20 61 64 64 72 65 73  73 2e 0a 0a 59 6f 75 20  |y address...You |
0003f0f0  63 61 6e 20 70 72 65 76  65 6e 74 20 74 68 65 20  |can prevent the |
0003f100  61 72 65 61 20 63 68 61  6e 67 69 6e 67 20 73 69  |area changing si|
0003f110  7a 65 20 62 79 20 72 65  74 75 72 6e 69 6e 67 20  |ze by returning |
0003f120  61 6e 20 65 72 72 6f 72  2e 20 52 30 20 73 68 6f  |an error. R0 sho|
0003f130  75 6c 64 20 70 6f 69 6e  74 20 74 6f 20 61 20 73  |uld point to a s|
0003f140  74 61 6e 64 61 72 64 20  3c 65 72 72 6f 72 20 62  |tandard <error b|
0003f150  6c 6f 63 6b 3d 3e 73 77  69 5f 65 72 72 6f 72 62  |lock=>swi_errorb|
0003f160  6c 6f 63 6b 3e 2c 20 6f  72 20 62 65 20 73 65 74  |lock>, or be set|
0003f170  20 74 6f 20 7a 65 72 6f  20 66 6f 72 20 61 20 67  | to zero for a g|
0003f180  65 6e 65 72 69 63 20 65  72 72 6f 72 20 6d 65 73  |eneric error mes|
0003f190  73 61 67 65 20 74 6f 20  62 65 20 75 73 65 64 2e  |sage to be used.|
0003f1a0  20 59 6f 75 20 73 68 6f  75 6c 64 20 74 68 65 6e  | You should then|
0003f1b0  20 72 65 74 75 72 6e 20  77 69 74 68 20 74 68 65  | return with the|
0003f1c0  20 56 20 66 6c 61 67 20  73 65 74 2e 0a 00 00 00  | V flag set.....|
0003f1d0  44 41 54 41 88 02 00 00  44 79 6e 61 6d 69 63 20  |DATA....Dynamic |
0003f1e0  61 72 65 61 20 50 6f 73  74 47 72 6f 77 0a 3d 3e  |area PostGrow.=>|
0003f1f0  09 52 30 09 3d 09 31 0a  09 52 31 09 3d 09 70 6f  |.R0.=.1..R1.=.po|
0003f200  69 6e 74 65 72 20 74 6f  20 70 61 67 65 20 62 6c  |inter to page bl|
0003f210  6f 63 6b 0a 09 52 32 09  3d 09 6e 75 6d 62 65 72  |ock..R2.=.number|
0003f220  20 6f 66 20 65 6e 74 72  69 65 73 20 69 6e 20 74  | of entries in t|
0003f230  68 65 20 62 6c 6f 63 6b  0a 09 52 33 09 3d 09 61  |he block..R3.=.a|
0003f240  6d 6f 75 6e 74 20 74 68  65 20 61 72 65 61 20 67  |mount the area g|
0003f250  72 65 77 20 62 79 0a 09  52 34 09 3d 09 6e 65 77  |rew by..R4.=.new|
0003f260  20 73 69 7a 65 20 6f 66  20 61 72 65 61 2c 20 69  | size of area, i|
0003f270  6e 20 62 79 74 65 73 0a  09 52 35 09 3d 09 70 61  |n bytes..R5.=.pa|
0003f280  67 65 20 73 69 7a 65 2c  20 69 6e 20 62 79 74 65  |ge size, in byte|
0003f290  73 0a 09 52 31 32 09 3d  09 77 6f 72 6b 73 70 61  |s..R12.=.workspa|
0003f2a0  63 65 20 70 6f 69 6e 74  65 72 20 70 61 73 73 65  |ce pointer passe|
0003f2b0  64 20 74 6f 20 3c 4f 53  5f 44 79 6e 61 6d 69 63  |d to <OS_Dynamic|
0003f2c0  41 72 65 61 20 30 3d 3e  4f 53 5f 44 79 6e 61 6d  |Area 0=>OS_Dynam|
0003f2d0  69 63 41 72 65 61 30 3e  20 6f 72 20 62 61 73 65  |icArea0> or base|
0003f2e0  20 6f 66 20 61 72 65 61  2e 0a 0a 3c 3d 09 61 6c  | of area...<=.al|
0003f2f0  6c 20 70 72 65 73 65 72  76 65 64 2c 20 75 6e 6c  |l preserved, unl|
0003f300  65 73 73 20 67 72 6f 77  20 69 73 20 64 69 73 61  |ess grow is disa|
0003f310  6c 6c 6f 77 65 64 0a 0a  54 68 69 73 20 72 65 61  |llowed..This rea|
0003f320  73 6f 6e 20 63 6f 64 65  20 69 73 20 69 73 73 75  |son code is issu|
0003f330  65 64 20 77 68 65 6e 20  61 20 63 61 6c 6c 20 74  |ed when a call t|
0003f340  6f 20 3c 4f 53 5f 43 68  61 6e 67 65 44 79 6e 61  |o <OS_ChangeDyna|
0003f350  6d 69 63 41 72 65 61 3e  20 72 65 73 75 6c 74 73  |micArea> results|
0003f360  20 69 6e 20 61 6e 20 61  72 65 61 20 67 72 6f 77  | in an area grow|
0003f370  69 6e 67 2c 20 69 74 20  69 73 20 63 61 6c 6c 65  |ing, it is calle|
0003f380  64 20 61 66 74 65 72 20  74 68 65 20 3c 50 72 65  |d after the <Pre|
0003f390  47 72 6f 77 3d 3e 4f 53  5f 44 79 6e 61 6d 69 63  |Grow=>OS_Dynamic|
0003f3a0  41 72 65 61 48 61 6e 64  6c 65 72 31 3e 20 72 65  |AreaHandler1> re|
0003f3b0  61 73 6f 6e 20 63 6f 64  65 20 68 61 73 20 62 65  |ason code has be|
0003f3c0  65 6e 20 75 73 65 64 20  73 75 63 63 65 73 73 66  |en used successf|
0003f3d0  75 6c 6c 79 20 61 6e 64  20 74 68 65 20 6d 65 6d  |ully and the mem|
0003f3e0  6f 72 79 20 70 61 67 65  73 20 68 61 76 65 20 62  |ory pages have b|
0003f3f0  65 65 6e 20 6d 6f 76 65  64 2e 20 20 49 74 20 70  |een moved.  It p|
0003f400  72 6f 76 69 64 65 73 20  74 68 65 20 68 61 6e 64  |rovides the hand|
0003f410  6c 65 72 20 77 69 74 68  20 61 20 6c 69 73 74 20  |ler with a list |
0003f420  6f 66 20 77 68 69 63 68  20 70 68 79 73 69 63 61  |of which physica|
0003f430  6c 20 70 61 67 65 73 20  68 61 76 65 20 62 65 65  |l pages have bee|
0003f440  6e 20 6d 6f 76 65 64 20  69 6e 74 6f 20 74 68 65  |n moved into the|
0003f450  20 61 72 65 61 2e 20 0a  44 41 54 41 6b 03 00 00  | area. .DATAk...|
0003f460  44 79 6e 61 6d 69 63 20  61 72 65 61 20 50 72 65  |Dynamic area Pre|
0003f470  53 68 72 69 6e 6b 0a 3d  3e 09 52 30 09 3d 20 32  |Shrink.=>.R0.= 2|
0003f480  0a 09 52 33 09 3d 20 61  6d 6f 75 6e 74 20 74 68  |..R3.= amount th|
0003f490  65 20 61 72 65 61 20 69  73 20 73 68 72 69 6e 6b  |e area is shrink|
0003f4a0  69 6e 67 20 62 79 0a 09  52 34 09 3d 20 6e 65 77  |ing by..R4.= new|
0003f4b0  20 73 69 7a 65 20 6f 66  20 61 72 65 61 2c 20 69  | size of area, i|
0003f4c0  6e 20 62 79 74 65 73 0a  09 52 35 09 3d 20 70 61  |n bytes..R5.= pa|
0003f4d0  67 65 20 73 69 7a 65 2c  20 69 6e 20 62 79 74 65  |ge size, in byte|
0003f4e0  73 0a 09 52 31 32 09 3d  20 77 6f 72 6b 73 70 61  |s..R12.= workspa|
0003f4f0  63 65 20 70 6f 69 6e 74  65 72 20 70 61 73 73 65  |ce pointer passe|
0003f500  64 20 74 6f 20 3c 4f 53  5f 44 79 6e 61 6d 69 63  |d to <OS_Dynamic|
0003f510  41 72 65 61 20 30 3d 3e  4f 53 5f 44 79 6e 61 6d  |Area 0=>OS_Dynam|
0003f520  69 63 41 72 65 61 30 3e  20 6f 72 20 62 61 73 65  |icArea0> or base|
0003f530  20 6f 66 20 61 72 65 61  2e 0a 0a 3c 3d 09 52 33  | of area...<=.R3|
0003f540  09 3d 20 61 6d 6f 75 6e  74 20 61 72 65 61 20 63  |.= amount area c|
0003f550  61 6e 20 73 68 72 69 6e  6b 20 62 79 0a 09 61 6c  |an shrink by..al|
0003f560  6c 20 6f 74 68 65 72 73  20 70 72 65 73 65 72 76  |l others preserv|
0003f570  65 64 2c 20 75 6e 6c 65  73 73 20 67 72 6f 77 20  |ed, unless grow |
0003f580  69 73 20 64 69 73 61 6c  6c 6f 77 65 64 0a 0a 54  |is disallowed..T|
0003f590  68 69 73 20 72 65 61 73  6f 6e 20 63 6f 64 65 20  |his reason code |
0003f5a0  69 73 20 69 73 73 75 65  64 20 77 68 65 6e 20 61  |is issued when a|
0003f5b0  20 63 61 6c 6c 20 74 6f  20 3c 4f 53 5f 43 68 61  | call to <OS_Cha|
0003f5c0  6e 67 65 44 79 6e 61 6d  69 63 41 72 65 61 3e 20  |ngeDynamicArea> |
0003f5d0  72 65 73 75 6c 74 73 20  69 6e 20 61 6e 20 61 72  |results in an ar|
0003f5e0  65 61 20 73 68 72 69 6e  6b 69 6e 67 2c 20 62 65  |ea shrinking, be|
0003f5f0  66 6f 72 65 20 61 6e 79  20 70 61 67 65 73 20 61  |fore any pages a|
0003f600  72 65 20 6d 6f 76 65 64  2e 20 59 6f 75 20 63 61  |re moved. You ca|
0003f610  6e 20 6c 69 6d 69 74 20  74 68 65 20 61 6d 6f 75  |n limit the amou|
0003f620  6e 74 20 6f 66 20 6d 65  6d 6f 72 79 20 6d 6f 76  |nt of memory mov|
0003f630  65 64 20 6f 75 74 20 6f  66 20 74 68 65 20 61 72  |ed out of the ar|
0003f640  65 61 2e 20 49 66 20 74  68 65 20 70 65 72 6d 69  |ea. If the permi|
0003f650  74 74 65 64 20 73 6b 72  69 6e 6b 61 67 65 20 79  |tted skrinkage y|
0003f660  6f 75 20 72 65 74 75 72  6e 20 69 73 20 61 20 6e  |ou return is a n|
0003f670  6f 6e 2d 70 61 67 65 20  6d 75 6c 74 69 70 6c 65  |on-page multiple|
0003f680  2c 20 69 74 20 77 69 6c  6c 20 62 65 20 72 6f 75  |, it will be rou|
0003f690  6e 64 65 64 20 64 6f 77  6e 20 74 6f 20 61 20 70  |nded down to a p|
0003f6a0  61 67 65 20 6d 75 6c 74  69 70 6c 65 2e 0a 09 0a  |age multiple....|
0003f6b0  59 6f 75 20 63 61 6e 20  70 72 65 76 65 6e 74 20  |You can prevent |
0003f6c0  74 68 65 20 61 72 65 61  20 63 68 61 6e 67 69 6e  |the area changin|
0003f6d0  67 20 73 69 7a 65 20 62  79 20 72 65 74 75 72 6e  |g size by return|
0003f6e0  69 6e 67 20 61 6e 64 20  65 72 72 6f 72 2e 20 52  |ing and error. R|
0003f6f0  30 20 73 68 6f 75 6c 64  20 70 6f 69 6e 74 20 74  |0 should point t|
0003f700  6f 20 61 20 6e 75 6c 6c  20 74 65 72 6d 69 6e 61  |o a null termina|
0003f710  74 65 64 20 65 72 72 6f  72 20 6d 65 73 73 61 67  |ted error messag|
0003f720  65 2c 20 6f 72 20 62 65  20 73 65 74 20 74 6f 20  |e, or be set to |
0003f730  7a 65 72 6f 20 66 6f 72  20 61 20 67 65 6e 65 72  |zero for a gener|
0003f740  69 63 20 65 72 72 6f 72  20 6d 65 73 73 61 67 65  |ic error message|
0003f750  20 74 6f 20 62 65 20 75  73 65 64 2e 20 52 33 20  | to be used. R3 |
0003f760  73 68 6f 75 6c 64 20 62  65 20 7a 65 72 6f 2c 20  |should be zero, |
0003f770  74 6f 20 73 68 6f 77 20  74 68 61 74 20 6e 6f 20  |to show that no |
0003f780  73 68 72 69 6e 6b 61 67  65 20 69 73 20 70 6f 73  |shrinkage is pos|
0003f790  73 69 62 6c 65 2e 20 59  6f 75 20 73 68 6f 75 6c  |sible. You shoul|
0003f7a0  64 20 74 68 65 6e 20 72  65 74 75 72 6e 20 77 69  |d then return wi|
0003f7b0  74 68 20 74 68 65 20 56  20 66 6c 61 67 20 73 65  |th the V flag se|
0003f7c0  74 2e 0a 00 44 41 54 41  f6 01 00 00 44 79 6e 61  |t...DATA....Dyna|
0003f7d0  6d 69 63 20 61 72 65 61  20 50 72 65 53 68 72 69  |mic area PreShri|
0003f7e0  6e 6b 0a 3d 3e 09 52 30  09 3d 20 33 0a 09 52 33  |nk.=>.R0.= 3..R3|
0003f7f0  09 3d 20 61 6d 6f 75 6e  74 20 74 68 65 20 61 72  |.= amount the ar|
0003f800  65 61 20 73 68 72 75 6e  6b 20 62 79 0a 09 52 34  |ea shrunk by..R4|
0003f810  09 3d 20 6e 65 77 20 73  69 7a 65 20 6f 66 20 61  |.= new size of a|
0003f820  72 65 61 2c 20 69 6e 20  62 79 74 65 73 0a 09 52  |rea, in bytes..R|
0003f830  35 09 3d 20 70 61 67 65  20 73 69 7a 65 2c 20 69  |5.= page size, i|
0003f840  6e 20 62 79 74 65 73 0a  09 52 31 32 09 3d 20 77  |n bytes..R12.= w|
0003f850  6f 72 6b 73 70 61 63 65  20 70 6f 69 6e 74 65 72  |orkspace pointer|
0003f860  20 70 61 73 73 65 64 20  74 6f 20 3c 4f 53 5f 44  | passed to <OS_D|
0003f870  79 6e 61 6d 69 63 41 72  65 61 20 30 3d 3e 4f 53  |ynamicArea 0=>OS|
0003f880  5f 44 79 6e 61 6d 69 63  41 72 65 61 30 3e 20 6f  |_DynamicArea0> o|
0003f890  72 20 62 61 73 65 20 6f  66 20 61 72 65 61 2e 0a  |r base of area..|
0003f8a0  0a 3c 3d 09 61 6c 6c 20  70 72 65 73 65 72 76 65  |.<=.all preserve|
0003f8b0  64 2c 20 75 6e 6c 65 73  73 20 67 72 6f 77 20 69  |d, unless grow i|
0003f8c0  73 20 64 69 73 61 6c 6c  6f 77 65 64 0a 0a 54 68  |s disallowed..Th|
0003f8d0  69 73 20 72 65 61 73 6f  6e 20 63 6f 64 65 20 69  |is reason code i|
0003f8e0  73 20 69 73 73 75 65 64  20 77 68 65 6e 20 61 20  |s issued when a |
0003f8f0  63 61 6c 6c 20 74 6f 20  4f 53 5f 43 68 61 6e 67  |call to OS_Chang|
0003f900  65 44 79 6e 61 6d 69 63  41 72 65 61 20 72 65 73  |eDynamicArea res|
0003f910  75 6c 74 73 20 69 6e 20  61 6e 20 61 72 65 61 20  |ults in an area |
0003f920  73 68 72 69 6e 6b 69 6e  67 2e 20 20 49 74 20 69  |shrinking.  It i|
0003f930  73 20 63 61 6c 6c 65 64  20 61 66 74 65 72 20 74  |s called after t|
0003f940  68 65 20 3c 50 72 65 53  68 72 69 6e 6b 3d 3e 4f  |he <PreShrink=>O|
0003f950  53 5f 44 79 6e 61 6d 69  63 41 72 65 61 48 61 6e  |S_DynamicAreaHan|
0003f960  64 6c 65 72 32 3e 20 72  65 61 73 6f 6e 20 63 6f  |dler2> reason co|
0003f970  64 65 20 68 61 73 20 62  65 65 6e 20 69 73 73 75  |de has been issu|
0003f980  65 64 20 73 75 63 63 65  73 73 66 75 6c 6c 79 20  |ed successfully |
0003f990  65 76 65 6e 20 69 66 20  74 68 65 20 6d 65 6d 6f  |even if the memo|
0003f9a0  72 79 20 70 61 67 65 73  20 63 61 6e 6e 6f 74 20  |ry pages cannot |
0003f9b0  62 65 20 6d 6f 76 65 64  2e 0a 00 00 44 41 54 41  |be moved....DATA|
0003f9c0  c6 02 00 00 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |....OS_DynamicAr|
0003f9d0  65 61 20 31 20 20 28 26  36 36 29 0a 23 50 61 72  |ea 1  (&66).#Par|
0003f9e0  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
0003f9f0  31 0a 09 52 31 20 3d 09  61 72 65 61 20 6e 75 6d  |1..R1 =.area num|
0003fa00  62 65 72 0a 09 0a 5c 3c  3d 09 61 6c 6c 20 70 72  |ber...\<=.all pr|
0003fa10  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 63 61  |eserved..This ca|
0003fa20  6c 6c 20 72 65 6d 6f 76  65 73 20 61 20 70 72 65  |ll removes a pre|
0003fa30  76 69 6f 75 73 6c 79 20  63 72 65 61 74 65 64 20  |viously created |
0003fa40  64 79 6e 61 6d 69 63 20  61 72 65 61 2e 20 42 65  |dynamic area. Be|
0003fa50  66 6f 72 65 20 74 68 65  20 61 72 65 61 20 69 73  |fore the area is|
0003fa60  20 72 65 6d 6f 76 65 64  2c 20 52 49 53 43 20 4f  | removed, RISC O|
0003fa70  53 20 61 74 74 65 6d 70  74 73 20 74 6f 20 73 68  |S attempts to sh|
0003fa80  72 69 6e 6b 20 69 74 20  74 6f 20 7a 65 72 6f 20  |rink it to zero |
0003fa90  73 69 7a 65 2e 20 20 54  68 69 73 20 69 73 20 64  |size.  This is d|
0003faa0  6f 6e 65 20 75 73 69 6e  67 20 3c 4f 53 5f 43 68  |one using <OS_Ch|
0003fab0  61 6e 67 65 44 79 6e 61  6d 69 63 41 72 65 61 3e  |angeDynamicArea>|
0003fac0  2e 20 0a 0a 49 66 20 4f  53 5f 43 68 61 6e 67 65  |. ..If OS_Change|
0003fad0  44 79 6e 61 6d 69 63 41  72 65 61 20 72 65 74 75  |DynamicArea retu|
0003fae0  72 6e 73 20 61 6e 20 65  72 72 6f 72 2c 20 74 68  |rns an error, th|
0003faf0  65 6e 20 74 68 65 20 61  72 65 61 20 77 69 6c 6c  |en the area will|
0003fb00  20 62 65 20 67 72 6f 77  6e 20 62 61 63 6b 20 74  | be grown back t|
0003fb10  6f 20 69 74 73 20 6f 72  69 67 69 6e 61 6c 20 73  |o its original s|
0003fb20  69 7a 65 20 75 73 69 6e  67 20 4f 53 5f 43 68 61  |ize using OS_Cha|
0003fb30  6e 67 65 44 79 6e 61 6d  69 63 41 72 65 61 2c 20  |ngeDynamicArea, |
0003fb40  61 6e 64 20 74 68 69 73  20 63 61 6c 6c 20 77 69  |and this call wi|
0003fb50  6c 6c 20 72 65 74 75 72  6e 20 77 69 74 68 20 61  |ll return with a|
0003fb60  6e 20 65 72 72 6f 72 2e  0a 49 66 20 3c 4f 53 5f  |n error..If <OS_|
0003fb70  43 68 61 6e 67 65 44 79  6e 61 6d 69 63 41 72 65  |ChangeDynamicAre|
0003fb80  61 3e 20 73 75 63 63 65  73 73 66 75 6c 6c 79 20  |a> successfully |
0003fb90  72 65 64 75 63 65 64 20  74 68 65 20 61 72 65 61  |reduced the area|
0003fba0  20 74 6f 20 7a 65 72 6f  20 73 69 7a 65 2c 20 74  | to zero size, t|
0003fbb0  68 65 6e 20 69 74 20 77  69 6c 6c 20 62 65 20 72  |hen it will be r|
0003fbc0  65 6d 6f 76 65 64 2e 0a  0a 4f 6e 63 65 20 74 68  |emoved...Once th|
0003fbd0  65 20 61 72 65 61 20 68  61 73 20 62 65 65 6e 20  |e area has been |
0003fbe0  72 65 6d 6f 76 65 64 20  53 65 72 76 69 63 65 5f  |removed Service_|
0003fbf0  44 79 6e 61 6d 69 63 41  72 65 61 52 65 6d 6f 76  |DynamicAreaRemov|
0003fc00  65 20 69 73 20 69 73 73  75 65 64 20 74 6f 20 69  |e is issued to i|
0003fc10  6e 66 6f 72 6d 20 74 68  65 20 72 65 73 74 20 6f  |nform the rest o|
0003fc20  66 20 74 68 65 20 73 79  73 74 65 6d 20 61 62 6f  |f the system abo|
0003fc30  75 74 20 74 68 69 73 20  63 68 61 6e 67 65 2e 0a  |ut this change..|
0003fc40  0a 41 6e 20 65 72 72 6f  72 20 69 73 20 72 65 74  |.An error is ret|
0003fc50  75 72 6e 65 64 20 69 66  20 74 68 65 20 61 72 65  |urned if the are|
0003fc60  61 20 77 61 73 20 6e 6f  74 20 72 65 6d 6f 76 65  |a was not remove|
0003fc70  64 20 66 6f 72 20 61 6e  79 20 72 65 61 73 6f 6e  |d for any reason|
0003fc80  2e 0a 00 00 44 41 54 41  98 02 00 00 4f 53 5f 44  |....DATA....OS_D|
0003fc90  79 6e 61 6d 69 63 41 72  65 61 20 32 20 20 28 26  |ynamicArea 2  (&|
0003fca0  36 36 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |66).#Parent OS_.|
0003fcb0  3d 3e 09 52 30 20 3d 09  32 0a 09 52 31 20 3d 09  |=>.R0 =.2..R1 =.|
0003fcc0  61 72 65 61 20 6e 75 6d  62 65 72 0a 09 0a 5c 3c  |area number...\<|
0003fcd0  3d 09 52 30 2c 20 52 31  20 70 72 65 73 65 72 76  |=.R0, R1 preserv|
0003fce0  65 64 0a 09 52 32 20 3d  09 63 75 72 72 65 6e 74  |ed..R2 =.current|
0003fcf0  20 73 69 7a 65 20 6f 66  20 61 72 65 61 2c 20 69  | size of area, i|
0003fd00  6e 20 62 79 74 65 73 0a  09 52 33 20 3d 09 62 61  |n bytes..R3 =.ba|
0003fd10  73 65 20 6c 6f 67 69 63  61 6c 20 61 64 64 72 65  |se logical addre|
0003fd20  73 73 20 6f 66 20 61 72  65 61 0a 09 52 34 20 3d  |ss of area..R4 =|
0003fd30  09 61 72 65 61 20 66 6c  61 67 73 0a 09 52 35 20  |.area flags..R5 |
0003fd40  3d 09 6d 61 78 69 6d 75  6d 20 73 69 7a 65 20 6f  |=.maximum size o|
0003fd50  66 20 61 72 65 61 2c 20  69 6e 20 62 79 74 65 73  |f area, in bytes|
0003fd60  0a 09 52 36 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R6 =.pointer t|
0003fd70  6f 20 3c 64 79 6e 61 6d  69 63 20 61 72 65 61 20  |o <dynamic area |
0003fd80  68 61 6e 64 6c 65 72 3d  3e 4f 53 5f 44 79 6e 61  |handler=>OS_Dyna|
0003fd90  6d 69 63 41 72 65 61 48  61 6e 64 6c 65 72 3e 2c  |micAreaHandler>,|
0003fda0  20 6f 72 20 30 20 69 66  20 6e 6f 20 72 6f 75 74  | or 0 if no rout|
0003fdb0  69 6e 65 0a 09 52 37 20  3d 09 70 6f 69 6e 74 65  |ine..R7 =.pointe|
0003fdc0  72 20 74 6f 20 77 6f 72  6b 73 70 61 63 65 20 66  |r to workspace f|
0003fdd0  6f 72 20 68 61 6e 64 6c  65 72 0a 09 52 38 20 3d  |or handler..R8 =|
0003fde0  09 70 6f 69 6e 74 65 72  20 74 6f 20 6e 61 6d 65  |.pointer to name|
0003fdf0  20 6f 66 20 61 72 65 61  0a 0a 54 68 69 73 20 63  | of area..This c|
0003fe00  61 6c 6c 20 72 65 74 75  72 6e 73 20 69 6e 66 6f  |all returns info|
0003fe10  72 6d 61 74 69 6f 6e 20  6f 6e 20 61 20 64 79 6e  |rmation on a dyn|
0003fe20  61 6d 69 63 20 61 72 65  61 2e 0a 0a 46 6f 72 20  |amic area...For |
0003fe30  64 6f 75 62 6c 79 2d 6d  61 70 70 65 64 20 61 72  |doubly-mapped ar|
0003fe40  65 61 73 2c 20 52 33 20  6f 6e 20 65 78 69 74 20  |eas, R3 on exit |
0003fe50  66 72 6f 6d 20 74 68 69  73 20 63 61 6c 6c 20 72  |from this call r|
0003fe60  65 74 75 72 6e 73 20 74  68 65 20 61 64 64 72 65  |eturns the addre|
0003fe70  73 73 20 6f 66 20 74 68  65 20 62 6f 75 6e 64 61  |ss of the bounda|
0003fe80  72 79 20 62 65 74 77 65  65 6e 20 74 68 65 20 66  |ry between the f|
0003fe90  69 72 73 74 20 61 6e 64  20 73 65 63 6f 6e 64 20  |irst and second |
0003fea0  63 6f 70 69 65 73 20 6f  66 20 74 68 65 20 61 72  |copies of the ar|
0003feb0  65 61 2c 20 77 68 65 72  65 61 73 20 3c 4f 53 5f  |ea, whereas <OS_|
0003fec0  52 65 61 64 44 79 6e 61  6d 69 63 41 72 65 61 3e  |ReadDynamicArea>|
0003fed0  20 72 65 74 75 72 6e 73  20 74 68 65 20 73 74 61  | returns the sta|
0003fee0  72 74 20 61 64 64 72 65  73 73 20 6f 66 20 74 68  |rt address of th|
0003fef0  65 20 66 69 72 73 74 20  63 6f 70 79 20 28 66 6f  |e first copy (fo|
0003ff00  72 20 62 61 63 6b 77 61  72 64 73 20 63 6f 6d 70  |r backwards comp|
0003ff10  61 74 69 62 69 6c 69 74  79 29 2e 0a 44 41 54 41  |atibility)..DATA|
0003ff20  76 01 00 00 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |v...OS_DynamicAr|
0003ff30  65 61 20 33 20 20 28 26  36 36 29 0a 23 50 61 72  |ea 3  (&66).#Par|
0003ff40  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
0003ff50  33 0a 09 52 31 20 3d 09  61 72 65 61 20 6e 75 6d  |3..R1 =.area num|
0003ff60  62 65 72 2c 20 2d 31 20  74 6f 20 73 74 61 72 74  |ber, -1 to start|
0003ff70  0a 09 0a 5c 3c 3d 09 52  31 20 3d 09 6e 65 78 74  |...\<=.R1 =.next|
0003ff80  20 61 72 65 61 20 6e 75  6d 62 65 72 0a 0a 54 68  | area number..Th|
0003ff90  69 73 20 63 61 6c 6c 20  65 6e 75 6d 65 72 61 74  |is call enumerat|
0003ffa0  65 73 20 64 79 6e 61 6d  69 63 20 61 72 65 61 73  |es dynamic areas|
0003ffb0  2e 20 20 54 68 69 73 20  61 6c 6c 6f 77 73 20 61  |.  This allows a|
0003ffc0  6e 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 74 6f  |n application to|
0003ffd0  20 66 69 6e 64 20 6f 75  74 20 77 68 61 74 20 64  | find out what d|
0003ffe0  79 6e 61 6d 69 63 20 61  72 65 61 73 20 61 72 65  |ynamic areas are|
0003fff0  20 64 65 66 69 6e 65 64  2e 20 2d 31 20 69 73 20  | defined. -1 is |
00040000  70 61 73 73 65 64 20 6f  6e 20 65 6e 74 72 79 20  |passed on entry |
00040010  74 6f 20 73 74 61 72 74  20 74 68 65 20 65 6e 75  |to start the enu|
00040020  6d 65 72 61 74 69 6f 6e  3b 20 74 68 65 20 63 61  |meration; the ca|
00040030  6c 6c 20 69 73 20 74 68  65 6e 20 72 65 70 65 61  |ll is then repea|
00040040  72 20 75 6e 74 69 6c 20  2d 31 20 69 73 20 72 65  |r until -1 is re|
00040050  74 75 72 6e 65 64 20 6f  6e 20 65 78 69 74 2c 20  |turned on exit, |
00040060  77 68 69 63 68 20 69 6e  64 69 63 61 74 65 73 20  |which indicates |
00040070  74 68 65 20 74 68 65 20  65 6e 75 6d 65 72 61 74  |the the enumerat|
00040080  69 6f 6e 20 68 61 73 20  66 69 6e 69 73 68 65 64  |ion has finished|
00040090  2e 0a 00 00 44 41 54 41  c3 01 00 00 4f 53 5f 44  |....DATA....OS_D|
000400a0  79 6e 61 6d 69 63 41 72  65 61 20 34 20 20 28 26  |ynamicArea 4  (&|
000400b0  36 36 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |66).#Parent OS_.|
000400c0  3d 3e 09 52 30 20 3d 09  34 0a 09 52 31 20 3d 09  |=>.R0 =.4..R1 =.|
000400d0  6f 6c 64 20 61 72 65 61  20 6e 75 6d 62 65 72 0a  |old area number.|
000400e0  09 52 32 20 3d 09 6e 65  77 20 61 72 65 61 20 6e  |.R2 =.new area n|
000400f0  75 6d 62 65 72 0a 09 0a  5c 3c 3d 09 61 6c 6c 20  |umber...\<=.all |
00040100  70 72 65 73 65 72 76 65  64 0a 0a 54 68 69 73 20  |preserved..This |
00040110  63 61 6c 6c 20 72 65 6e  75 6d 62 65 72 73 20 64  |call renumbers d|
00040120  79 6e 61 6d 69 63 20 61  72 65 61 73 2e 20 61 6e  |ynamic areas. an|
00040130  64 20 69 73 20 69 6e 74  65 6e 64 65 64 20 66 6f  |d is intended fo|
00040140  72 20 73 79 73 74 65 6d  20 75 73 65 20 6f 6e 6c  |r system use onl|
00040150  79 2e 0a 0a 4f 6e 63 65  20 74 68 65 20 61 72 65  |y...Once the are|
00040160  61 20 68 61 73 20 62 65  65 6e 20 72 65 6e 75 6d  |a has been renum|
00040170  62 65 72 65 64 20 53 65  72 76 69 63 65 5f 44 79  |bered Service_Dy|
00040180  6e 61 6d 69 63 41 72 65  61 52 65 6e 75 6d 62 65  |namicAreaRenumbe|
00040190  72 20 69 73 20 69 73 73  75 65 64 20 74 6f 20 69  |r is issued to i|
000401a0  6e 66 6f 72 6d 20 74 68  65 20 72 65 73 74 20 6f  |nform the rest o|
000401b0  66 20 74 68 65 20 73 79  73 74 65 6d 20 61 62 6f  |f the system abo|
000401c0  75 74 20 74 68 69 73 20  63 68 61 6e 67 65 2e 0a  |ut this change..|
000401d0  0a 41 6e 20 65 72 72 6f  72 20 69 73 20 72 65 74  |.An error is ret|
000401e0  75 72 6e 65 64 20 69 66  20 74 68 65 20 61 72 65  |urned if the are|
000401f0  61 20 73 70 65 63 69 66  69 65 64 20 62 79 20 74  |a specified by t|
00040200  68 65 20 6f 6c 64 20 61  72 65 61 20 6e 75 6d 62  |he old area numb|
00040210  65 72 20 64 6f 65 73 20  6e 6f 74 20 65 78 69 73  |er does not exis|
00040220  74 2c 20 6f 72 20 69 66  20 74 68 65 20 6e 65 77  |t, or if the new|
00040230  20 6e 75 6d 62 65 72 20  63 6c 61 73 68 65 73 20  | number clashes |
00040240  77 69 74 68 20 61 6e 20  65 78 69 73 74 69 6e 67  |with an existing|
00040250  20 61 72 65 61 2e 0a 00  44 41 54 41 75 00 00 00  | area...DATAu...|
00040260  4f 53 5f 41 64 64 54 6f  56 65 63 74 6f 72 20 20  |OS_AddToVector  |
00040270  28 26 34 37 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&47).#Parent OS|
00040280  5f 0a 44 6f 65 73 20 74  68 65 20 73 61 6d 65 20  |_.Does the same |
00040290  61 73 20 3c 4f 53 5f 43  6c 61 69 6d 3e 20 64 6f  |as <OS_Claim> do|
000402a0  65 73 2c 20 62 75 74 20  64 6f 65 73 6e 27 74 20  |es, but doesn't |
000402b0  72 65 6d 6f 76 65 20 74  68 65 20 65 61 72 6c 69  |remove the earli|
000402c0  65 72 20 69 6e 73 74 61  6e 63 65 73 2e 00 00 00  |er instances....|
000402d0  44 41 54 41 2a 02 00 00  4f 53 5f 42 72 65 61 6b  |DATA*...OS_Break|
000402e0  43 74 72 6c 20 20 28 26  31 38 29 0a 23 50 61 72  |Ctrl  (&18).#Par|
000402f0  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
00040300  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 72  |address of the r|
00040310  65 67 69 73 74 65 72 20  73 61 76 65 20 62 6c 6f  |egister save blo|
00040320  63 6b 2c 20 30 20 74 6f  20 72 65 61 64 0a 09 52  |ck, 0 to read..R|
00040330  31 20 3d 09 61 64 64 72  65 73 73 20 6f 66 20 74  |1 =.address of t|
00040340  68 65 20 63 6f 6e 74 72  6f 6c 20 72 6f 75 74 69  |he control routi|
00040350  6e 65 2c 20 30 20 74 6f  20 72 65 61 64 0a 0a 3c  |ne, 0 to read..<|
00040360  3d 09 52 30 20 3d 09 61  64 64 72 65 73 73 20 6f  |=.R0 =.address o|
00040370  66 20 70 72 65 76 69 6f  75 73 20 72 65 67 69 73  |f previous regis|
00040380  74 65 72 20 73 61 76 65  20 62 6c 6f 63 6b 0a 09  |ter save block..|
00040390  52 31 20 3d 09 61 64 64  72 65 73 73 20 6f 66 20  |R1 =.address of |
000403a0  70 72 65 76 69 6f 75 73  20 63 6f 6e 74 72 6f 6c  |previous control|
000403b0  20 72 6f 75 74 69 6e 65  0a 09 56 20 69 73 20 61  | routine..V is a|
000403c0  6c 77 61 79 73 20 63 6c  65 61 72 0a 0a 54 68 69  |lways clear..Thi|
000403d0  73 20 73 65 74 73 20 75  70 20 74 68 65 20 61 64  |s sets up the ad|
000403e0  64 72 65 73 73 20 6f 66  20 74 68 65 20 42 72 65  |dress of the Bre|
000403f0  61 6b 50 6f 69 6e 74 20  68 61 6e 64 6c 65 72 20  |akPoint handler |
00040400  61 6e 64 20 74 68 65 20  72 65 67 69 73 74 65 72  |and the register|
00040410  20 73 61 76 65 20 62 6c  6f 63 6b 2c 20 7a 65 72  | save block, zer|
00040420  6f 20 66 6f 72 20 65 69  74 68 65 72 20 76 61 6c  |o for either val|
00040430  75 65 20 6d 65 61 6e 69  6e 67 20 6e 6f 20 63 68  |ue meaning no ch|
00040440  61 6e 67 65 20 2d 20 68  65 6e 63 65 20 79 6f 75  |ange - hence you|
00040450  20 63 61 6e 20 72 65 61  64 20 74 68 65 20 63 75  | can read the cu|
00040460  72 72 65 6e 74 20 76 61  6c 75 65 2e 20 54 68 69  |rrent value. Thi|
00040470  73 20 63 61 6c 6c 20 69  73 20 6f 62 73 6f 6c 65  |s call is obsole|
00040480  74 65 2c 20 3c 4f 53 5f  43 68 61 6e 67 65 45 6e  |te, <OS_ChangeEn|
00040490  76 69 72 6f 6e 6d 65 6e  74 3e 20 70 72 6f 76 69  |vironment> provi|
000404a0  64 65 73 20 74 68 65 20  73 61 6d 65 2c 20 69 6e  |des the same, in|
000404b0  20 66 61 63 74 20 4f 53  5f 42 72 65 61 6b 43 74  | fact OS_BreakCt|
000404c0  72 6c 20 63 61 6c 6c 73  20 74 68 69 73 20 61 6e  |rl calls this an|
000404d0  64 20 73 68 6f 75 6c 64  20 74 68 65 72 65 66 6f  |d should therefo|
000404e0  72 65 20 62 65 20 75 73  65 64 20 69 6e 20 70 72  |re be used in pr|
000404f0  65 66 65 72 65 6e 63 65  2e 0a 00 00 44 41 54 41  |eference....DATA|
00040500  76 01 00 00 4f 53 5f 42  72 65 61 6b 50 74 20 28  |v...OS_BreakPt (|
00040510  26 31 37 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&17).#Parent OS_|
00040520  0a 57 68 65 6e 20 74 68  69 73 20 69 73 20 65 78  |.When this is ex|
00040530  65 63 75 74 65 64 2c 20  61 6c 6c 20 75 73 65 72  |ecuted, all user|
00040540  20 6d 6f 64 65 20 72 65  67 69 73 74 65 72 73 20  | mode registers |
00040550  61 72 65 20 73 61 76 65  64 20 69 6e 74 6f 20 61  |are saved into a|
00040560  20 62 6c 6f 63 6b 20 61  6e 64 20 74 68 65 20 42  | block and the B|
00040570  72 65 61 6b 50 6f 69 6e  74 20 68 61 6e 64 6c 65  |reakPoint handle|
00040580  72 20 69 73 20 63 61 6c  6c 65 64 2e 20 54 68 65  |r is called. The|
00040590  20 73 61 76 65 64 20 72  65 67 69 73 74 65 72 73  | saved registers|
000405a0  20 61 72 65 20 6f 6e 6c  79 20 67 75 61 72 61 6e  | are only guaran|
000405b0  74 65 65 64 20 74 6f 20  62 65 20 63 6f 72 72 65  |teed to be corre|
000405c0  63 74 20 66 6f 72 20 75  73 65 72 20 6d 6f 64 65  |ct for user mode|
000405d0  2e 20 54 68 65 20 64 65  66 61 75 6c 74 20 68 61  |. The default ha|
000405e0  6e 64 6c 65 72 20 64 69  73 70 6c 61 79 73 20 74  |ndler displays t|
000405f0  68 65 20 6d 65 73 73 61  67 65 20 27 42 72 65 61  |he message 'Brea|
00040600  6b 20 70 6f 69 6e 74 20  61 74 20 26 78 78 78 78  |k point at &xxxx|
00040610  78 27 20 61 6e 64 20 63  61 6c 6c 73 20 3c 4f 53  |x' and calls <OS|
00040620  5f 45 78 69 74 3e 2e 20  54 68 69 73 20 53 57 49  |_Exit>. This SWI|
00040630  20 77 6f 75 6c 64 20 62  65 20 70 6c 61 63 65 64  | would be placed|
00040640  20 69 6e 20 63 6f 64 65  20 62 79 20 74 68 65 20  | in code by the |
00040650  64 65 62 75 67 67 65 72  20 61 74 20 72 65 71 75  |debugger at requ|
00040660  69 72 65 64 20 62 72 65  61 6b 70 6f 69 6e 74 73  |ired breakpoints|
00040670  2e 0a 00 00 44 41 54 41  b0 01 00 00 4f 53 5f 43  |....DATA....OS_C|
00040680  61 6c 6c 41 56 65 63 74  6f 72 20 20 28 26 33 34  |allAVector  (&34|
00040690  29 0a 3d 3e 09 52 30 2d  52 38 20 3d 09 76 65 63  |).=>.R0-R8 =.vec|
000406a0  74 6f 72 20 72 6f 75 74  69 6e 65 20 70 61 72 61  |tor routine para|
000406b0  6d 65 74 65 72 73 0a 09  52 39 20 3d 09 3c 76 65  |meters..R9 =.<ve|
000406c0  63 74 6f 72 20 6e 75 6d  62 65 72 3d 3e 6f 73 5f  |ctor number=>os_|
000406d0  76 65 63 74 6f 72 73 3e  0a 09 56 20 61 6e 64 20  |vectors>..V and |
000406e0  43 20 66 6c 61 67 20 61  72 65 20 70 61 73 73 65  |C flag are passe|
000406f0  64 20 6f 6e 20 74 6f 20  74 68 65 20 76 65 63 74  |d on to the vect|
00040700  6f 72 0a 0a 3c 3d 09 64  65 70 65 6e 64 65 6e 74  |or..<=.dependent|
00040710  20 6f 6e 20 76 65 63 74  6f 72 20 63 61 6c 6c 65  | on vector calle|
00040720  64 0a 0a 54 68 69 73 20  63 61 6c 6c 73 20 74 68  |d..This calls th|
00040730  65 20 76 65 63 74 6f 72  20 67 69 76 65 6e 20 69  |e vector given i|
00040740  6e 20 52 39 2e 20 54 68  69 73 20 69 73 20 75 73  |n R9. This is us|
00040750  65 64 20 66 6f 72 20 63  61 6c 6c 69 6e 67 20 76  |ed for calling v|
00040760  65 63 74 6f 72 65 64 20  72 6f 75 74 69 6e 65 73  |ectored routines|
00040770  20 77 68 69 63 68 20 64  6f 6e 27 74 20 68 61 76  | which don't hav|
00040780  65 20 61 6e 79 20 6f 74  68 65 72 20 65 6e 74 72  |e any other entr|
00040790  79 20 70 6f 69 6e 74 20  73 75 63 68 20 61 73 20  |y point such as |
000407a0  73 6f 6d 65 20 63 61 6c  6c 73 20 74 6f 20 52 65  |some calls to Re|
000407b0  6d 56 20 6f 72 20 43 6e  70 56 2e 20 44 6f 6e 27  |mV or CnpV. Don'|
000407c0  74 20 75 73 65 20 74 68  69 73 20 74 6f 20 63 61  |t use this to ca|
000407d0  6c 6c 20 42 79 74 65 56  20 6f 72 20 73 6f 2c 20  |ll ByteV or so, |
000407e0  61 73 20 74 68 65 20 76  65 63 74 6f 72 20 68 61  |as the vector ha|
000407f0  6e 64 6c 65 72 20 65 78  70 65 63 74 73 20 65 6e  |ndler expects en|
00040800  74 72 79 20 63 6f 6e 64  69 74 69 6f 6e 73 20 79  |try conditions y|
00040810  6f 75 20 6d 61 79 20 6e  6f 74 20 70 72 6f 76 69  |ou may not provi|
00040820  64 65 2e 0a 44 41 54 41  4e 02 00 00 4f 53 5f 43  |de..DATAN...OS_C|
00040830  61 6c 6c 42 61 63 6b 20  20 28 26 31 35 29 0a 23  |allBack  (&15).#|
00040840  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
00040850  20 3d 09 61 64 64 72 65  73 73 20 6f 66 20 74 68  | =.address of th|
00040860  65 20 72 65 67 69 73 74  65 72 20 73 61 76 65 20  |e register save |
00040870  62 6c 6f 63 6b 2c 20 30  20 74 6f 20 72 65 61 64  |block, 0 to read|
00040880  0a 09 52 31 20 3d 09 61  64 64 72 65 73 73 20 6f  |..R1 =.address o|
00040890  66 20 74 68 65 20 63 61  6c 6c 62 61 63 6b 20 68  |f the callback h|
000408a0  61 6e 64 6c 65 72 2c 20  30 20 74 6f 20 72 65 61  |andler, 0 to rea|
000408b0  64 0a 0a 3c 3d 09 52 30  20 3d 09 61 64 64 72 65  |d..<=.R0 =.addre|
000408c0  73 73 20 6f 66 20 70 72  65 76 69 6f 75 73 20 72  |ss of previous r|
000408d0  65 67 69 73 74 65 72 20  73 61 76 65 20 62 6c 6f  |egister save blo|
000408e0  63 6b 0a 09 52 31 20 3d  09 61 64 64 72 65 73 73  |ck..R1 =.address|
000408f0  20 6f 66 20 70 72 65 76  69 6f 75 73 20 63 61 6c  | of previous cal|
00040900  6c 62 61 63 6b 20 68 61  6e 64 6c 65 72 0a 0a 54  |lback handler..T|
00040910  68 69 73 20 73 65 74 73  20 75 70 20 74 68 65 20  |his sets up the |
00040920  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 43  |address of the C|
00040930  61 6c 6c 42 61 63 6b 20  68 61 6e 64 6c 65 72 20  |allBack handler |
00040940  61 6e 64 20 74 68 65 20  72 65 67 69 73 74 65 72  |and the register|
00040950  20 73 61 76 65 20 62 6c  6f 63 6b 2c 20 7a 65 72  | save block, zer|
00040960  6f 20 66 6f 72 20 65 69  74 68 65 72 20 76 61 6c  |o for either val|
00040970  75 65 20 6d 65 61 6e 69  6e 67 20 6e 6f 20 63 68  |ue meaning no ch|
00040980  61 6e 67 65 20 2d 20 68  65 6e 63 65 20 79 6f 75  |ange - hence you|
00040990  20 63 61 6e 20 72 65 61  64 20 74 68 65 20 63 75  | can read the cu|
000409a0  72 72 65 6e 74 20 76 61  6c 75 65 2e 20 54 68 69  |rrent value. Thi|
000409b0  73 20 63 61 6c 6c 20 69  73 20 6f 62 73 6f 6c 65  |s call is obsole|
000409c0  74 65 2c 20 3c 4f 53 5f  43 68 61 6e 67 65 45 6e  |te, <OS_ChangeEn|
000409d0  76 69 72 6f 6e 6d 65 6e  74 3e 20 70 72 6f 76 69  |vironment> provi|
000409e0  64 65 73 20 74 68 65 20  73 61 6d 65 2c 20 69 6e  |des the same, in|
000409f0  20 66 61 63 74 20 4f 53  5f 43 61 6c 6c 42 61 63  | fact OS_CallBac|
00040a00  6b 20 63 61 6c 6c 73 20  74 68 69 73 20 61 6e 64  |k calls this and|
00040a10  20 73 68 6f 75 6c 64 20  74 68 65 72 65 66 6f 72  | should therefor|
00040a20  65 20 62 65 20 75 73 65  64 20 69 6e 20 70 72 65  |e be used in pre|
00040a30  66 65 72 65 6e 63 65 2e  20 46 6f 72 20 69 6e 66  |ference. For inf|
00040a40  6f 72 6d 61 74 69 6f 6e  73 20 6f 6e 20 63 61 6c  |ormations on cal|
00040a50  6c 62 61 63 6b 73 20 72  65 66 65 72 20 74 6f 20  |lbacks refer to |
00040a60  3c 4f 53 5f 41 64 64 43  61 6c 6c 42 61 63 6b 3e  |<OS_AddCallBack>|
00040a70  2e 0a 00 00 44 41 54 41  e5 02 00 00 4f 53 5f 43  |....DATA....OS_C|
00040a80  68 61 6e 67 65 64 42 6f  78 20 20 28 26 35 41 29  |hangedBox  (&5A)|
00040a90  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
00040aa0  52 30 20 3d 09 30 09 64  69 73 61 62 6c 65 20 63  |R0 =.0.disable c|
00040ab0  68 61 6e 67 65 64 20 62  6f 78 20 63 61 6c 63 75  |hanged box calcu|
00040ac0  6c 61 74 69 6f 6e 73 0a  09 20 09 31 09 65 6e 61  |lations.. .1.ena|
00040ad0  62 6c 65 20 63 68 61 6e  67 65 64 20 62 6f 78 20  |ble changed box |
00040ae0  63 61 6c 63 75 6c 61 74  69 6f 6e 73 0a 09 20 09  |calculations.. .|
00040af0  32 09 72 65 73 65 74 20  63 68 61 6e 67 65 64 20  |2.reset changed |
00040b00  62 6f 78 20 74 6f 20 6e  75 6c 6c 20 72 65 63 74  |box to null rect|
00040b10  61 6e 67 6c 65 0a 09 20  09 2d 31 09 72 65 61 64  |angle.. .-1.read|
00040b20  20 63 68 61 6e 67 65 64  20 62 6f 78 20 69 6e 66  | changed box inf|
00040b30  6f 72 6d 61 74 69 6f 6e  0a 0a 3c 3d 09 52 30 20  |ormation..<=.R0 |
00040b40  3d 09 70 72 65 76 69 6f  75 73 20 65 6e 61 62 6c  |=.previous enabl|
00040b50  65 20 73 74 61 74 65 20  69 6e 20 62 69 74 20 30  |e state in bit 0|
00040b60  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00040b70  6f 20 61 20 66 69 78 65  64 20 62 6c 6f 63 6b 20  |o a fixed block |
00040b80  6f 66 20 35 20 77 6f 72  64 73 3a 0a 09 20 09 30  |of 5 words:.. .0|
00040b90  20 6e 65 77 20 64 69 73  61 62 6c 65 2f 65 6e 61  | new disable/ena|
00040ba0  62 6c 65 20 66 6c 61 67  0a 09 20 09 34 20 78 2d  |ble flag.. .4 x-|
00040bb0  63 6f 6f 72 64 69 6e 61  74 65 20 6f 66 20 6c 65  |coordinate of le|
00040bc0  66 74 20 65 64 67 65 20  6f 66 20 62 6f 78 0a 09  |ft edge of box..|
00040bd0  20 09 38 20 79 2d 63 6f  6f 72 64 69 6e 61 74 65  | .8 y-coordinate|
00040be0  20 6f 66 20 62 6f 74 74  6f 6d 20 65 64 67 65 20  | of bottom edge |
00040bf0  6f 66 20 62 6f 78 0a 09  20 09 31 32 20 78 2d 63  |of box.. .12 x-c|
00040c00  6f 6f 72 64 69 6e 61 74  65 20 6f 66 20 72 69 67  |oordinate of rig|
00040c10  68 74 20 65 64 67 65 20  6f 66 20 62 6f 78 0a 09  |ht edge of box..|
00040c20  20 09 31 36 20 79 2d 63  6f 6f 72 64 69 6e 61 74  | .16 y-coordinat|
00040c30  65 20 6f 66 20 74 6f 70  20 65 64 67 65 20 6f 66  |e of top edge of|
00040c40  20 62 6f 78 0a 0a 34 2d  31 36 20 61 72 65 20 6f  | box..4-16 are o|
00040c50  6e 6c 79 20 76 61 6c 69  64 20 69 66 20 74 68 65  |nly valid if the|
00040c60  20 63 68 61 6e 67 65 20  62 6f 78 20 63 61 6c 63  | change box calc|
00040c70  75 6c 61 74 69 6f 6e 73  20 77 65 72 65 20 69 6e  |ulations were in|
00040c80  20 61 6e 20 65 6e 61 62  6c 65 64 20 73 74 61 74  | an enabled stat|
00040c90  65 20 69 6d 6d 65 64 69  61 74 65 6c 79 20 61 66  |e immediately af|
00040ca0  74 65 72 20 74 68 65 20  63 61 6c 6c 3b 20 6f 74  |ter the call; ot|
00040cb0  68 65 72 77 69 73 65 20  74 68 65 79 20 61 72 65  |herwise they are|
00040cc0  20 75 6e 64 65 66 69 6e  65 64 2e 0a 0a 54 68 69  | undefined...Thi|
00040cd0  73 20 63 61 6c 6c 20 63  68 65 63 6b 73 2c 20 77  |s call checks, w|
00040ce0  68 69 63 68 20 61 72 65  61 73 20 6f 66 20 74 68  |hich areas of th|
00040cf0  65 20 73 63 72 65 65 6e  20 77 65 72 65 20 63 68  |e screen were ch|
00040d00  61 6e 67 65 64 20 62 79  20 56 44 55 20 63 6f 6d  |anged by VDU com|
00040d10  6d 61 6e 64 73 20 61 6e  64 20 72 65 74 75 72 6e  |mands and return|
00040d20  73 20 74 68 65 20 73 6d  61 6c 6c 65 73 74 20 72  |s the smallest r|
00040d30  65 63 74 61 6e 67 6c 65  20 77 68 69 63 68 20 63  |ectangle which c|
00040d40  6f 76 65 72 73 20 61 6c  6c 20 63 68 61 6e 67 65  |overs all change|
00040d50  64 20 70 69 78 65 6c 73  2e 00 00 00 44 41 54 41  |d pixels....DATA|
00040d60  de 01 00 00 4f 53 5f 43  68 61 6e 67 65 52 65 64  |....OS_ChangeRed|
00040d70  69 72 65 63 74 69 6f 6e  20 20 28 26 35 45 29 0a  |irection  (&5E).|
00040d80  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
00040d90  30 20 3d 09 6e 65 77 20  66 69 6c 65 20 68 61 6e  |0 =.new file han|
00040da0  64 6c 65 20 66 6f 72 20  69 6e 70 75 74 0a 09 20  |dle for input.. |
00040db0  09 30 20 3d 20 6e 6f 74  20 72 65 64 69 72 65 63  |.0 = not redirec|
00040dc0  74 65 64 0a 09 20 09 2d  31 20 3d 20 72 65 61 64  |ted.. .-1 = read|
00040dd0  0a 09 52 31 20 3d 09 6e  65 77 20 66 69 6c 65 20  |..R1 =.new file |
00040de0  68 61 6e 64 6c 65 20 66  6f 72 20 6f 75 74 70 75  |handle for outpu|
00040df0  74 0a 09 20 09 30 20 3d  20 6e 6f 74 20 72 65 64  |t.. .0 = not red|
00040e00  69 72 65 63 74 65 64 0a  09 20 09 2d 31 20 3d 20  |irected.. .-1 = |
00040e10  72 65 61 64 0a 0a 3c 3d  09 52 30 20 3d 09 6f 6c  |read..<=.R0 =.ol|
00040e20  64 20 66 69 6c 65 20 68  61 6e 64 6c 65 20 66 6f  |d file handle fo|
00040e30  72 20 69 6e 70 75 74 20  28 6f 72 20 30 20 66 6f  |r input (or 0 fo|
00040e40  72 20 73 74 61 6e 64 61  72 64 20 69 6e 70 75 74  |r standard input|
00040e50  29 0a 09 52 31 20 3d 09  6f 6c 64 20 66 69 6c 65  |)..R1 =.old file|
00040e60  20 68 61 6e 64 6c 65 20  66 6f 72 20 6f 75 74 70  | handle for outp|
00040e70  75 74 20 28 6f 72 20 30  20 66 6f 72 20 73 74 61  |ut (or 0 for sta|
00040e80  6e 64 61 72 64 20 6f 75  74 70 75 74 29 0a 0a 54  |ndard output)..T|
00040e90  68 69 73 20 72 65 61 64  73 20 6f 72 20 77 72 69  |his reads or wri|
00040ea0  74 65 73 20 74 68 65 20  66 69 6c 65 20 68 61 6e  |tes the file han|
00040eb0  64 6c 65 73 20 75 73 65  64 20 62 79 20 3c 4f 53  |dles used by <OS|
00040ec0  5f 43 4c 49 3e 20 74 6f  20 72 65 64 69 72 65 63  |_CLI> to redirec|
00040ed0  74 20 69 6e 2f 6f 75 74  70 75 74 2e 20 49 74 20  |t in/output. It |
00040ee0  69 73 20 6d 61 69 6e 6c  79 20 70 72 6f 76 69 64  |is mainly provid|
00040ef0  65 64 20 66 6f 72 20 74  68 65 20 75 73 65 20 6f  |ed for the use o|
00040f00  66 20 74 68 65 20 54 61  73 6b 4d 61 6e 61 67 65  |f the TaskManage|
00040f10  72 2c 20 62 75 74 20 79  6f 75 20 6d 61 79 20 61  |r, but you may a|
00040f20  6c 73 6f 20 66 69 6e 64  20 74 68 65 20 63 61 6c  |lso find the cal|
00040f30  6c 20 75 73 65 66 75 6c  2e 0a 00 00 44 41 54 41  |l useful....DATA|
00040f40  f8 01 00 00 4f 53 5f 43  68 65 63 6b 4d 6f 64 65  |....OS_CheckMode|
00040f50  56 61 6c 69 64 20 20 28  26 33 46 29 0a 23 50 61  |Valid  (&3F).#Pa|
00040f60  72 65 6e 74 20 21 52 6f  6f 74 0a 3d 3e 09 52 30  |rent !Root.=>.R0|
00040f70  20 3d 09 3c 6d 6f 64 65  20 6e 75 6d 62 65 72 3d  | =.<mode number=|
00040f80  3e 56 44 55 3a 32 32 61  3e 20 74 6f 20 63 68 65  |>VDU:22a> to che|
00040f90  63 6b 0a 0a 3c 3d 09 69  66 20 43 20 66 6c 61 67  |ck..<=.if C flag|
00040fa0  20 75 6e 73 65 74 20 6d  6f 64 65 20 69 73 20 76  | unset mode is v|
00040fb0  61 6c 69 64 20 61 6e 64  20 52 30 20 70 72 65 73  |alid and R0 pres|
00040fc0  65 72 76 65 64 0a 09 69  66 20 43 20 66 6c 61 67  |erved..if C flag|
00040fd0  20 73 65 74 20 74 68 65  20 6d 6f 64 65 20 69 73  | set the mode is|
00040fe0  20 69 6e 76 61 6c 69 64  0a 09 52 30 20 3d 09 2d  | invalid..R0 =.-|
00040ff0  31 20 69 66 20 6d 6f 64  65 20 69 73 20 6e 6f 6e  |1 if mode is non|
00041000  2d 65 78 69 73 74 65 6e  74 0a 09 09 2d 32 20 69  |-existent...-2 i|
00041010  66 20 6e 6f 74 20 65 6e  6f 75 67 68 20 6d 65 6d  |f not enough mem|
00041020  6f 72 79 0a 09 52 31 20  3d 09 6d 6f 64 65 20 74  |ory..R1 =.mode t|
00041030  68 61 74 20 77 6f 75 6c  64 20 62 65 20 75 73 65  |hat would be use|
00041040  64 0a 09 09 2d 32 20 69  66 20 75 6e 61 62 6c 65  |d...-2 if unable|
00041050  20 74 6f 20 73 65 6c 65  63 74 20 61 6c 74 65 72  | to select alter|
00041060  6e 61 74 69 76 65 20 6d  6f 64 65 0a 0a 54 68 69  |native mode..Thi|
00041070  73 20 66 69 6e 64 73 20  6f 75 74 2c 20 77 68 65  |s finds out, whe|
00041080  74 68 65 72 20 79 6f 75  20 6d 61 79 20 63 68 61  |ther you may cha|
00041090  6e 67 65 20 74 6f 20 61  20 67 69 76 65 6e 20 6d  |nge to a given m|
000410a0  6f 64 65 20 6f 72 20 69  74 27 73 20 69 6e 76 61  |ode or it's inva|
000410b0  6c 69 64 2c 20 65 69 74  68 65 72 20 62 65 63 61  |lid, either beca|
000410c0  75 73 65 20 74 68 65 20  6d 6f 6e 69 74 6f 72 20  |use the monitor |
000410d0  74 79 70 65 20 66 6f 72  62 69 64 73 20 69 74 2c  |type forbids it,|
000410e0  20 52 31 20 74 68 65 6e  20 69 73 20 74 68 65 20  | R1 then is the |
000410f0  61 6c 74 65 72 6e 61 74  69 76 65 20 6d 6f 64 65  |alternative mode|
00041100  2c 20 6f 72 20 74 68 65  72 65 27 73 20 6e 6f 74  |, or there's not|
00041110  20 65 6e 6f 75 67 68 20  6d 65 6d 6f 72 79 20 69  | enough memory i|
00041120  6e 20 74 68 69 73 20 63  61 73 65 20 52 31 20 3d  |n this case R1 =|
00041130  20 2d 32 2e 44 41 54 41  60 07 00 00 4f 53 5f 43  | -2.DATA`...OS_C|
00041140  6c 61 69 6d 44 65 76 69  63 65 56 65 63 74 6f 72  |laimDeviceVector|
00041150  20 28 26 34 42 29 0a 23  50 61 72 65 6e 74 20 4f  | (&4B).#Parent O|
00041160  53 5f 0a 3d 3e 09 52 30  20 3d 09 3c 64 65 76 69  |S_.=>.R0 =.<devi|
00041170  63 65 20 6e 75 6d 62 65  72 3d 3e 4f 53 5f 73 79  |ce number=>OS_sy|
00041180  73 74 65 6d 64 65 76 69  63 65 73 3e 0a 09 52 31  |stemdevices>..R1|
00041190  20 3d 09 61 64 64 72 65  73 73 20 6f 66 20 64 65  | =.address of de|
000411a0  76 69 63 65 20 64 72 69  76 65 72 20 72 6f 75 74  |vice driver rout|
000411b0  69 6e 65 0a 09 52 32 20  3d 09 76 61 6c 75 65 20  |ine..R2 =.value |
000411c0  74 6f 20 62 65 20 70 61  73 73 65 64 20 69 6e 20  |to be passed in |
000411d0  52 31 32 20 77 68 65 6e  20 64 72 69 76 65 72 20  |R12 when driver |
000411e0  69 73 20 63 61 6c 6c 65  64 0a 09 52 33 20 3d 09  |is called..R3 =.|
000411f0  61 64 64 72 65 73 73 20  6f 66 20 69 6e 74 65 72  |address of inter|
00041200  72 75 70 74 20 73 74 61  74 75 73 20 69 66 20 52  |rupt status if R|
00041210  30 20 3d 20 38 20 6f 72  20 31 33 20 6f 6e 20 65  |0 = 8 or 13 on e|
00041220  6e 74 72 79 0a 09 52 34  20 3d 09 69 6e 74 65 72  |ntry..R4 =.inter|
00041230  72 75 70 74 20 6d 61 73  6b 20 74 6f 20 75 73 65  |rupt mask to use|
00041240  2c 20 69 66 20 52 30 20  3d 20 38 20 6f 72 20 31  |, if R0 = 8 or 1|
00041250  33 20 6f 6e 20 65 6e 74  72 79 0a 0a 3c 3d 09 52  |3 on entry..<=.R|
00041260  30 2d 52 34 20 70 72 65  73 65 72 76 65 64 0a 0a  |0-R4 preserved..|
00041270  54 68 69 73 20 69 6e 73  74 61 6c 6c 73 20 74 68  |This installs th|
00041280  65 20 64 65 76 69 63 65  20 64 72 69 76 65 72 2e  |e device driver.|
00041290  20 49 66 20 74 68 65 20  73 61 6d 65 20 64 72 69  | If the same dri|
000412a0  76 65 72 20 68 61 73 20  61 6c 72 65 61 64 79 20  |ver has already |
000412b0  62 65 65 6e 20 69 6e 73  74 61 6c 6c 65 64 20 6f  |been installed o|
000412c0  6e 20 74 68 65 20 76 65  63 74 6f 72 20 74 68 65  |n the vector the|
000412d0  6e 20 74 68 65 20 6f 6c  64 20 63 6f 70 79 20 69  |n the old copy i|
000412e0  73 20 72 65 6d 6f 76 65  64 20 66 72 6f 6d 20 74  |s removed from t|
000412f0  68 65 20 76 65 63 74 6f  72 2e 20 54 68 69 73 20  |he vector. This |
00041300  64 6f 65 73 20 4e 4f 54  20 65 6e 61 62 6c 65 20  |does NOT enable |
00041310  69 6e 74 65 72 72 75 70  74 73 20 66 72 6f 6d 20  |interrupts from |
00041320  74 68 65 20 64 65 76 69  63 65 2e 20 54 68 65 20  |the device. The |
00041330  70 72 65 76 69 6f 75 73  20 64 72 69 76 65 72 20  |previous driver |
00041340  69 73 20 61 64 64 65 64  20 74 6f 20 74 68 65 20  |is added to the |
00041350  6c 69 73 74 20 6f 66 20  65 61 72 6c 69 65 72 20  |list of earlier |
00041360  63 6c 61 69 6d 61 6e 74  73 2e 20 59 6f 75 72 20  |claimants. Your |
00041370  64 72 69 76 65 72 20 69  73 20 63 61 6c 6c 65 64  |driver is called|
00041380  20 69 66 20 74 68 65 20  49 4f 43 20 63 68 69 70  | if the IOC chip|
00041390  20 72 65 63 69 65 76 65  73 20 61 6e 20 69 6e 74  | recieves an int|
000413a0  65 72 72 75 70 74 20 66  72 6f 6d 20 74 68 65 20  |errupt from the |
000413b0  61 70 70 72 6f 70 72 69  61 74 65 20 64 65 76 69  |appropriate devi|
000413c0  63 65 2c 20 74 68 65 20  63 6f 72 72 65 73 70 6f  |ce, the correspo|
000413d0  6e 64 69 6e 67 20 49 4f  43 20 69 6e 74 65 72 72  |nding IOC interr|
000413e0  75 70 74 20 6d 61 73 6b  20 62 69 74 20 69 73 20  |upt mask bit is |
000413f0  73 65 74 2c 20 61 6e 64  20 79 6f 75 72 20 64 72  |set, and your dr|
00041400  69 76 65 72 20 77 61 73  20 74 68 65 20 6c 61 73  |iver was the las|
00041410  74 20 74 6f 20 63 6c 61  69 6d 20 74 68 65 20 76  |t to claim the v|
00041420  65 63 74 6f 72 2e 0a 0a  57 68 65 6e 20 79 6f 75  |ector...When you|
00041430  72 20 63 6f 64 65 20 69  73 20 62 65 69 6e 67 20  |r code is being |
00041440  63 61 6c 6c 65 64 2c 20  79 6f 75 27 6c 6c 20 66  |called, you'll f|
00041450  69 6e 64 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  |ind the followin|
00041460  67 20 65 6e 74 72 79 0a  63 6f 6e 64 69 74 69 6f  |g entry.conditio|
00041470  6e 73 3a 0a 23 49 6e 64  65 6e 74 20 32 0a 8f 20  |ns:.#Indent 2.. |
00041480  74 68 65 20 41 52 4d 20  69 73 20 69 6e 20 49 52  |the ARM is in IR|
00041490  51 20 6d 6f 64 65 20 61  6e 64 20 69 6e 74 65 72  |Q mode and inter|
000414a0  72 75 70 74 73 20 61 72  65 20 64 69 73 61 62 6c  |rupts are disabl|
000414b0  65 64 0a 8f 20 52 33 20  70 6f 69 6e 74 73 20 74  |ed.. R3 points t|
000414c0  6f 20 74 68 65 20 62 61  73 65 20 6f 66 20 74 68  |o the base of th|
000414d0  65 20 49 4f 43 20 63 68  69 70 20 6d 65 6d 6f 72  |e IOC chip memor|
000414e0  79 20 73 70 61 63 65 0a  8f 20 52 31 32 20 68 61  |y space.. R12 ha|
000414f0  73 20 52 32 27 73 20 76  61 6c 75 65 20 77 68 65  |s R2's value whe|
00041500  6e 20 63 6c 61 69 6d 69  6e 67 20 74 68 65 20 76  |n claiming the v|
00041510  65 63 74 6f 72 0a 23 49  6e 64 65 6e 74 0a 0a 59  |ector.#Indent..Y|
00041520  6f 75 72 20 72 6f 75 74  69 6e 65 20 73 68 6f 75  |our routine shou|
00041530  6c 64 3a 0a 23 49 6e 64  65 6e 74 20 32 0a 8f 20  |ld:.#Indent 2.. |
00041540  73 65 72 76 69 63 65 20  74 68 65 20 69 6e 74 65  |service the inte|
00041550  72 72 75 70 74 0a 8f 20  73 74 6f 70 20 74 68 65  |rrupt.. stop the|
00041560  20 64 65 76 69 63 65 20  66 72 6f 6d 20 67 65 6e  | device from gen|
00041570  65 72 61 74 69 6e 67 20  69 6e 74 65 72 72 75 70  |erating interrup|
00041580  74 73 2c 20 77 68 65 6e  20 6e 65 63 65 73 73 61  |ts, when necessa|
00041590  72 79 0a 8f 20 72 65 74  75 72 6e 20 74 6f 20 6b  |ry.. return to k|
000415a0  65 72 6e 65 6c 20 75 73  69 6e 67 20 27 4d 4f 56  |ernel using 'MOV|
000415b0  20 50 43 2c 52 31 34 27  0a 23 49 6e 64 65 74 0a  | PC,R14'.#Indet.|
000415c0  59 6f 75 20 73 68 6f 75  6c 64 20 74 61 6b 65 20  |You should take |
000415d0  63 61 72 65 20 6f 66 3a  0a 8f 20 61 20 76 65 72  |care of:.. a ver|
000415e0  79 20 68 69 67 68 20 65  78 65 63 75 74 69 6f 6e  |y high execution|
000415f0  20 73 70 65 65 64 0a 8f  20 69 66 20 79 6f 75 72  | speed.. if your|
00041600  20 72 6f 75 74 69 6e 65  20 74 61 6b 65 73 20 6d  | routine takes m|
00041610  6f 72 65 20 74 68 61 6e  20 31 30 30 b5 73 2c 20  |ore than 100.s, |
00041620  79 6f 75 20 73 68 6f 75  6c 64 20 72 65 2d 65 6e  |you should re-en|
00041630  61 62 6c 65 20 69 6e 74  65 72 72 75 70 74 73 2c  |able interrupts,|
00041640  20 69 66 20 70 72 65 76  69 6f 75 73 6c 79 20 64  | if previously d|
00041650  69 73 61 62 6c 65 64 2c  20 74 6f 20 65 6e 73 75  |isabled, to ensu|
00041660  72 65 20 65 67 2e 20 64  69 73 63 20 6f 70 73 0a  |re eg. disc ops.|
00041670  8f 20 73 61 76 65 69 6e  67 20 52 31 34 5f 73 76  |. saveing R14_sv|
00041680  63 20 74 6f 20 61 20 73  74 61 63 6b 20 62 65 66  |c to a stack bef|
00041690  6f 72 65 20 63 61 6c 6c  69 6e 67 20 53 57 49 73  |ore calling SWIs|
000416a0  20 61 6e 64 20 72 65 6c  6f 61 64 69 6e 67 20 69  | and reloading i|
000416b0  74 20 61 66 74 65 72 20  69 74 20 72 65 74 75 72  |t after it retur|
000416c0  6e 73 20 74 6f 20 70 72  65 76 65 6e 74 20 64 6f  |ns to prevent do|
000416d0  75 62 6c 65 20 75 73 69  6e 67 20 6f 66 20 52 31  |uble using of R1|
000416e0  34 5f 73 76 63 0a 8f 20  73 74 72 69 63 74 6c 79  |4_svc.. strictly|
000416f0  20 61 76 6f 69 64 69 6e  67 20 74 68 65 20 75 73  | avoiding the us|
00041700  65 20 6f 66 20 6e 6f 6e  20 72 65 2d 65 6e 74 72  |e of non re-entr|
00041710  61 6e 74 20 53 57 49 2c  20 74 68 69 73 20 69 73  |ant SWI, this is|
00041720  20 62 65 63 61 75 73 65  20 74 68 65 20 73 75 70  | because the sup|
00041730  65 72 76 69 73 6f 72 20  73 74 61 63 6b 20 77 6f  |ervisor stack wo|
00041740  75 6c 64 20 62 65 63 6f  6d 65 20 63 6f 72 72 75  |uld become corru|
00041750  70 74 65 64 20 69 66 20  75 73 65 64 0a 8f 20 63  |pted if used.. c|
00041760  6c 65 61 72 69 6e 67 20  74 68 65 20 69 6e 74 65  |learing the inte|
00041770  72 72 75 70 74 20 66 6c  61 67 73 20 77 68 65 6e  |rrupt flags when|
00041780  20 66 69 6e 69 73 68 69  6e 67 0a 8f 20 74 68 65  | finishing.. the|
00041790  20 53 57 49 2d 65 72 72  6f 72 20 68 61 6e 64 6c  | SWI-error handl|
000417a0  69 6e 67 2e 20 59 6f 75  20 4d 55 53 54 20 75 73  |ing. You MUST us|
000417b0  65 20 58 53 57 49 73 2e  20 42 75 74 20 74 68 65  |e XSWIs. But the|
000417c0  72 65 20 69 73 20 6e 6f  20 6f 6e 65 20 74 6f 20  |re is no one to |
000417d0  67 69 76 65 20 74 68 65  20 65 72 72 6f 72 20 74  |give the error t|
000417e0  68 72 6f 75 67 68 2c 20  73 6f 20 79 6f 75 20 6d  |hrough, so you m|
000417f0  75 73 74 20 65 69 74 68  65 72 20 68 61 6e 64 6c  |ust either handl|
00041800  65 20 74 68 69 73 20 79  6f 75 72 73 65 6c 66 20  |e this yourself |
00041810  6f 72 20 73 74 6f 72 65  20 61 6e 20 65 72 72 6f  |or store an erro|
00041820  72 20 69 6e 64 69 63 61  74 6f 72 2c 20 73 6f 20  |r indicator, so |
00041830  74 68 61 74 20 74 68 65  20 6e 65 78 74 20 53 57  |that the next SW|
00041840  49 20 63 61 6c 6c 20 28  6f 72 20 74 68 65 20 63  |I call (or the c|
00041850  75 72 72 65 6e 74 2c 20  69 66 20 61 6c 72 65 61  |urrent, if alrea|
00041860  64 79 20 74 68 72 65 61  64 65 64 29 20 74 6f 20  |dy threaded) to |
00041870  74 68 69 73 20 6d 6f 64  75 6c 65 20 77 69 6c 6c  |this module will|
00041880  20 67 65 6e 65 72 61 74  65 20 61 6e 20 65 72 72  | generate an err|
00041890  6f 72 2e 0a 44 41 54 41  7a 02 00 00 53 79 73 74  |or..DATAz...Syst|
000418a0  65 6d 20 44 65 76 69 63  65 73 0a 41 6c 6c 20 6d  |em Devices.All m|
000418b0  61 63 68 69 6e 65 73 20  61 66 74 65 72 20 74 68  |achines after th|
000418c0  65 20 41 33 30 30 30 20  68 61 76 65 20 74 68 65  |e A3000 have the|
000418d0  73 65 20 73 79 73 74 65  6d 20 64 65 76 69 63 65  |se system device|
000418e0  20 6e 75 6d 62 65 72 73  3a 0a 4e 75 6d 62 65 72  | numbers:.Number|
000418f0  09 44 65 76 69 63 65 0a  30 09 50 72 69 6e 74 65  |.Device.0.Printe|
00041900  72 20 69 6e 74 65 72 72  75 70 74 20 66 72 6f 6d  |r interrupt from|
00041910  20 38 32 43 37 31 30 2f  31 0a 31 09 4c 6f 77 20  | 82C710/1.1.Low |
00041920  62 61 74 74 65 72 79 20  77 61 72 6e 69 6e 67 0a  |battery warning.|
00041930  32 09 46 6c 6f 70 70 79  20 64 69 73 63 20 69 6e  |2.Floppy disc in|
00041940  64 65 78 65 72 0a 33 09  56 53 79 6e 63 20 50 75  |dexer.3.VSync Pu|
00041950  6c 73 65 0a 34 09 50 6f  77 65 72 20 6f 6e 20 72  |lse.4.Power on r|
00041960  65 73 65 74 0a 35 09 49  4f 43 20 54 69 6d 65 72  |eset.5.IOC Timer|
00041970  20 30 0a 36 09 49 4f 43  20 54 69 6d 65 72 20 31  | 0.6.IOC Timer 1|
00041980  0a 37 09 46 49 51 20 64  6f 77 6e 67 72 61 64 65  |.7.FIQ downgrade|
00041990  20 2d 20 72 65 73 65 72  76 65 64 20 66 6f 72 20  | - reserved for |
000419a0  74 68 65 20 63 75 72 72  65 6e 74 20 6f 77 6e 65  |the current owne|
000419b0  72 20 6f 66 20 46 49 51  0a 38 09 45 78 70 61 6e  |r of FIQ.8.Expan|
000419c0  73 69 6f 6e 20 63 61 72  64 20 46 49 51 20 64 6f  |sion card FIQ do|
000419d0  77 6e 67 72 61 64 65 20  3b 74 68 69 73 20 73 68  |wngrade ;this sh|
000419e0  6f 75 6c 64 20 6e 6f 72  6d 61 6c 6c 79 20 62 65  |ould normally be|
000419f0  20 6d 61 73 6b 65 64 20  6f 66 66 0a 39 09 53 6f  | masked off.9.So|
00041a00  75 6e 64 20 73 79 73 74  65 6d 20 62 75 66 66 65  |und system buffe|
00041a10  72 20 63 68 61 6e 67 65  0a 31 30 09 53 65 72 69  |r change.10.Seri|
00041a20  61 6c 20 70 6f 72 74 20  69 6e 74 65 72 72 75 70  |al port interrup|
00041a30  74 20 66 72 6f 6d 20 38  32 43 37 31 30 2f 31 20  |t from 82C710/1 |
00041a40  61 6c 73 6f 20 6d 61 70  70 65 64 20 74 6f 20 46  |also mapped to F|
00041a50  49 51 20 64 65 76 69 63  65 20 34 0a 31 31 09 49  |IQ device 4.11.I|
00041a60  44 45 20 68 61 72 64 20  64 69 73 63 20 69 6e 74  |DE hard disc int|
00041a70  65 72 72 75 70 74 0a 31  32 09 46 6c 6f 70 70 79  |errupt.12.Floppy|
00041a80  20 64 69 73 63 20 69 6e  74 65 72 72 75 70 74 20  | disc interrupt |
00041a90  66 72 6f 6d 20 38 32 43  37 31 30 2f 31 0a 31 33  |from 82C710/1.13|
00041aa0  09 45 78 70 61 6e 73 69  6f 6e 20 63 61 72 64 20  |.Expansion card |
00041ab0  69 6e 74 65 72 72 75 70  74 0a 31 34 09 4b 65 79  |interrupt.14.Key|
00041ac0  62 6f 61 72 64 20 73 65  72 69 61 6c 20 74 72 61  |board serial tra|
00041ad0  6e 73 6d 69 74 20 72 65  67 69 73 74 65 72 20 65  |nsmit register e|
00041ae0  6d 70 74 79 0a 31 35 09  4b 65 79 62 6f 61 72 64  |mpty.15.Keyboard|
00041af0  20 73 65 72 69 61 6c 20  72 65 63 69 65 76 65 20  | serial recieve |
00041b00  72 65 67 69 73 74 65 72  20 66 75 6c 6c 0a 00 00  |register full...|
00041b10  44 41 54 41 7b 02 00 00  4f 53 5f 43 4c 49 20 20  |DATA{...OS_CLI  |
00041b20  28 26 30 35 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&05).#Parent OS|
00041b30  5f 0a 3d 3e 09 52 30 20  3d 09 70 6f 69 6e 74 65  |_.=>.R0 =.pointe|
00041b40  72 20 74 6f 20 73 74 72  69 6e 67 20 74 65 72 6d  |r to string term|
00041b50  69 6e 61 74 65 64 20 62  79 20 4e 75 6c 6c 2c 20  |inated by Null, |
00041b60  4c 69 6e 65 66 65 65 64  20 6f 72 20 52 65 74 75  |Linefeed or Retu|
00041b70  72 6e 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |rn..<=.R0 preser|
00041b80  76 65 64 0a 0a 54 68 69  73 20 65 78 65 63 75 74  |ved..This execut|
00041b90  65 73 20 61 20 73 74 72  69 6e 67 20 70 61 73 73  |es a string pass|
00041ba0  65 64 20 74 6f 20 69 74  20 61 73 20 69 66 20 69  |ed to it as if i|
00041bb0  74 20 68 61 73 20 62 65  65 6e 20 74 79 70 65 64  |t has been typed|
00041bc0  20 69 6e 20 74 68 65 20  43 4c 49 2e 20 57 68 65  | in the CLI. Whe|
00041bd0  6e 20 69 74 20 69 73 20  63 61 6c 6c 65 64 2c 20  |n it is called, |
00041be0  69 74 20 70 65 72 66 6f  72 6d 73 20 74 68 65 20  |it performs the |
00041bf0  66 6f 6c 6c 6f 77 69 6e  67 20 61 63 74 69 6f 6e  |following action|
00041c00  73 3a 0a 23 49 6e 64 65  6e 74 20 32 0a 8f 09 69  |s:.#Indent 2...i|
00041c10  74 20 63 68 65 63 6b 73  20 74 68 65 20 73 74 61  |t checks the sta|
00041c20  63 6b 20 73 70 61 63 65  2c 20 69 66 20 74 68 65  |ck space, if the|
00041c30  72 65 27 73 20 6e 6f 74  20 65 6e 6f 75 67 68 20  |re's not enough |
00041c40  66 72 65 65 20 6d 65 6d  6f 72 79 20 74 6f 20 65  |free memory to e|
00041c50  73 74 61 62 6c 69 73 68  20 74 68 65 20 73 74 61  |stablish the sta|
00041c60  63 6b 20 74 68 65 20 65  72 72 6f 72 20 27 4e 6f  |ck the error 'No|
00041c70  20 72 6f 6f 6d 20 66 6f  72 20 73 75 70 65 72 76  | room for superv|
00041c80  69 73 6f 72 20 73 74 61  63 6b 27 20 69 73 20 72  |isor stack' is r|
00041c90  65 74 75 72 6e 65 64 2e  0a 8f 09 69 74 20 63 68  |eturned....it ch|
00041ca0  65 63 6b 73 20 74 68 65  20 63 6f 6d 6d 61 6e 64  |ecks the command|
00041cb0  20 6c 69 6e 65 20 6c 65  6e 67 74 68 2e 20 41 20  | line length. A |
00041cc0  43 4c 49 2d 63 6f 6d 6d  61 6e 64 20 68 61 73 20  |CLI-command has |
00041cd0  74 6f 20 62 65 20 6c 65  73 73 20 74 68 61 6e 20  |to be less than |
00041ce0  32 35 37 20 62 79 74 65  73 20 6c 6f 6e 67 2c 20  |257 bytes long, |
00041cf0  69 6e 63 6c 75 64 69 6e  67 20 74 68 65 20 74 65  |including the te|
00041d00  72 6d 69 6e 61 74 6f 72  2e 20 49 66 20 69 74 27  |rminator. If it'|
00041d10  73 20 6c 6f 6e 67 65 72  2c 20 74 68 65 20 63 61  |s longer, the ca|
00041d20  6c 6c 20 69 73 20 69 67  6e 6f 72 65 64 20 77 69  |ll is ignored wi|
00041d30  74 68 6f 75 74 20 72 65  74 75 72 6e 69 6e 67 20  |thout returning |
00041d40  61 6e 20 65 72 72 6f 72  2e 0a 8f 09 69 74 20 74  |an error....it t|
00041d50  68 65 6e 20 65 78 65 63  75 74 65 73 20 74 68 65  |hen executes the|
00041d60  20 63 6f 6d 6d 61 6e 64  20 61 73 20 61 6e 79 20  | command as any |
00041d70  6f 74 68 65 72 20 2a 43  6f 6d 6d 61 6e 64 20 74  |other *Command t|
00041d80  79 70 65 64 20 69 6e 20  43 4c 49 00 44 41 54 41  |yped in CLI.DATA|
00041d90  42 02 00 00 4f 53 5f 43  6f 6e 74 72 6f 6c 20 20  |B...OS_Control  |
00041da0  28 26 30 46 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&0F).#Parent OS|
00041db0  5f 0a 3d 3e 09 52 30 20  3d 09 61 64 64 72 65 73  |_.=>.R0 =.addres|
00041dc0  73 20 6f 66 20 65 72 72  6f 72 20 68 61 6e 64 6c  |s of error handl|
00041dd0  65 72 2c 20 6f 72 20 30  20 74 6f 20 72 65 61 64  |er, or 0 to read|
00041de0  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00041df0  6f 20 62 75 66 66 65 72  20 66 6f 72 20 74 68 65  |o buffer for the|
00041e00  20 65 72 72 6f 72 20 68  61 6e 64 6c 65 72 2c 20  | error handler, |
00041e10  6f 72 20 30 20 74 6f 20  72 65 61 64 0a 09 52 32  |or 0 to read..R2|
00041e20  20 3d 09 61 64 64 72 65  73 73 20 6f 66 20 65 73  | =.address of es|
00041e30  63 61 70 65 20 73 74 61  74 65 20 63 68 61 6e 67  |cape state chang|
00041e40  65 20 68 61 6e 64 6c 65  72 2c 20 6f 72 20 30 20  |e handler, or 0 |
00041e50  74 6f 20 72 65 61 64 0a  09 52 33 20 3d 09 61 64  |to read..R3 =.ad|
00041e60  64 72 65 73 73 20 6f 66  20 65 76 65 6e 74 20 68  |dress of event h|
00041e70  61 6e 64 6c 65 72 2c 20  6f 72 20 30 20 74 6f 20  |andler, or 0 to |
00041e80  72 65 61 64 20 20 20 20  20 20 20 0a 20 20 20 0a  |read       .   .|
00041e90  3c 3d 09 52 30 20 3d 09  70 72 65 76 69 6f 75 73  |<=.R0 =.previous|
00041ea0  20 65 72 72 6f 72 20 68  61 6e 64 6c 65 72 20 61  | error handler a|
00041eb0  64 64 72 65 73 73 0a 09  52 31 20 3d 09 70 72 65  |ddress..R1 =.pre|
00041ec0  76 69 6f 75 73 20 62 75  66 66 65 72 20 61 64 64  |vious buffer add|
00041ed0  72 65 73 73 0a 09 52 32  20 3d 09 70 72 65 76 69  |ress..R2 =.previ|
00041ee0  6f 75 73 20 65 73 63 61  70 65 20 72 6f 75 74 69  |ous escape routi|
00041ef0  6e 65 20 61 64 64 72 65  73 73 0a 09 52 33 20 3d  |ne address..R3 =|
00041f00  09 70 72 65 76 69 6f 75  73 20 65 76 65 6e 74 20  |.previous event |
00041f10  68 61 6e 64 6c 65 72 20  61 64 64 72 65 73 73 0a  |handler address.|
00041f20  0a 54 68 69 73 20 73 65  74 73 20 73 6f 6d 65 20  |.This sets some |
00041f30  6f 66 20 74 68 65 20 65  78 63 65 70 74 69 6f 6e  |of the exception|
00041f40  20 68 61 6e 64 6c 65 72  73 2c 20 62 75 74 20 69  | handlers, but i|
00041f50  73 20 6f 62 73 6f 6c 65  74 65 20 61 6e 64 20 73  |s obsolete and s|
00041f60  68 6f 75 6c 64 6e 27 74  20 62 65 20 75 73 65 64  |houldn't be used|
00041f70  20 69 6e 20 6e 65 77 65  72 20 70 72 6f 67 72 61  | in newer progra|
00041f80  6d 73 2c 20 62 65 63 61  75 73 65 20 3c 4f 53 5f  |ms, because <OS_|
00041f90  43 68 61 6e 67 65 45 6e  76 69 72 6f 6e 6d 65 6e  |ChangeEnvironmen|
00041fa0  74 3e 20 64 6f 65 73 20  74 68 65 20 73 61 6d 65  |t> does the same|
00041fb0  2c 20 69 6e 20 66 61 63  74 20 4f 53 5f 43 6f 6e  |, in fact OS_Con|
00041fc0  74 72 6f 6c 20 75 73 65  73 20 69 74 2e 0a 00 00  |trol uses it....|
00041fd0  44 41 54 41 45 03 00 00  4f 53 5f 44 65 6c 69 6e  |DATAE...OS_Delin|
00041fe0  6b 41 70 70 6c 69 63 61  74 69 6f 6e 20 20 28 26  |kApplication  (&|
00041ff0  34 44 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |4D).#Parent OS_.|
00042000  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
00042010  74 6f 20 62 75 66 66 65  72 0a 09 52 31 20 3d 09  |to buffer..R1 =.|
00042020  62 75 66 66 65 72 20 73  69 7a 65 20 69 6e 20 62  |buffer size in b|
00042030  79 74 65 73 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |ytes..<=.R0 pres|
00042040  65 72 76 65 64 0a 09 52  31 20 3d 09 6e 75 6d 62  |erved..R1 =.numb|
00042050  65 72 20 6f 66 20 62 79  74 65 73 20 6c 65 66 74  |er of bytes left|
00042060  20 69 6e 20 62 75 66 66  65 72 0a 0a 57 68 65 6e  | in buffer..When|
00042070  20 61 6e 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  | an application |
00042080  72 75 6e 6e 69 6e 67 20  61 74 20 26 38 30 30 30  |running at &8000|
00042090  20 69 73 20 67 6f 69 6e  67 20 74 6f 20 62 65 20  | is going to be |
000420a0  73 77 61 70 70 65 64 20  6f 75 74 2c 20 69 74 20  |swapped out, it |
000420b0  6d 75 73 74 20 72 65 6d  6f 76 65 20 61 6c 6c 20  |must remove all |
000420c0  76 65 63 74 6f 72 73 20  74 68 61 74 20 69 74 20  |vectors that it |
000420d0  75 73 65 73 2e 20 4f 74  68 65 72 77 69 73 65 2c  |uses. Otherwise,|
000420e0  20 69 66 20 74 68 65 79  20 77 65 72 65 20 61 63  | if they were ac|
000420f0  74 69 76 61 74 65 64 2c  20 74 68 65 79 20 77 6f  |tivated, they wo|
00042100  75 6c 64 20 6a 75 6d 70  20 69 6e 74 6f 20 77 68  |uld jump into wh|
00042110  61 74 65 76 65 72 20 68  61 70 70 65 6e 65 64 20  |atever happened |
00042120  74 6f 20 62 65 20 61 74  20 74 68 69 73 20 6c 6f  |to be at this lo|
00042130  63 61 74 69 6f 6e 20 69  6e 20 74 68 65 20 6e 65  |cation in the ne|
00042140  77 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 72 75  |w application ru|
00042150  6e 6e 69 6e 67 20 69 6e  20 74 68 61 74 20 73 70  |nning in that sp|
00042160  61 63 65 2e 0a 0a 54 68  65 20 62 75 66 66 65 72  |ace...The buffer|
00042170  20 69 73 20 75 73 65 64  20 74 6f 20 73 74 6f 72  | is used to stor|
00042180  65 20 64 65 74 61 69 6c  73 20 6f 66 20 74 68 65  |e details of the|
00042190  20 76 65 63 74 6f 72 73  20 75 73 65 64 2c 20 73  | vectors used, s|
000421a0  6f 20 74 68 65 79 20 63  61 6e 20 62 65 20 72 65  |o they can be re|
000421b0  73 74 6f 72 65 64 20 61  66 74 65 72 77 61 72 64  |stored afterward|
000421c0  73 2e 20 45 61 63 68 20  76 65 63 74 6f 72 20 72  |s. Each vector r|
000421d0  65 71 75 69 72 65 73 20  31 32 20 62 79 74 65 73  |equires 12 bytes|
000421e0  20 6f 66 20 73 74 6f 72  61 67 65 20 61 6e 64 20  | of storage and |
000421f0  74 68 65 20 6c 69 73 74  20 69 73 20 74 65 72 6d  |the list is term|
00042200  69 6e 61 74 65 64 20 62  79 20 61 20 73 69 6e 67  |inated by a sing|
00042210  6c 65 20 62 79 74 65 2e  20 49 66 20 74 68 65 20  |le byte. If the |
00042220  73 70 61 63 65 20 6c 65  66 74 20 69 73 20 30 2c  |space left is 0,|
00042230  20 79 6f 75 20 61 72 65  20 74 6f 20 61 6c 6c 6f  | you are to allo|
00042240  63 61 74 65 20 61 6e 6f  74 68 65 72 20 62 75 66  |cate another buf|
00042250  66 65 72 20 61 6e 64 20  72 65 70 65 61 74 20 74  |fer and repeat t|
00042260  68 65 20 63 61 6c 6c 3b  20 74 68 65 20 66 69 72  |he call; the fir|
00042270  73 74 20 62 75 66 66 65  72 20 69 73 20 73 74 69  |st buffer is sti|
00042280  6c 6c 20 76 61 6c 69 64  2c 20 6f 6e 6c 79 20 74  |ll valid, only t|
00042290  68 65 20 76 65 63 74 6f  72 73 20 77 68 69 63 68  |he vectors which|
000422a0  20 64 69 64 6e 27 74 20  6d 61 74 63 68 20 69 6e  | didn't match in|
000422b0  74 6f 20 69 74 2c 20 61  72 65 20 70 6c 61 63 65  |to it, are place|
000422c0  64 20 74 6f 20 74 68 65  20 73 65 63 6f 6e 64 20  |d to the second |
000422d0  6f 6e 65 2e 20 57 68 65  6e 20 72 65 6c 69 6e 6b  |one. When relink|
000422e0  69 6e 67 20 79 6f 75 20  6d 75 73 74 20 70 61 73  |ing you must pas|
000422f0  73 20 61 6c 6c 20 62 75  66 66 65 72 73 20 72 65  |s all buffers re|
00042300  74 75 72 6e 65 64 20 62  79 20 74 68 69 73 20 63  |turned by this c|
00042310  61 6c 6c 2e 0a 00 00 00  44 41 54 41 c3 00 00 00  |all.....DATA....|
00042320  4f 53 5f 47 65 6e 65 72  61 74 65 45 72 72 6f 72  |OS_GenerateError|
00042330  20 20 28 26 32 42 29 0a  23 50 61 72 65 6e 74 20  |  (&2B).#Parent |
00042340  4f 53 5f 0a 3d 3e 09 52  30 20 3d 20 70 6f 69 6e  |OS_.=>.R0 = poin|
00042350  74 65 72 20 74 6f 20 3c  65 72 72 6f 72 20 62 6c  |ter to <error bl|
00042360  6f 63 6b 3d 3e 73 77 69  5f 65 72 72 6f 72 62 6c  |ock=>swi_errorbl|
00042370  6f 63 6b 3e 0a 3c 3d 09  6f 6e 6c 79 20 72 65 74  |ock>.<=.only ret|
00042380  75 72 6e 73 20 28 77 69  74 68 20 56 20 66 6c 61  |urns (with V fla|
00042390  67 20 6f 6e 29 20 69 66  20 58 20 77 61 73 20 73  |g on) if X was s|
000423a0  65 74 0a 0a 54 68 69 73  20 67 65 6e 65 72 61 74  |et..This generat|
000423b0  65 73 20 61 6e 20 65 72  72 6f 72 20 61 6e 64 20  |es an error and |
000423c0  69 6e 76 6f 6b 65 73 20  74 68 65 20 65 72 72 6f  |invokes the erro|
000423d0  72 20 68 61 6e 64 6c 65  72 2e 0a 00 44 41 54 41  |r handler...DATA|
000423e0  3a 01 00 00 4f 53 5f 49  6e 73 74 61 6c 6c 4b 65  |:...OS_InstallKe|
000423f0  79 48 61 6e 64 6c 65 72  20 20 28 26 33 45 29 0a  |yHandler  (&3E).|
00042400  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
00042410  30 20 3d 09 30 09 72 65  61 64 20 61 64 64 72 65  |0 =.0.read addre|
00042420  73 73 20 6f 66 20 63 75  72 72 65 6e 74 20 6b 65  |ss of current ke|
00042430  79 62 6f 61 72 64 20 68  61 6e 64 6c 65 72 0a 09  |yboard handler..|
00042440  20 09 31 09 72 65 61 64  20 6b 65 79 62 6f 61 72  | .1.read keyboar|
00042450  64 20 49 44 20 66 72 6f  6d 20 6b 65 79 62 6f 61  |d ID from keyboa|
00042460  72 64 20 28 31 20 66 6f  72 20 55 4b 29 0a 09 20  |rd (1 for UK).. |
00042470  09 3e 31 09 73 65 74 20  61 64 64 72 65 73 73 20  |.>1.set address |
00042480  6f 66 20 6e 65 77 20 6b  65 79 62 6f 61 72 64 20  |of new keyboard |
00042490  68 61 6e 64 6c 65 72 0a  0a 3c 3d 09 52 30 20 3d  |handler..<=.R0 =|
000424a0  09 61 64 64 72 65 73 73  20 6f 66 20 6e 65 77 2f  |.address of new/|
000424b0  6f 6c 64 20 6b 65 79 62  6f 61 72 64 20 68 61 6e  |old keyboard han|
000424c0  64 6c 65 72 2c 20 6f 72  20 6b 65 79 62 6f 61 72  |dler, or keyboar|
000424d0  64 20 49 44 0a 0a 54 68  69 73 20 69 6e 73 74 61  |d ID..This insta|
000424e0  6c 6c 73 20 74 68 65 20  6b 65 79 62 6f 61 72 64  |lls the keyboard|
000424f0  20 68 61 6e 64 6c 65 72  20 74 6f 20 72 65 70 6c  | handler to repl|
00042500  61 63 65 20 74 68 65 20  64 65 66 61 75 6c 74 20  |ace the default |
00042510  63 6f 64 65 2e 0a 00 00  44 41 54 41 d6 00 00 00  |code....DATA....|
00042520  4f 53 5f 49 6e 74 4f 66  66 20 20 28 26 31 34 29  |OS_IntOff  (&14)|
00042530  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 54 68 69  |.#Parent OS_.Thi|
00042540  73 20 63 61 6c 6c 20 64  69 73 61 62 6c 65 73 20  |s call disables |
00042550  69 6e 74 65 72 72 75 70  74 73 20 61 6e 64 20 72  |interrupts and r|
00042560  65 74 75 72 6e 73 20 74  6f 20 63 61 6c 6c 65 72  |eturns to caller|
00042570  20 77 69 74 68 20 70 72  6f 63 65 73 73 6f 72 20  | with processor |
00042580  6d 6f 64 65 20 61 6e 64  20 72 65 67 69 73 74 65  |mode and registe|
00042590  72 73 20 75 6e 63 68 61  6e 67 65 64 2e 20 49 74  |rs unchanged. It|
000425a0  20 64 6f 65 73 20 74 68  69 73 20 62 65 20 73 77  | does this be sw|
000425b0  69 74 63 68 69 6e 67 20  74 68 65 20 63 6f 72 72  |itching the corr|
000425c0  65 73 70 6f 6e 64 69 6e  67 20 62 69 74 73 20 69  |esponding bits i|
000425d0  6e 20 74 68 65 20 3c 50  53 52 3d 3e 41 73 73 65  |n the <PSR=>Asse|
000425e0  6d 62 6c 79 3a 50 43 3e  20 6f 66 66 2e 0a 00 00  |mbly:PC> off....|
000425f0  44 41 54 41 d2 00 00 00  4f 53 5f 49 6e 74 4f 6e  |DATA....OS_IntOn|
00042600  20 20 28 26 31 33 29 0a  23 50 61 72 65 6e 74 20  |  (&13).#Parent |
00042610  4f 53 5f 0a 54 68 69 73  20 63 61 6c 6c 20 65 6e  |OS_.This call en|
00042620  61 62 6c 65 73 20 69 6e  74 65 72 72 75 70 74 73  |ables interrupts|
00042630  20 61 6e 64 20 72 65 74  75 72 6e 73 20 74 6f 20  | and returns to |
00042640  63 61 6c 6c 65 72 20 77  69 74 68 20 70 72 6f 63  |caller with proc|
00042650  65 73 73 6f 72 20 6d 6f  64 65 20 61 6e 64 20 72  |essor mode and r|
00042660  65 67 69 73 74 65 72 73  20 75 6e 63 68 61 6e 67  |egisters unchang|
00042670  65 64 2e 20 49 74 20 64  6f 65 73 20 74 68 69 73  |ed. It does this|
00042680  20 62 65 20 73 77 69 74  63 68 69 6e 67 20 74 68  | be switching th|
00042690  65 20 63 6f 72 72 65 73  70 6f 6e 64 69 6e 67 20  |e corresponding |
000426a0  62 69 74 73 20 69 6e 20  74 68 65 20 3c 50 53 52  |bits in the <PSR|
000426b0  3d 3e 41 73 73 65 6d 62  6c 79 3a 50 43 3e 20 6f  |=>Assembly:PC> o|
000426c0  6e 2e 00 00 44 41 54 41  86 00 00 00 4d 6f 75 73  |n...DATA....Mous|
000426d0  65 20 42 75 74 74 6f 6e  73 0a 42 69 74 09 4d 65  |e Buttons.Bit.Me|
000426e0  61 6e 69 6e 67 0a 23 4c  69 6e 65 3b 57 72 61 70  |aning.#Line;Wrap|
000426f0  20 4f 66 66 0a 30 09 52  69 67 68 74 20 62 75 74  | Off.0.Right but|
00042700  74 6f 6e 20 64 6f 77 6e  20 28 41 64 6a 75 73 74  |ton down (Adjust|
00042710  29 0a 31 09 4d 69 64 64  6c 65 20 62 75 74 74 6f  |).1.Middle butto|
00042720  6e 20 64 6f 77 6e 20 28  4d 65 6e 75 29 0a 32 09  |n down (Menu).2.|
00042730  4c 65 66 74 20 62 75 74  74 6f 6e 20 64 6f 77 6e  |Left button down|
00042740  20 28 53 65 6c 65 63 74  29 0a 00 00 44 41 54 41  | (Select)...DATA|
00042750  6c 00 00 00 4f 53 5f 4e  65 77 4c 69 6e 65 20 20  |l...OS_NewLine  |
00042760  28 26 30 33 29 0a 54 68  69 73 20 73 65 6e 64 73  |(&03).This sends|
00042770  20 61 20 6c 69 6e 65 20  66 65 65 64 20 66 6f 6c  | a line feed fol|
00042780  6c 6f 77 65 64 20 62 79  20 61 20 63 61 72 72 69  |lowed by a carri|
00042790  61 67 65 20 72 65 74 75  72 6e 20 74 6f 20 61 6c  |age return to al|
000427a0  6c 20 61 63 74 69 76 65  20 6f 75 74 70 75 74 20  |l active output |
000427b0  73 74 72 65 61 6d 73 2e  44 41 54 41 af 09 00 00  |streams.DATA....|
000427c0  4f 53 5f 50 72 65 74 74  79 50 72 69 6e 74 0a 23  |OS_PrettyPrint.#|
000427d0  50 61 72 65 6e 74 20 4f  53 5f 0a 57 72 69 74 65  |Parent OS_.Write|
000427e0  20 61 6e 20 69 6e 64 69  72 65 63 74 65 64 20 73  | an indirected s|
000427f0  74 72 69 6e 67 20 77 69  74 68 20 73 6f 6d 65 20  |tring with some |
00042800  66 6f 72 6d 61 74 74 69  6e 67 20 74 6f 20 61 6c  |formatting to al|
00042810  6c 20 6f 66 20 74 68 65  20 61 63 74 69 76 65 20  |l of the active |
00042820  6f 75 74 70 75 74 20 73  74 72 65 61 6d 73 2e 0a  |output streams..|
00042830  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
00042840  20 74 6f 20 6e 75 6c 6c  20 74 65 72 6d 69 6e 61  | to null termina|
00042850  74 65 64 20 73 74 72 69  6e 67 20 74 6f 20 77 72  |ted string to wr|
00042860  69 74 65 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |ite..R1 =.pointe|
00042870  72 20 74 6f 20 64 69 63  74 69 6f 6e 61 72 79 20  |r to dictionary |
00042880  28 30 20 3d 20 3c 52 49  53 43 20 4f 53 20 64 69  |(0 = <RISC OS di|
00042890  63 74 69 6f 6e 61 72 79  3d 3e 2e 52 4f 44 3e 29  |ctionary=>.ROD>)|
000428a0  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
000428b0  6f 20 6e 75 6c 6c 20 74  65 72 6d 69 6e 61 74 65  |o null terminate|
000428c0  64 20 73 70 65 63 69 61  6c 20 73 74 72 69 6e 67  |d special string|
000428d0  0a 3c 3d 09 52 30 2d 52  32 20 70 72 65 73 65 72  |.<=.R0-R2 preser|
000428e0  76 65 64 0a 0a 54 68 69  73 20 63 61 6c 6c 20 61  |ved..This call a|
000428f0  63 74 73 20 6c 69 6b 65  20 3c 4f 53 5f 57 72 69  |cts like <OS_Wri|
00042900  74 65 30 3e 20 77 69 74  68 20 73 65 76 65 72 61  |te0> with severa|
00042910  6c 20 64 69 66 66 65 72  65 6e 63 65 73 3a 0a 23  |l differences:.#|
00042920  49 6e 64 65 6e 74 20 32  0a 8f 20 73 65 76 65 72  |Indent 2.. sever|
00042930  61 6c 20 63 68 61 72 61  63 74 65 72 73 20 68 61  |al characters ha|
00042940  76 65 20 73 70 65 63 69  61 6c 20 6d 65 61 6e 69  |ve special meani|
00042950  6e 67 73 20 74 6f 20 4f  53 5f 50 72 65 74 74 79  |ngs to OS_Pretty|
00042960  50 72 69 6e 74 0a 8f 20  49 74 20 77 69 6c 6c 20  |Print.. It will |
00042970  62 72 65 61 6b 20 61 20  6c 69 6e 65 20 61 74 20  |break a line at |
00042980  61 20 73 70 61 63 65 20  69 66 20 74 68 65 20 6e  |a space if the n|
00042990  65 78 74 20 77 6f 72 64  20 77 69 6c 6c 20 6e 6f  |ext word will no|
000429a0  74 20 66 69 74 20 6f 6e  20 74 68 65 20 6c 69 6e  |t fit on the lin|
000429b0  65 2c 20 69 74 20 77 69  6c 6c 20 6e 6f 74 20 64  |e, it will not d|
000429c0  6f 20 74 68 69 73 20 61  74 20 68 61 72 64 20 73  |o this at hard s|
000429d0  70 61 63 65 0a 8f 20 43  6f 6d 70 61 63 74 65 64  |pace.. Compacted|
000429e0  20 74 65 78 74 20 69 73  20 68 61 6e 64 6c 65 64  | text is handled|
000429f0  0a 8f 20 43 52 20 63 61  75 73 65 73 20 61 20 6e  |.. CR causes a n|
00042a00  65 77 6c 69 6e 65 20 74  6f 20 62 65 20 67 65 6e  |ewline to be gen|
00042a10  65 72 61 74 65 64 0a 8f  20 54 41 42 20 63 61 75  |erated.. TAB cau|
00042a20  73 65 73 20 61 20 74 61  62 75 6c 61 74 69 6f 6e  |ses a tabulation|
00042a30  20 74 6f 20 74 68 65 20  6e 65 78 74 20 6d 75 6c  | to the next mul|
00042a40  74 69 70 6c 65 20 6f 66  20 65 69 67 68 74 20 63  |tiple of eight c|
00042a50  68 61 72 73 0a 8f 20 41  53 43 49 49 20 33 31 20  |hars.. ASCII 31 |
00042a60  69 73 20 61 20 68 61 72  64 20 73 70 61 63 65 0a  |is a hard space.|
00042a70  8f 20 45 53 43 20 28 41  53 43 49 49 20 32 37 29  |. ESC (ASCII 27)|
00042a80  20 69 6e 64 69 63 61 74  65 73 20 74 68 61 74 20  | indicates that |
00042a90  61 20 64 69 63 74 69 6f  6e 61 72 79 20 65 6e 74  |a dictionary ent|
00042aa0  72 79 20 73 68 6f 75 6c  64 20 62 65 20 73 75 62  |ry should be sub|
00042ab0  73 74 69 74 75 74 65 64  0a 23 49 6e 64 65 6e 74  |stituted.#Indent|
00042ac0  0a 0a 43 6f 6d 70 61 63  74 65 64 20 74 65 78 74  |..Compacted text|
00042ad0  20 75 73 65 73 20 61 6e  20 65 73 63 61 70 65 20  | uses an escape |
00042ae0  63 68 61 72 61 63 74 65  72 20 69 6e 20 74 68 65  |character in the|
00042af0  20 70 72 69 6e 74 20 73  74 72 69 6e 67 20 74 6f  | print string to|
00042b00  20 69 6e 64 69 63 61 74  65 20 61 20 64 69 63 74  | indicate a dict|
00042b10  69 6f 6e 61 72 79 20 65  6e 74 72 79 2e 20 49 74  |ionary entry. It|
00042b20  20 69 73 20 66 6f 6c 6c  6f 77 65 64 20 69 6d 6d  | is followed imm|
00042b30  65 64 69 61 74 65 6c 79  20 62 79 20 61 20 62 79  |ediately by a by|
00042b40  74 65 20 77 68 69 63 68  20 69 73 20 74 68 65 20  |te which is the |
00042b50  64 69 63 74 69 6f 6e 61  72 79 20 65 6e 74 72 79  |dictionary entry|
00042b60  20 6e 75 6d 62 65 72 2e  20 49 66 20 74 68 69 73  | number. If this|
00042b70  20 62 79 74 65 20 69 73  20 69 6e 20 74 68 65 20  | byte is in the |
00042b80  72 61 6e 67 65 20 31 2d  32 35 35 2c 20 74 68 65  |range 1-255, the|
00042b90  6e 20 74 68 65 20 61 70  70 72 6f 70 72 69 61 74  |n the appropriat|
00042ba0  65 20 73 74 72 69 6e 67  20 69 6e 20 74 68 65 20  |e string in the |
00042bb0  64 69 63 74 69 6f 6e 61  72 79 20 69 73 20 73 75  |dictionary is su|
00042bc0  62 73 69 74 75 74 65 64  2e 20 49 66 20 69 74 73  |bsituted. If its|
00042bd0  20 30 2c 20 74 68 65 6e  20 74 68 65 20 73 70 65  | 0, then the spe|
00042be0  63 69 61 6c 20 73 74 72  69 6e 67 20 70 6f 69 6e  |cial string poin|
00042bf0  74 65 64 20 74 6f 20 62  79 20 52 32 20 69 73 20  |ted to by R2 is |
00042c00  73 75 62 73 69 74 75 74  65 64 2e 20 28 54 68 69  |subsituted. (Thi|
00042c10  73 20 69 73 20 75 73 65  64 20 69 6e 20 70 61 72  |s is used in par|
00042c20  74 69 63 75 6c 61 72 20  62 79 20 74 68 65 20 2a  |ticular by the *|
00042c30  48 65 6c 70 20 63 6f 6d  6d 61 6e 64 2e 29 0a 0a  |Help command.)..|
00042c40  54 68 65 20 66 6f 72 6d  61 74 20 6f 66 20 61 6e  |The format of an|
00042c50  20 64 69 63 74 69 6f 6e  61 72 79 20 69 73 20 61  | dictionary is a|
00042c60  20 6c 69 6e 65 61 72 20  6c 69 73 74 20 6f 66 20  | linear list of |
00042c70  65 6e 74 72 69 65 73 2c  20 77 68 69 63 68 20 63  |entries, which c|
00042c80  61 6e 20 72 65 63 75 72  73 69 76 65 6c 79 20 72  |an recursively r|
00042c90  65 66 65 72 20 74 6f 20  6f 74 68 65 72 20 64 69  |efer to other di|
00042ca0  63 74 69 6f 6e 61 72 79  20 65 6e 74 72 69 65 73  |ctionary entries|
00042cb0  3b 20 65 61 63 68 20 65  6e 74 72 79 20 69 73 20  |; each entry is |
00042cc0  61 20 6c 65 6e 67 74 68  20 62 79 74 65 20 66 6f  |a length byte fo|
00042cd0  6c 6c 6f 77 65 64 20 62  79 20 61 20 30 20 74 65  |llowed by a 0 te|
00042ce0  72 6d 69 6e 61 74 65 64  20 73 74 72 69 6e 67 2e  |rminated string.|
00042cf0  20 54 68 69 73 20 6d 65  61 6e 73 2c 20 74 68 61  | This means, tha|
00042d00  74 20 61 20 64 69 63 74  69 6f 6e 61 72 79 20 64  |t a dictionary d|
00042d10  6f 65 73 6e 27 74 20 68  61 76 65 20 74 6f 20 68  |oesn't have to h|
00042d20  61 76 65 20 32 35 35 20  65 6e 74 72 69 65 73 2e  |ave 255 entries.|
00042d30  20 49 74 20 63 61 6e 20  62 65 20 65 6e 64 65 64  | It can be ended|
00042d40  20 61 74 20 61 20 70 6f  69 6e 74 20 77 69 74 68  | at a point with|
00042d50  20 61 20 7a 65 72 6f 20  6c 65 6e 67 74 68 20 65  | a zero length e|
00042d60  6e 74 72 79 2e 0a 23 53  75 62 70 61 67 65 20 52  |ntry..#Subpage R|
00042d70  4f 44 0a 52 49 53 43 20  4f 53 20 64 65 66 61 75  |OD.RISC OS defau|
00042d80  6c 74 20 64 69 63 74 69  6f 6e 61 72 79 0a 23 50  |lt dictionary.#P|
00042d90  61 72 65 6e 74 20 4f 53  5f 50 72 65 74 74 79 50  |arent OS_PrettyP|
00042da0  72 69 6e 74 0a 54 6f 6b  65 6e 09 53 74 72 69 6e  |rint.Token.Strin|
00042db0  67 0a 23 4c 69 6e 65 0a  30 09 52 32 0a 31 09 22  |g.#Line.0.R2.1."|
00042dc0  53 79 6e 74 61 78 3a 20  2a 22 20 2b 20 52 32 0a  |Syntax: *" + R2.|
00042dd0  32 09 22 20 74 68 65 20  22 0a 33 09 22 64 69 72  |2." the ".3."dir|
00042de0  65 63 74 6f 72 22 0a 34  09 22 66 69 6c 69 6e 67  |ector".4."filing|
00042df0  20 73 79 73 74 65 6d 22  0a 35 09 22 63 75 72 72  | system".5."curr|
00042e00  65 6e 74 22 0a 36 09 22  20 74 6f 20 61 20 76 61  |ent".6." to a va|
00042e10  72 69 62 6c 65 2e 20 4f  74 68 65 72 20 74 79 70  |rible. Other typ|
00042e20  65 73 20 6f 66 20 76 61  6c 75 65 73 20 63 61 6e  |es of values can|
00042e30  20 62 65 20 61 73 73 69  67 6e 65 64 20 77 69 74  | be assigned wit|
00042e40  68 20 2a 22 0a 37 09 22  66 69 6c 65 22 0a 38 09  |h *".7."file".8.|
00042e50  22 64 65 66 61 75 6c 74  22 0a 39 09 22 74 69 6f  |"default".9."tio|
00042e60  6e 22 0a 31 30 09 22 2a  43 6f 6e 66 69 67 75 72  |n".10."*Configur|
00042e70  65 22 0a 31 31 09 22 6e  61 6d 65 22 0a 31 32 09  |e".11."name".12.|
00042e80  22 20 73 65 72 76 65 72  22 0a 31 33 09 22 6e 75  |" server".13."nu|
00042e90  6d 62 65 72 22 0a 31 34  09 22 53 79 6e 74 61 78  |mber".14."Syntax|
00042ea0  20 2a 22 20 2b 20 52 32  20 2b 20 22 20 5c 3c 22  | *" + R2 + " \<"|
00042eb0  0a 31 35 09 22 20 6f 6e  65 20 6f 72 20 6d 6f 72  |.15." one or mor|
00042ec0  65 20 66 69 6c 65 73 20  74 68 61 74 20 6d 61 74  |e files that mat|
00042ed0  63 68 20 74 68 65 20 67  69 76 65 6e 20 77 69 6c  |ch the given wil|
00042ee0  64 63 61 72 64 22 0a 31  36 09 22 20 61 6e 64 20  |dcard".16." and |
00042ef0  22 0a 31 37 09 22 72 65  6c 6f 63 61 74 61 62 6c  |".17."relocatabl|
00042f00  65 20 6d 6f 64 75 6c 65  22 0a 31 38 09 43 52 20  |e module".18.CR |
00042f10  2b 20 22 43 28 6f 6e 66  69 72 6d 29 22 20 2b 20  |+ "C(onfirm)" + |
00042f20  54 41 42 20 2b 20 22 70  72 6f 6d 70 74 20 66 6f  |TAB + "prompt fo|
00042f30  72 20 63 6f 6e 66 6f 72  6d 61 74 69 6f 6e 20 6f  |r conformation o|
00042f40  66 20 65 61 63 68 22 0a  31 39 09 22 73 65 74 73  |f each".19."sets|
00042f50  20 74 68 65 22 0a 32 30  09 22 53 79 6e 74 61 78  | the".20."Syntax|
00042f60  3a 20 2a 22 20 2b 20 52  32 20 2b 20 22 20 5b 5c  |: *" + R2 + " [\|
00042f70  3c 64 69 73 63 20 73 70  65 63 2e 3e 5d 0a 32 31  |<disc spec.>].21|
00042f80  09 22 29 22 20 2b 20 43  52 20 2b 20 22 56 28 65  |.")" + CR + "V(e|
00042f90  72 62 6f 73 65 29 22 20  2b 20 54 41 42 20 2b 20  |rbose)" + TAB + |
00042fa0  22 70 72 69 6e 74 20 69  6e 66 6f 72 6d 61 74 69  |"print informati|
00042fb0  6f 6e 20 6f 6e 20 65 61  63 68 20 66 69 6c 65 20  |on on each file |
00042fc0  22 0a 32 33 09 22 73 70  72 69 74 65 4c 61 6e 64  |".23."spriteLand|
00042fd0  73 63 61 70 65 20 5b 5c  3c 58 53 63 61 6c 65 3e  |scape [\<XScale>|
00042fe0  20 5b 5c 3c 59 53 63 61  6c 65 3e 20 5b 5c 3c 4d  | [\<YScale> [\<M|
00042ff0  61 72 67 69 6e 3e 20 5b  5c 3c 54 72 65 73 68 6f  |argin> [\<Tresho|
00043000  6c 64 3e 5d 5d 5d 5d 22  0a 32 34 09 22 a0 69 73  |ld>]]]]".24.".is|
00043010  20 75 73 65 64 20 74 6f  20 70 72 69 6e 74 20 61  | used to print a|
00043020  20 68 61 72 64 20 63 6f  70 79 20 6f 66 20 74 68  | hard copy of th|
00043030  65 20 73 63 72 65 65 6e  20 6f 6e 20 45 50 53 4f  |e screen on EPSO|
00043040  4e 2d 22 0a 32 35 09 22  2e 22 20 2b 20 43 52 20  |N-".25."." + CR |
00043050  2b 20 22 4f 70 74 69 6f  6e 73 3a 20 28 75 73 65  |+ "Options: (use|
00043060  20 7e 20 74 6f 20 66 6f  72 63 65 20 6f 66 66 2c  | ~ to force off,|
00043070  20 65 67 2e 20 7e 22 0a  32 36 09 22 70 72 69 6e  | eg. ~".26."prin|
00043080  74 65 22 0a 32 37 09 22  53 79 6e 74 61 78 3a 20  |te".27."Syntax: |
00043090  2a 22 20 2b 20 52 32 20  2b 20 22 20 5c 3c 66 69  |*" + R2 + " \<fi|
000430a0  6c 65 6e 61 6d 65 3e 22  0a 32 38 09 22 73 65 6c  |lename>".28."sel|
000430b0  65 63 74 22 0a 32 39 09  22 78 70 72 65 73 73 69  |ect".29."xpressi|
000430c0  6f 6e 22 0a 33 30 09 22  53 79 6e 74 61 78 3a 20  |on".30."Syntax: |
000430d0  2a 22 20 2b 20 52 32 20  2b 20 22 20 5b 22 0a 33  |*" + R2 + " [".3|
000430e0  31 09 22 73 70 72 69 74  65 22 0a 33 32 09 22 20  |1."sprite".32." |
000430f0  64 69 73 70 6c 61 79 73  22 0a 33 33 09 22 66 72  |displays".33."fr|
00043100  65 65 20 73 70 61 63 65  22 0a 33 34 09 22 20 28  |ee space".34." (|
00043110  6f 66 66 29 22 0a 33 35  09 22 6c 69 62 72 61 72  |off)".35."librar|
00043120  79 22 0a 33 36 09 22 70  61 72 61 6d 65 74 65 72  |y".36."parameter|
00043130  22 0a 33 37 09 22 6f 62  6a 65 63 74 22 0a 33 38  |".37."object".38|
00043140  09 22 20 61 6c 6c 20 22  0a 33 39 09 22 64 69 73  |." all ".39."dis|
00043150  63 22 0a 34 30 09 22 20  74 6f 20 22 0a 34 31 09  |c".40." to ".41.|
00043160  22 20 69 73 20 22 0a 00  44 41 54 41 14 01 00 00  |" is "..DATA....|
00043170  4f 53 5f 50 72 69 6e 74  43 68 61 72 20 20 28 26  |OS_PrintChar  (&|
00043180  35 44 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |5D).#Parent OS_.|
00043190  3d 3e 09 52 30 20 3d 09  63 68 61 72 61 63 74 65  |=>.R0 =.characte|
000431a0  72 20 74 6f 20 70 72 69  6e 74 0a 3c 3d 09 52 30  |r to print.<=.R0|
000431b0  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
000431c0  20 63 61 6c 6c 20 73 65  6e 64 73 20 61 20 63 68  | call sends a ch|
000431d0  61 72 61 63 74 65 72 20  74 6f 20 74 68 65 20 70  |aracter to the p|
000431e0  72 69 6e 74 65 72 2e 20  4f 53 5f 42 79 74 65 20  |rinter. OS_Byte |
000431f0  33 20 61 6e 64 20 35 20  63 6f 6e 74 72 6f 6c 20  |3 and 5 control |
00043200  77 68 65 74 68 65 72 20  74 68 65 72 65 20 69 73  |whether there is|
00043210  20 61 20 70 72 69 6e 74  65 72 20 73 65 6c 65 63  | a printer selec|
00043220  74 65 64 20 61 6e 64 20  77 68 69 63 68 20 64 65  |ted and which de|
00043230  76 69 63 65 20 69 74 20  69 73 2e 20 4e 6f 74 65  |vice it is. Note|
00043240  20 74 68 61 74 20 74 68  65 20 70 72 69 6e 74 65  | that the printe|
00043250  72 20 69 67 6e 6f 72 65  20 63 68 61 72 61 63 74  |r ignore charact|
00043260  65 72 20 69 73 20 6e 6f  74 20 75 73 65 64 20 62  |er is not used b|
00043270  79 20 74 68 69 73 20 63  61 6c 6c 2e 44 41 54 41  |y this call.DATA|
00043280  9f 03 00 00 4f 53 5f 52  65 6c 65 61 73 65 44 65  |....OS_ReleaseDe|
00043290  76 69 63 65 56 65 63 74  6f 72 20 28 26 34 43 29  |viceVector (&4C)|
000432a0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
000432b0  52 30 20 3d 09 3c 64 65  76 69 63 65 20 6e 75 6d  |R0 =.<device num|
000432c0  62 65 72 3d 3e 4f 53 5f  73 79 73 74 65 6d 64 65  |ber=>OS_systemde|
000432d0  76 69 63 65 73 3e 0a 09  52 31 20 3d 09 61 64 64  |vices>..R1 =.add|
000432e0  72 65 73 73 20 6f 66 20  64 65 76 69 63 65 20 64  |ress of device d|
000432f0  72 69 76 65 72 20 72 6f  75 74 69 6e 65 0a 09 52  |river routine..R|
00043300  32 20 3d 09 76 61 6c 75  65 20 74 6f 20 62 65 20  |2 =.value to be |
00043310  70 61 73 73 65 64 20 69  6e 20 52 31 32 20 77 68  |passed in R12 wh|
00043320  65 6e 20 64 72 69 76 65  72 20 69 73 20 63 61 6c  |en driver is cal|
00043330  6c 65 64 0a 09 52 33 20  3d 09 61 64 64 72 65 73  |led..R3 =.addres|
00043340  73 20 6f 66 20 69 6e 74  65 72 72 75 70 74 20 73  |s of interrupt s|
00043350  74 61 74 75 73 20 69 66  20 52 30 20 3d 20 38 20  |tatus if R0 = 8 |
00043360  6f 72 20 31 33 20 6f 6e  20 65 6e 74 72 79 0a 09  |or 13 on entry..|
00043370  52 34 20 3d 09 69 6e 74  65 72 72 75 70 74 20 6d  |R4 =.interrupt m|
00043380  61 73 6b 20 74 6f 20 75  73 65 2c 20 69 66 20 52  |ask to use, if R|
00043390  30 20 3d 20 38 20 6f 72  20 31 33 20 6f 6e 20 65  |0 = 8 or 13 on e|
000433a0  6e 74 72 79 0a 0a 3c 3d  09 52 30 2d 52 34 20 70  |ntry..<=.R0-R4 p|
000433b0  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 72  |reserved..This r|
000433c0  65 6d 6f 76 65 73 20 61  20 64 72 69 76 65 72 20  |emoves a driver |
000433d0  66 72 6f 6d 20 74 68 65  20 6c 69 73 74 20 6f 66  |from the list of|
000433e0  20 63 6c 61 69 6d 61 6e  74 73 20 6f 66 20 61 20  | claimants of a |
000433f0  64 65 76 69 63 65 20 76  65 63 74 6f 72 2e 20 54  |device vector. T|
00043400  68 65 20 64 65 76 69 63  65 20 76 65 63 74 6f 72  |he device vector|
00043410  20 69 73 20 69 64 65 6e  74 69 66 69 65 64 20 62  | is identified b|
00043420  79 20 74 68 65 20 63 6f  6e 74 65 6e 74 73 20 6f  |y the contents o|
00043430  66 20 74 68 65 20 72 65  67 69 73 74 65 72 20 6f  |f the register o|
00043440  6e 20 65 6e 74 72 79 3b  20 52 30 2d 52 32 20 28  |n entry; R0-R2 (|
00043450  52 30 2d 52 34 20 69 66  20 52 30 20 3d 20 38 20  |R0-R4 if R0 = 8 |
00043460  6f 72 20 31 33 20 6f 6e  20 65 6e 74 72 79 29 20  |or 13 on entry) |
00043470  6d 75 73 74 20 62 65 20  74 68 65 20 73 61 6d 65  |must be the same|
00043480  20 61 73 20 77 68 65 6e  20 74 68 65 20 76 65 63  | as when the vec|
00043490  74 6f 72 20 77 61 73 20  63 6c 61 69 6d 65 64 2e  |tor was claimed.|
000434a0  0a 0a 54 68 65 20 70 72  65 76 69 6f 75 73 20 76  |..The previous v|
000434b0  65 63 74 6f 72 20 6f 77  6e 65 72 20 69 73 20 72  |ector owner is r|
000434c0  65 2d 69 6e 73 74 61 6c  6c 65 64 20 61 74 20 74  |e-installed at t|
000434d0  68 65 20 68 65 61 64 20  6f 66 20 74 68 65 20 63  |he head of the c|
000434e0  68 61 69 6e 2e 20 49 66  20 74 68 65 72 65 20 69  |hain. If there i|
000434f0  73 20 6e 6f 20 70 72 65  76 69 6f 75 73 20 6f 77  |s no previous ow|
00043500  6e 65 72 2c 20 74 68 65  6e 20 74 68 65 20 49 52  |ner, then the IR|
00043510  51 73 20 66 72 6f 6d 20  74 68 65 20 63 6f 72 72  |Qs from the corr|
00043520  65 73 70 6f 6e 64 69 6e  67 20 64 65 76 69 63 65  |esponding device|
00043530  20 61 72 65 20 64 69 73  61 62 6c 65 64 2e 0a 0a  | are disabled...|
00043540  59 6f 75 20 6d 75 73 74  20 6e 6f 74 20 61 74 74  |You must not att|
00043550  65 6d 70 74 20 74 6f 20  64 69 73 61 62 6c 65 20  |empt to disable |
00043560  61 20 64 65 76 69 63 65  27 73 20 49 52 51 73 20  |a device's IRQs |
00043570  77 69 74 68 69 6e 20 49  4f 43 20 77 68 65 6e 20  |within IOC when |
00043580  79 6f 75 20 72 65 6c 65  61 73 65 20 69 74 73 20  |you release its |
00043590  76 65 63 74 6f 72 2e 20  46 6f 72 20 65 78 70 61  |vector. For expa|
000435a0  6e 73 69 6f 6e 20 63 61  72 64 20 49 52 51 73 2c  |nsion card IRQs,|
000435b0  20 79 6f 75 20 73 68 6f  75 6c 64 20 70 72 65 76  | you should prev|
000435c0  65 6e 74 20 79 6f 75 72  20 64 65 76 69 63 65 20  |ent your device |
000435d0  66 72 6f 6d 20 69 6e 74  65 72 72 75 70 74 69 6e  |from interruptin|
000435e0  67 20 61 67 61 69 6e 20  62 79 20 70 72 6f 67 72  |g again by progr|
000435f0  61 6d 6d 69 6e 67 20 74  68 65 20 68 61 72 64 77  |amming the hardw|
00043600  61 72 65 20 6f 6e 20 79  6f 75 72 20 65 78 70 61  |are on your expa|
00043610  6e 73 69 6f 6e 20 63 61  72 64 2e 00 44 41 54 41  |nsion card..DATA|
00043620  0b 01 00 00 4f 53 5f 52  65 6c 69 6e 6b 41 70 70  |....OS_RelinkApp|
00043630  6c 69 63 61 74 69 6f 6e  20 20 28 26 34 45 29 0a  |lication  (&4E).|
00043640  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
00043650  30 20 3d 20 70 6f 69 6e  74 65 72 20 74 6f 20 62  |0 = pointer to b|
00043660  75 66 66 65 72 0a 3c 3d  09 52 30 20 70 72 65 73  |uffer.<=.R0 pres|
00043670  65 72 76 65 64 0a 0a 57  68 65 6e 20 61 6e 20 61  |erved..When an a|
00043680  70 70 6c 69 63 61 74 69  6f 6e 20 69 73 20 67 6f  |pplication is go|
00043690  69 6e 67 20 74 6f 20 62  65 20 73 77 61 70 70 65  |ing to be swappe|
000436a0  64 20 69 6e 2c 20 61 6c  6c 20 76 65 63 74 6f 72  |d in, all vector|
000436b0  73 20 74 68 61 74 20 69  74 20 75 73 65 73 20 6d  |s that it uses m|
000436c0  75 73 74 20 62 65 20 72  65 73 74 6f 72 65 64 2e  |ust be restored.|
000436d0  20 52 30 20 70 6f 69 6e  74 73 20 74 6f 20 61 20  | R0 points to a |
000436e0  62 75 66 66 65 72 2c 20  77 68 69 63 68 20 68 61  |buffer, which ha|
000436f0  73 20 70 72 65 76 69 6f  75 73 6c 79 20 62 65 65  |s previously bee|
00043700  6e 20 63 72 65 61 74 65  64 20 75 73 69 6e 67 20  |n created using |
00043710  3c 4f 53 5f 44 65 6c 69  6e 6b 41 70 70 6c 69 63  |<OS_DelinkApplic|
00043720  61 74 69 6f 6e 3e 2e 00  44 41 54 41 22 01 00 00  |ation>..DATA"...|
00043730  4f 53 5f 52 65 6d 6f 76  65 43 75 72 73 6f 72 73  |OS_RemoveCursors|
00043740  20 20 28 26 33 36 29 0a  23 50 61 72 65 6e 74 20  |  (&36).#Parent |
00043750  4f 53 5f 0a 54 68 69 73  20 63 61 6c 6c 20 72 65  |OS_.This call re|
00043760  6d 6f 76 65 73 20 74 68  65 20 63 75 72 73 6f 72  |moves the cursor|
00043770  73 20 28 6f 75 74 70 75  74 20 61 6e 64 20 63 6f  |s (output and co|
00043780  70 79 2c 20 69 66 20 61  63 74 69 76 65 29 20 66  |py, if active) f|
00043790  72 6f 6d 20 74 68 65 20  73 63 72 65 65 6e 2c 20  |rom the screen, |
000437a0  73 61 76 69 6e 67 20 74  68 65 20 6f 6c 64 20 73  |saving the old s|
000437b0  74 61 74 65 20 6f 6e 20  61 6e 20 69 6e 74 65 72  |tate on an inter|
000437c0  6e 61 6c 20 73 74 61 63  6b 20 66 6f 72 20 66 75  |nal stack for fu|
000437d0  72 74 68 65 72 20 72 65  63 6f 76 65 72 69 6e 67  |rther recovering|
000437e0  2e 20 54 68 69 73 20 63  61 6c 6c 20 6d 75 73 74  |. This call must|
000437f0  20 62 65 20 62 61 6c 61  6e 63 65 64 20 62 79 20  | be balanced by |
00043800  63 61 6c 6c 69 6e 67 20  3c 4f 53 5f 52 65 73 74  |calling <OS_Rest|
00043810  6f 72 65 43 75 72 73 6f  72 73 3e 20 6c 61 74 65  |oreCursors> late|
00043820  72 20 68 6f 77 65 76 65  72 2c 20 74 68 65 20 65  |r however, the e|
00043830  78 69 74 20 68 61 6e 64  6c 65 72 20 70 72 6f 76  |xit handler prov|
00043840  69 64 65 73 20 74 68 69  73 2e 00 00 44 41 54 41  |ides this...DATA|
00043850  8c 00 00 00 4f 53 5f 52  65 73 74 6f 72 65 43 75  |....OS_RestoreCu|
00043860  72 73 6f 72 73 20 20 28  26 33 37 29 0a 23 50 61  |rsors  (&37).#Pa|
00043870  72 65 6e 74 20 4f 53 5f  0a 54 68 69 73 20 72 65  |rent OS_.This re|
00043880  73 74 6f 72 65 73 20 74  68 65 20 63 75 72 73 6f  |stores the curso|
00043890  72 20 73 74 61 74 65 20  70 72 65 76 69 6f 75 73  |r state previous|
000438a0  6c 79 20 73 61 76 65 64  20 6f 6e 20 74 68 65 20  |ly saved on the |
000438b0  69 6e 74 65 72 6e 61 6c  20 73 74 61 63 6b 20 75  |internal stack u|
000438c0  73 69 6e 67 20 3c 4f 53  5f 52 65 6d 6f 76 65 43  |sing <OS_RemoveC|
000438d0  75 72 73 6f 72 73 3e 2e  44 41 54 41 40 01 00 00  |ursors>.DATA@...|
000438e0  4f 53 5f 53 65 72 69 61  6c 4f 70 20 30 0a 3d 3e  |OS_SerialOp 0.=>|
000438f0  09 52 30 20 3d 09 30 20  28 72 65 61 73 6f 6e 20  |.R0 =.0 (reason |
00043900  63 6f 64 65 29 0a 09 52  31 20 3d 09 45 4f 52 20  |code)..R1 =.EOR |
00043910  6d 61 73 6b 0a 09 52 32  20 3d 09 41 4e 44 20 6d  |mask..R2 =.AND m|
00043920  61 73 6b 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |ask..<=.R0 prese|
00043930  72 76 65 64 0a 09 52 31  20 3d 09 6f 6c 64 20 76  |rved..R1 =.old v|
00043940  61 6c 75 65 20 6f 66 20  73 74 61 74 65 0a 09 52  |alue of state..R|
00043950  32 20 3d 09 6e 65 77 20  76 61 6c 75 65 20 6f 66  |2 =.new value of|
00043960  20 73 74 61 74 65 0a 0a  54 68 65 20 73 74 72 75  | state..The stru|
00043970  63 74 75 72 65 20 6f 66  20 74 68 69 73 20 63 61  |cture of this ca|
00043980  6c 6c 20 69 73 20 76 65  72 79 20 73 69 6d 69 6c  |ll is very simil|
00043990  61 72 20 74 6f 20 74 68  61 74 20 6f 66 20 4f 53  |ar to that of OS|
000439a0  5f 42 79 74 65 27 73 20  62 65 74 77 65 65 6e 20  |_Byte's between |
000439b0  26 41 36 20 61 6e 64 20  26 46 46 20 74 68 65 20  |&A6 and &FF the |
000439c0  6e 65 77 20 73 74 61 74  65 20 69 73 20 64 65 74  |new state is det|
000439d0  65 72 6d 69 6e 65 64 20  62 79 3a 0a 20 20 3c 4e  |ermined by:.  <N|
000439e0  65 77 20 53 74 61 74 65  3d 3e 4f 53 5f 53 65 72  |ew State=>OS_Ser|
000439f0  69 61 6c 4f 70 53 74 61  74 75 73 3e 20 3d 20 28  |ialOpStatus> = (|
00043a00  4f 6c 64 20 73 74 61 74  65 20 41 4e 44 20 52 32  |Old state AND R2|
00043a10  29 20 45 4f 52 20 52 31  44 41 54 41 4c 0a 00 00  |) EOR R1DATAL...|
00043a20  53 65 72 69 61 6c 20 73  74 61 74 75 73 20 77 6f  |Serial status wo|
00043a30  72 64 0a 42 69 74 09 54  79 70 65 09 56 61 6c 75  |rd.Bit.Type.Valu|
00043a40  65 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 0a  |e.Meaning.#Line.|
00043a50  30 09 52 2f 57 09 30 09  4e 6f 20 73 6f 66 74 77  |0.R/W.0.No softw|
00043a60  61 72 65 20 63 6f 6e 74  72 6f 6c 2e 20 55 73 65  |are control. Use|
00043a70  20 52 54 53 20 68 61 6e  64 73 68 61 6b 69 6e 67  | RTS handshaking|
00043a80  20 69 66 20 62 69 74 20  35 20 69 73 20 63 6c 65  | if bit 5 is cle|
00043a90  61 72 0a 09 20 09 31 09  55 73 65 20 58 4f 4e 2f  |ar.. .1.Use XON/|
00043aa0  58 4f 46 46 20 70 72 6f  74 6f 63 6f 6c 2e 20 42  |XOFF protocol. B|
00043ab0  69 74 20 35 20 69 73 20  69 67 6e 6f 72 65 64 2e  |it 5 is ignored.|
00043ac0  20 54 68 65 20 68 61 72  64 77 61 72 65 20 77 69  | The hardware wi|
00043ad0  6c 6c 20 73 74 69 6c 6c  20 64 6f 20 43 54 53 20  |ll still do CTS |
00043ae0  68 61 6e 64 73 68 61 6b  69 6e 67 20 28 69 65 20  |handshaking (ie |
00043af0  69 66 20 43 54 53 20 67  6f 65 73 20 6c 6f 77 2c  |if CTS goes low,|
00043b00  20 74 68 65 6e 20 74 72  61 6e 73 6d 69 73 73 69  | then transmissi|
00043b10  6f 6e 20 77 69 6c 6c 20  73 74 6f 70 29 2c 20 62  |on will stop), b|
00043b20  75 74 20 52 54 53 20 69  73 20 66 6f 72 63 65 64  |ut RTS is forced|
00043b30  20 74 6f 20 67 6f 20 6c  6f 77 2e 0a 09 20 09 0a  | to go low... ..|
00043b40  31 09 52 2f 57 09 30 09  55 73 65 20 74 68 65 20  |1.R/W.0.Use the |
00043b50  7e 44 43 44 20 62 69 74  2e 20 49 66 20 74 68 65  |~DCD bit. If the|
00043b60  20 7e 44 43 44 20 62 69  74 20 69 6e 20 74 68 65  | ~DCD bit in the|
00043b70  20 73 74 61 74 75 73 20  72 65 67 69 73 74 65 72  | status register|
00043b80  20 67 6f 65 73 20 68 69  67 68 2c 20 74 68 65 6e  | goes high, then|
00043b90  20 63 61 75 73 65 20 61  20 73 65 72 69 61 6c 20  | cause a serial |
00043ba0  65 76 65 6e 74 2c 20 61  6e 64 20 64 6f 20 6e 6f  |event, and do no|
00043bb0  74 20 65 6e 74 65 72 20  74 68 65 20 63 68 61 72  |t enter the char|
00043bc0  20 69 6e 74 6f 20 74 68  65 20 62 75 66 66 65 72  | into the buffer|
00043bd0  2e 0a 09 20 09 31 09 49  67 6e 6f 72 65 20 74 68  |... .1.Ignore th|
00043be0  65 20 7e 44 43 44 20 62  69 74 2e 20 4e 6f 74 65  |e ~DCD bit. Note|
00043bf0  20 74 68 61 74 20 73 6f  6d 65 20 73 65 72 69 61  | that some seria|
00043c00  6c 20 63 68 69 70 73 20  28 47 54 45 20 61 6e 64  |l chips (GTE and|
00043c10  20 43 4d 44 29 20 68 61  76 65 20 72 65 63 65 70  | CMD) have recep|
00043c20  74 69 6f 6e 20 61 6e 64  20 74 72 61 6e 73 6d 69  |tion and transmi|
00043c30  73 73 69 6f 6e 20 70 72  6f 62 6c 65 6d 73 20 77  |ssion problems w|
00043c40  68 65 6e 20 74 68 69 73  20 62 69 74 20 69 73 20  |hen this bit is |
00043c50  31 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |1.              |
00043c60  20 20 20 0a 32 09 52 2f  57 09 30 09 55 73 65 20  |   .2.R/W.0.Use |
00043c70  74 68 65 20 7e 44 53 52  20 62 69 74 2e 20 49 66  |the ~DSR bit. If|
00043c80  20 74 68 65 20 7e 44 53  52 20 62 69 74 20 69 6e  | the ~DSR bit in|
00043c90  20 74 68 65 20 73 74 61  74 75 73 20 72 65 67 69  | the status regi|
00043ca0  73 74 65 72 20 69 73 20  68 69 67 68 2c 20 74 68  |ster is high, th|
00043cb0  65 6e 20 64 6f 20 6e 6f  74 20 74 72 61 6e 73 6d  |en do not transm|
00043cc0  69 74 20 63 68 61 72 61  63 74 65 72 73 2e 0a 09  |it characters...|
00043cd0  20 09 31 09 49 67 6e 6f  72 65 20 74 68 65 20 73  | .1.Ignore the s|
00043ce0  74 61 74 65 20 6f 66 20  74 68 65 20 7e 44 53 52  |tate of the ~DSR|
00043cf0  20 62 69 74 0a 20 20 20  20 20 20 20 20 20 20 20  | bit.           |
00043d00  20 20 20 20 20 20 0a 33  09 52 2f 57 09 30 09 44  |      .3.R/W.0.D|
00043d10  54 52 20 6f 6e 20 28 6e  6f 72 6d 61 6c 20 6f 70  |TR on (normal op|
00043d20  65 72 61 74 69 6f 6e 29  0a 09 20 09 31 09 44 54  |eration).. .1.DT|
00043d30  52 20 6f 66 66 20 28 6f  6e 20 36 35 35 31 20 73  |R off (on 6551 s|
00043d40  65 72 69 61 6c 20 63 68  69 70 73 2c 20 63 61 6e  |erial chips, can|
00043d50  6e 6f 74 20 75 73 65 20  73 65 72 69 61 6c 20 70  |not use serial p|
00043d60  6f 72 74 20 69 6e 20 74  68 69 73 20 73 74 61 74  |ort in this stat|
00043d70  65 29 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |e).             |
00043d80  20 20 20 20 0a 34 09 52  2f 57 09 30 09 55 73 65  |    .4.R/W.0.Use|
00043d90  20 74 68 65 20 7e 43 54  53 20 62 69 74 2e 20 49  | the ~CTS bit. I|
00043da0  66 20 74 68 65 20 7e 43  54 53 20 62 69 74 20 69  |f the ~CTS bit i|
00043db0  6e 20 74 68 65 20 73 74  61 74 75 73 20 72 65 67  |n the status reg|
00043dc0  69 73 74 65 72 20 69 73  20 68 69 67 68 2c 20 74  |ister is high, t|
00043dd0  68 65 6e 20 64 6f 20 6e  6f 74 20 74 72 61 6e 73  |hen do not trans|
00043de0  6d 69 74 20 63 68 61 72  61 63 74 65 72 73 2e 0a  |mit characters..|
00043df0  09 20 09 31 09 49 67 6e  6f 72 65 20 74 68 65 20  |. .1.Ignore the |
00043e00  7e 43 54 53 20 62 69 74  20 28 6e 6f 74 20 73 75  |~CTS bit (not su|
00043e10  70 70 6f 72 74 65 64 20  62 79 20 74 68 65 20 36  |pported by the 6|
00043e20  35 35 31 20 73 65 72 69  61 6c 20 63 68 69 70 73  |551 serial chips|
00043e30  29 0a 0a 35 09 52 2f 57  09 20 09 54 68 69 73 20  |)..5.R/W. .This |
00043e40  62 69 74 20 69 73 20 69  67 6e 6f 72 65 64 2c 20  |bit is ignored, |
00043e50  69 66 20 62 69 74 20 30  20 73 65 74 3a 0a 09 20  |if bit 0 set:.. |
00043e60  09 30 09 55 73 65 20 52  54 53 20 68 61 6e 64 73  |.0.Use RTS hands|
00043e70  68 61 6b 69 6e 67 2e 0a  09 20 09 31 09 44 6f 20  |haking... .1.Do |
00043e80  6e 6f 74 20 75 73 65 20  52 54 53 20 68 61 6e 64  |not use RTS hand|
00043e90  73 68 61 6b 69 6e 67 2e  0a 20 20 20 20 20 20 20  |shaking..       |
00043ea0  20 20 20 20 20 20 20 20  20 20 0a 36 09 52 2f 57  |          .6.R/W|
00043eb0  09 30 09 49 6e 70 75 74  20 69 73 20 73 75 70 70  |.0.Input is supp|
00043ec0  72 65 73 73 65 64 2e 0a  09 20 09 31 09 49 6e 70  |ressed... .1.Inp|
00043ed0  75 74 20 69 73 20 6e 6f  74 20 73 75 70 70 72 65  |ut is not suppre|
00043ee0  73 73 65 64 2e 0a 20 20  20 20 20 20 20 20 20 20  |ssed..          |
00043ef0  20 20 20 20 20 20 20 0a  37 09 52 2f 57 09 20 09  |       .7.R/W. .|
00043f00  55 73 65 72 73 20 73 68  6f 75 6c 64 20 6f 6e 6c  |Users should onl|
00043f10  79 20 6d 6f 64 69 66 79  20 74 68 69 73 20 62 69  |y modify this bi|
00043f20  74 20 69 66 20 52 54 53  20 68 61 6e 64 73 68 61  |t if RTS handsha|
00043f30  6b 69 6e 67 20 69 73 20  6e 6f 74 20 69 6e 20 75  |king is not in u|
00043f40  73 65 3a 0a 09 20 09 30  09 52 54 53 20 63 6f 6e  |se:.. .0.RTS con|
00043f50  74 72 6f 6c 6c 65 64 20  62 79 20 68 61 6e 64 73  |trolled by hands|
00043f60  68 61 6b 69 6e 67 20 73  79 73 74 65 6d 20 28 6c  |haking system (l|
00043f70  6f 77 20 69 66 20 6e 6f  20 52 54 53 20 68 61 6e  |ow if no RTS han|
00043f80  64 73 68 61 6b 69 6e 67  29 0a 09 20 09 31 09 52  |dshaking).. .1.R|
00043f90  54 53 20 68 69 67 68 0a  20 20 20 20 20 20 20 20  |TS high.        |
00043fa0  20 20 20 20 20 20 20 20  20 0a 38 2d 31 35 09 52  |         .8-15.R|
00043fb0  4f 09 20 09 54 68 65 73  65 20 62 69 74 73 20 61  |O. .These bits a|
00043fc0  72 65 20 72 65 73 65 72  76 65 64 20 66 6f 72 20  |re reserved for |
00043fd0  66 75 74 75 72 65 20 65  78 70 61 6e 73 69 6f 6e  |future expansion|
00043fe0  73 3b 20 64 6f 20 6e 6f  74 20 6d 6f 64 69 66 79  |s; do not modify|
00043ff0  20 74 68 65 6d 2e 0a 0a  31 36 09 52 4f 09 30 09  | them...16.RO.0.|
00044000  58 4f 46 46 20 6e 6f 74  20 72 65 63 65 69 76 65  |XOFF not receive|
00044010  64 2e 0a 09 20 09 31 09  58 4f 46 46 20 68 61 73  |d... .1.XOFF has|
00044020  20 62 65 65 6e 20 72 65  63 65 69 76 65 64 2e 20  | been received. |
00044030  54 72 61 6e 73 6d 69 73  73 69 6f 6e 20 69 73 20  |Transmission is |
00044040  73 74 6f 70 70 65 64 20  62 79 20 74 68 69 73 20  |stopped by this |
00044050  6f 63 63 75 72 65 6e 63  65 2e 0a 20 20 20 20 20  |occurence..     |
00044060  20 20 20 20 20 20 20 20  20 20 20 20 0a 31 37 09  |            .17.|
00044070  52 4f 09 30 09 54 68 65  20 6f 74 68 65 72 20 65  |RO.0.The other e|
00044080  6e 64 20 69 73 20 69 6e  74 65 6e 64 65 64 20 74  |nd is intended t|
00044090  6f 20 62 65 20 69 6e 20  58 4f 4e 20 73 74 61 74  |o be in XON stat|
000440a0  65 2e 0a 09 20 09 31 09  54 68 65 20 6f 74 68 65  |e... .1.The othe|
000440b0  72 20 65 6e 64 20 69 73  20 69 6e 74 65 6e 64 65  |r end is intende|
000440c0  64 20 74 6f 20 62 65 20  69 6e 20 58 4f 46 46 20  |d to be in XOFF |
000440d0  73 74 61 74 65 2e 20 57  68 65 6e 20 74 68 69 73  |state. When this|
000440e0  20 62 69 74 20 69 73 20  73 65 74 2c 20 74 68 65  | bit is set, the|
000440f0  6e 20 69 74 20 6d 65 61  6e 73 20 74 68 61 74 20  |n it means that |
00044100  61 6e 20 58 4f 46 46 20  63 68 61 72 61 63 74 65  |an XOFF characte|
00044110  72 20 68 61 73 20 62 65  65 6e 20 73 65 6e 74 20  |r has been sent |
00044120  61 6e 64 20 69 74 20 77  69 6c 6c 20 62 65 20 63  |and it will be c|
00044130  6c 65 61 72 65 64 20 77  68 65 6e 20 61 6e 20 58  |leared when an X|
00044140  4f 4e 20 69 73 20 73 65  6e 74 20 62 79 20 74 68  |ON is sent by th|
00044150  65 20 62 75 66 66 65 72  69 6e 67 20 73 6f 66 74  |e buffering soft|
00044160  77 61 72 65 2e 20 4e 6f  74 65 20 74 68 61 74 20  |ware. Note that |
00044170  74 68 65 20 66 61 63 74  20 74 68 61 74 20 74 68  |the fact that th|
00044180  69 73 20 62 69 74 20 69  73 20 73 65 74 20 64 6f  |is bit is set do|
00044190  65 73 6e 27 74 20 69 6d  70 6c 79 20 74 68 61 74  |esn't imply that|
000441a0  20 74 68 65 20 6f 74 68  65 72 20 65 6e 64 20 68  | the other end h|
000441b0  61 73 20 72 65 63 65 69  76 65 64 20 61 6e 20 58  |as received an X|
000441c0  4f 46 46 20 79 65 74 2e  0a 20 20 20 20 20 20 20  |OFF yet..       |
000441d0  20 20 20 20 20 20 20 20  20 20 0a 31 38 09 52 4f  |          .18.RO|
000441e0  09 30 09 54 68 65 20 7e  44 43 44 20 62 69 74 20  |.0.The ~DCD bit |
000441f0  69 73 20 6c 6f 77 2c 20  69 65 20 63 61 72 72 69  |is low, ie carri|
00044200  65 72 20 70 72 65 73 65  6e 74 2e 0a 09 20 09 31  |er present... .1|
00044210  09 54 68 65 20 7e 44 43  44 20 62 69 74 20 69 73  |.The ~DCD bit is|
00044220  20 68 69 67 68 2c 20 69  65 20 6e 6f 20 63 61 72  | high, ie no car|
00044230  72 69 65 72 2e 0a 20 20  20 20 20 20 20 20 20 20  |rier..          |
00044240  20 20 20 20 20 20 20 0a  31 39 09 52 4f 09 30 09  |       .19.RO.0.|
00044250  54 68 65 20 7e 44 53 52  20 62 69 74 20 69 73 20  |The ~DSR bit is |
00044260  6c 6f 77 2c 20 69 65 20  27 72 65 61 64 79 27 20  |low, ie 'ready' |
00044270  73 74 61 74 65 2e 0a 09  20 09 31 09 54 68 65 20  |state... .1.The |
00044280  7e 44 53 52 20 62 69 74  20 69 73 20 68 69 67 68  |~DSR bit is high|
00044290  2c 20 69 65 20 27 6e 6f  74 20 72 65 61 64 79 27  |, ie 'not ready'|
000442a0  20 73 74 61 74 65 2e 0a  20 20 20 20 20 20 20 20  | state..        |
000442b0  20 20 20 20 20 20 20 20  20 0a 32 30 09 52 4f 09  |         .20.RO.|
000442c0  30 09 54 68 65 20 72 69  6e 67 20 69 6e 64 69 63  |0.The ring indic|
000442d0  61 74 6f 72 20 62 69 74  20 69 73 20 6c 6f 77 2e  |ator bit is low.|
000442e0  0a 09 20 09 31 09 54 68  65 20 72 69 6e 67 20 69  |.. .1.The ring i|
000442f0  6e 64 69 63 61 74 6f 72  20 62 69 74 20 69 73 20  |ndicator bit is |
00044300  68 69 67 68 2e 0a 20 20  20 20 20 20 20 20 20 20  |high..          |
00044310  20 20 20 20 20 20 20 0a  32 31 09 52 4f 09 30 09  |       .21.RO.0.|
00044320  44 6f 20 6e 6f 74 20 73  65 6e 64 20 62 72 65 61  |Do not send brea|
00044330  6b 2e 0a 09 20 09 31 09  53 65 6e 64 20 62 72 65  |k... .1.Send bre|
00044340  61 6b 2e 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ak..            |
00044350  20 20 20 20 20 0a 32 32  09 52 4f 09 30 09 55 73  |     .22.RO.0.Us|
00044360  65 72 20 68 61 73 20 6e  6f 74 20 6d 61 6e 75 61  |er has not manua|
00044370  6c 6c 79 20 73 65 6e 74  20 61 6e 20 58 4f 46 46  |lly sent an XOFF|
00044380  2e 0a 09 20 09 31 09 55  73 65 72 20 68 61 73 20  |... .1.User has |
00044390  6d 61 6e 75 61 6c 6c 79  20 73 65 6e 74 20 61 6e  |manually sent an|
000443a0  20 58 4f 46 46 2e 0a 20  20 20 20 20 20 20 20 20  | XOFF..         |
000443b0  20 20 20 20 20 20 20 20  0a 32 33 09 52 4f 09 30  |        .23.RO.0|
000443c0  09 53 70 61 63 65 20 69  6e 20 72 65 63 65 69 76  |.Space in receiv|
000443d0  65 20 62 75 66 66 65 72  20 61 62 6f 76 65 20 74  |e buffer above t|
000443e0  72 65 73 68 6f 6c 64 2e  0a 09 20 09 31 09 53 70  |reshold... .1.Sp|
000443f0  61 63 65 20 69 6e 20 72  65 63 65 69 76 65 20 62  |ace in receive b|
00044400  75 66 66 65 72 20 62 65  6c 6f 77 20 74 72 65 73  |uffer below tres|
00044410  68 6f 6c 64 2e 0a 0a 32  34 2d 33 31 09 52 4f 09  |hold...24-31.RO.|
00044420  20 09 54 68 65 73 65 20  62 69 74 73 20 61 72 65  | .These bits are|
00044430  20 72 65 73 65 72 76 65  64 20 66 6f 72 20 66 75  | reserved for fu|
00044440  74 75 72 65 20 65 78 70  61 6e 73 69 6f 6e 73 3b  |ture expansions;|
00044450  20 64 6f 20 6e 6f 74 20  6d 6f 64 69 66 79 20 74  | do not modify t|
00044460  68 65 6d 2e 44 41 54 41  e6 00 00 00 4f 53 5f 53  |hem.DATA....OS_S|
00044470  65 72 69 61 6c 4f 70 20  31 0a 3d 3e 09 52 30 20  |erialOp 1.=>.R0 |
00044480  3d 09 31 20 28 72 65 61  73 6f 6e 20 63 6f 64 65  |=.1 (reason code|
00044490  29 0a 09 52 31 20 3d 09  2d 31 20 74 6f 20 72 65  |)..R1 =.-1 to re|
000444a0  61 64 2c 20 6f 72 20 6e  65 77 20 3c 66 6f 72 6d  |ad, or new <form|
000444b0  61 74 3d 3e 4f 53 5f 53  65 72 69 61 6c 4f 70 46  |at=>OS_SerialOpF|
000444c0  6f 72 6d 61 74 3e 20 76  61 6c 75 65 0a 0a 3c 3d  |ormat> value..<=|
000444d0  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
000444e0  31 20 3d 09 6f 6c 64 20  66 6f 72 6d 61 74 20 76  |1 =.old format v|
000444f0  61 6c 75 65 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |alue..This call |
00044500  73 65 74 73 20 74 68 65  20 65 6e 63 6f 64 69 6e  |sets the encodin|
00044510  67 20 6f 66 20 63 68 61  72 61 63 74 65 72 73 20  |g of characters |
00044520  77 68 65 6e 20 73 65 6e  74 20 61 6e 64 20 72 65  |when sent and re|
00044530  63 65 69 76 65 64 20 6f  6e 20 74 68 65 20 73 65  |ceived on the se|
00044540  72 69 61 6c 20 6c 69 6e  65 2e 00 00 44 41 54 41  |rial line...DATA|
00044550  ec 01 00 00 53 65 72 69  61 6c 20 64 61 74 61 20  |....Serial data |
00044560  74 72 61 6e 73 66 65 72  20 77 6f 72 64 0a 42 69  |transfer word.Bi|
00044570  74 09 41 63 63 65 73 73  09 56 61 6c 75 65 09 4d  |t.Access.Value.M|
00044580  65 61 6e 69 6e 67 0a 23  6c 69 6e 65 0a 30 2c 31  |eaning.#line.0,1|
00044590  09 52 2f 57 09 30 09 38  20 62 69 74 20 77 6f 72  |.R/W.0.8 bit wor|
000445a0  64 0a 09 20 09 31 09 37  20 62 69 74 20 77 6f 72  |d.. .1.7 bit wor|
000445b0  64 0a 09 20 09 32 09 36  20 62 69 74 20 77 6f 72  |d.. .2.6 bit wor|
000445c0  64 0a 09 20 09 33 09 35  20 62 69 74 20 77 6f 72  |d.. .3.5 bit wor|
000445d0  64 0a 0a 32 09 52 2f 57  09 30 09 31 20 73 74 6f  |d..2.R/W.0.1 sto|
000445e0  70 20 62 69 74 0a 09 20  09 31 09 32 20 73 74 6f  |p bit.. .1.2 sto|
000445f0  70 20 62 69 74 73 20 69  6e 20 6d 6f 73 74 20 63  |p bits in most c|
00044600  61 73 65 73 2e 0a 09 20  09 20 09 31 20 73 74 6f  |ases... . .1 sto|
00044610  70 20 62 69 74 20 69 66  20 38 20 62 69 74 20 77  |p bit if 8 bit w|
00044620  6f 72 64 20 77 69 74 68  20 70 61 72 69 74 79 2e  |ord with parity.|
00044630  0a 09 20 09 20 09 31 2e  35 20 73 74 6f 70 20 62  |.. . .1.5 stop b|
00044640  69 74 73 20 69 66 20 35  20 62 69 74 20 77 6f 72  |its if 5 bit wor|
00044650  64 20 77 69 74 68 6f 75  74 20 70 61 72 69 74 79  |d without parity|
00044660  0a 0a 33 09 52 2f 57 09  30 09 70 61 72 69 74 79  |..3.R/W.0.parity|
00044670  20 64 69 73 61 62 6c 65  64 2e 0a 09 20 09 31 09  | disabled... .1.|
00044680  70 61 72 69 74 79 20 65  6e 61 62 6c 65 64 2e 0a  |parity enabled..|
00044690  0a 34 2c 35 09 52 2f 57  09 30 09 6f 64 64 20 20  |.4,5.R/W.0.odd  |
000446a0  70 61 72 69 74 79 0a 09  20 09 31 09 65 76 65 6e  |parity.. .1.even|
000446b0  20 70 61 72 69 74 79 0a  09 20 09 32 09 70 61 72  | parity.. .2.par|
000446c0  69 74 79 20 61 6c 77 61  79 73 20 31 20 6f 6e 20  |ity always 1 on |
000446d0  54 58 20 61 6e 64 20 69  67 6e 6f 72 65 64 20 6f  |TX and ignored o|
000446e0  6e 20 52 58 0a 09 20 09  33 09 70 61 72 69 74 79  |n RX.. .3.parity|
000446f0  20 61 6c 77 61 79 73 20  30 20 6f 6e 20 54 58 20  | always 0 on TX |
00044700  61 6e 64 20 69 67 6e 6f  72 65 64 20 6f 6e 20 52  |and ignored on R|
00044710  58 0a 0a 36 2d 33 31 09  20 09 20 09 72 65 73 65  |X..6-31. . .rese|
00044720  72 76 65 64 20 6d 75 73  74 20 62 65 20 73 65 74  |rved must be set|
00044730  20 74 6f 20 7a 65 72 6f  44 41 54 41 a0 01 00 00  | to zeroDATA....|
00044740  4f 53 5f 53 65 72 69 61  6c 4f 70 20 32 0a 3d 3e  |OS_SerialOp 2.=>|
00044750  09 52 30 20 3d 09 32 20  28 72 65 61 73 6f 6e 20  |.R0 =.2 (reason |
00044760  63 6f 64 65 29 0a 09 52  31 20 3d 09 6c 65 6e 67  |code)..R1 =.leng|
00044770  74 68 20 6f 66 20 62 72  65 61 6b 20 69 6e 20 63  |th of break in c|
00044780  65 6e 74 69 73 65 63 6f  6e 64 73 0a 0a 3c 3d 09  |entiseconds..<=.|
00044790  52 30 2c 52 31 20 70 72  65 73 65 72 76 65 64 0a  |R0,R1 preserved.|
000447a0  0a 54 68 69 73 20 63 61  6c 6c 20 73 65 74 73 20  |.This call sets |
000447b0  74 68 65 20 41 43 49 41  20 74 6f 20 74 72 61 6e  |the ACIA to tran|
000447c0  73 6d 69 74 20 61 20 62  72 65 61 6b 2c 20 74 68  |smit a break, th|
000447d0  65 6e 20 77 61 69 74 73  20 52 31 20 63 65 6e 74  |en waits R1 cent|
000447e0  69 73 65 63 6f 6e 64 73  20 62 65 66 6f 72 65 20  |iseconds before |
000447f0  72 65 73 65 74 74 69 6e  67 20 69 74 20 74 6f 20  |resetting it to |
00044800  6e 6f 72 6d 61 6c 2e 20  41 6e 79 20 63 68 61 72  |normal. Any char|
00044810  61 63 74 65 72 20 62 65  69 6e 67 20 74 72 61 6e  |acter being tran|
00044820  73 6d 69 74 74 65 64 20  61 74 20 74 68 65 20 74  |smitted at the t|
00044830  69 6d 65 20 74 68 65 20  63 61 6c 6c 20 69 73 20  |ime the call is |
00044840  6d 61 64 65 20 6d 61 79  20 62 65 20 67 61 72 62  |made may be garb|
00044850  6c 65 64 2e 20 41 66 74  65 72 20 73 65 6e 64 69  |led. After sendi|
00044860  6e 67 20 74 68 65 20 62  72 65 61 6b 20 74 68 65  |ng the break the|
00044870  20 74 72 61 6e 73 6d 69  74 20 70 72 6f 63 65 73  | transmit proces|
00044880  73 20 69 73 20 65 69 74  68 65 72 20 61 77 61 6b  |s is either awak|
00044890  65 6e 65 64 20 69 66 20  74 68 65 20 62 75 66 66  |ened if the buff|
000448a0  65 72 20 69 73 20 6e 6f  74 20 65 6d 70 74 79 2c  |er is not empty,|
000448b0  20 6f 72 20 6d 61 64 65  20 64 6f 72 6d 61 6e 74  | or made dormant|
000448c0  20 69 66 20 74 68 65 20  62 75 66 66 65 72 20 69  | if the buffer i|
000448d0  73 20 65 6d 70 74 79 2e  44 41 54 41 8f 01 00 00  |s empty.DATA....|
000448e0  4f 53 5f 53 65 72 69 61  6c 4f 70 20 33 0a 3d 3e  |OS_SerialOp 3.=>|
000448f0  09 52 30 20 3d 09 33 20  28 72 65 61 73 6f 6e 20  |.R0 =.3 (reason |
00044900  63 6f 64 65 29 0a 09 52  31 20 3d 09 63 68 61 72  |code)..R1 =.char|
00044910  61 63 74 65 72 20 74 6f  20 62 65 20 73 65 6e 74  |acter to be sent|
00044920  0a 0a 3c 3d 09 52 30 2c  52 31 20 70 72 65 73 65  |..<=.R0,R1 prese|
00044930  72 76 65 64 0a 09 43 20  66 6c 61 67 20 69 66 20  |rved..C flag if |
00044940  63 68 61 72 61 63 74 65  72 20 77 61 73 20 73 65  |character was se|
00044950  6e 74 2c 20 6f 72 20 73  65 74 20 69 66 20 63 68  |nt, or set if ch|
00044960  61 72 61 63 74 65 72 20  77 61 73 20 6e 6f 74 20  |aracter was not |
00044970  73 65 6e 74 20 28 69 65  20 74 68 65 20 62 75 66  |sent (ie the buf|
00044980  66 65 72 20 77 61 73 20  66 75 6c 6c 29 0a 0a 54  |fer was full)..T|
00044990  68 69 73 20 63 61 6c 6c  20 70 75 74 73 20 61 20  |his call puts a |
000449a0  63 68 61 72 61 63 74 65  72 20 69 6e 20 74 68 65  |character in the|
000449b0  20 73 65 72 69 61 6c 20  6f 75 74 70 75 74 20 62  | serial output b|
000449c0  75 66 66 65 72 2c 20 61  6e 64 20 72 65 2d 65 6e  |uffer, and re-en|
000449d0  61 62 6c 65 73 20 74 68  65 20 74 72 61 6e 73 6d  |ables the transm|
000449e0  69 74 20 69 6e 74 65 72  72 75 70 74 20 69 66 20  |it interrupt if |
000449f0  69 74 20 68 61 64 20 62  65 65 6e 20 64 69 73 61  |it had been disa|
00044a00  62 6c 65 64 20 62 79 20  52 49 53 43 20 4f 53 2e  |bled by RISC OS.|
00044a10  20 49 66 20 74 68 65 20  73 65 72 69 61 6c 20 6f  | If the serial o|
00044a20  75 74 70 75 74 20 62 75  66 66 65 72 20 69 73 20  |utput buffer is |
00044a30  66 75 6c 6c 2c 20 74 68  65 20 63 61 6c 6c 20 72  |full, the call r|
00044a40  65 74 75 72 6e 73 20 69  6d 6d 65 64 69 61 74 65  |eturns immediate|
00044a50  6c 79 20 77 69 74 68 20  74 68 65 20 43 20 66 6c  |ly with the C fl|
00044a60  61 67 20 73 65 74 2e 00  44 41 54 41 f1 01 00 00  |ag set..DATA....|
00044a70  4f 53 5f 53 65 72 69 61  6c 4f 70 20 34 0a 3d 3e  |OS_SerialOp 4.=>|
00044a80  09 52 30 20 3d 09 34 20  28 72 65 61 73 6f 6e 20  |.R0 =.4 (reason |
00044a90  63 6f 64 65 29 0a 0a 3c  3d 09 52 30 20 70 72 65  |code)..<=.R0 pre|
00044aa0  73 65 76 65 64 0a 09 52  31 20 3d 09 63 68 61 72  |seved..R1 =.char|
00044ab0  61 63 74 65 72 20 72 65  63 65 69 76 65 64 20 28  |acter received (|
00044ac0  69 66 20 43 20 66 6c 61  67 20 63 6c 65 61 72 65  |if C flag cleare|
00044ad0  64 29 2c 20 6f 72 20 70  72 65 73 65 72 76 65 64  |d), or preserved|
00044ae0  20 28 69 66 20 43 20 66  6c 61 67 20 73 65 74 20  | (if C flag set |
00044af0  2d 20 69 65 20 6e 6f 20  63 68 61 72 61 63 74 65  |- ie no characte|
00044b00  72 20 61 76 61 69 6c 61  62 6c 65 20 69 6e 20 62  |r available in b|
00044b10  75 66 66 65 72 20 74 6f  20 72 65 61 64 29 0a 0a  |uffer to read)..|
00044b20  54 68 69 73 20 63 61 6c  6c 20 72 65 6d 6f 76 65  |This call remove|
00044b30  73 20 61 20 63 68 61 72  61 63 74 65 72 20 66 72  |s a character fr|
00044b40  6f 6d 20 74 68 65 20 73  65 72 69 61 6c 20 69 6e  |om the serial in|
00044b50  70 75 74 20 62 75 66 66  65 72 20 69 66 20 6f 6e  |put buffer if on|
00044b60  65 20 69 73 20 70 72 65  73 65 6e 74 2e 20 49 66  |e is present. If|
00044b70  20 72 65 6d 6f 76 69 6e  67 20 61 20 63 68 61 72  | removing a char|
00044b80  61 63 74 65 72 20 6c 65  61 76 65 73 20 74 68 65  |acter leaves the|
00044b90  20 69 6e 70 75 74 20 62  75 66 66 65 72 20 77 69  | input buffer wi|
00044ba0  74 68 20 6d 6f 72 65 20  66 72 65 65 20 73 70 61  |th more free spa|
00044bb0  63 65 20 74 68 61 6e 20  61 72 65 20 73 70 65 63  |ce than are spec|
00044bc0  69 66 69 65 64 20 62 79  20 4f 53 5f 42 79 74 65  |ified by OS_Byte|
00044bd0  20 32 30 33 2c 20 74 68  65 6e 20 74 68 65 20 74  | 203, then the t|
00044be0  72 61 6e 73 6d 69 74 74  69 6e 67 20 64 65 76 69  |ransmitting devi|
00044bf0  63 65 20 69 73 20 72 65  2d 65 6e 61 62 6c 65 64  |ce is re-enabled|
00044c00  20 69 6e 20 74 68 65 20  77 61 79 20 73 70 65 63  | in the way spec|
00044c10  69 66 69 65 64 20 62 79  20 74 68 65 20 73 65 72  |ified by the ser|
00044c20  69 61 6c 20 70 6f 72 74  20 73 74 61 74 65 20 28  |ial port state (|
00044c30  61 73 20 73 65 74 20 62  79 20 3c 4f 53 5f 53 65  |as set by <OS_Se|
00044c40  72 69 61 6c 4f 70 20 30  3d 3e 4f 53 5f 53 65 72  |rialOp 0=>OS_Ser|
00044c50  69 61 6c 4f 70 30 3e 29  2e 00 00 00 44 41 54 41  |ialOp0>)....DATA|
00044c60  9b 00 00 00 4f 53 5f 53  65 72 69 61 6c 4f 70 20  |....OS_SerialOp |
00044c70  35 0a 3d 3e 09 52 30 20  3d 09 35 20 28 72 65 61  |5.=>.R0 =.5 (rea|
00044c80  73 6f 6e 20 63 6f 64 65  29 0a 09 52 31 20 3d 09  |son code)..R1 =.|
00044c90  2d 31 20 74 6f 20 72 65  61 64 2c 20 6f 72 20 30  |-1 to read, or 0|
00044ca0  2d 31 35 20 74 6f 20 73  65 74 20 74 6f 20 61 20  |-15 to set to a |
00044cb0  3c 76 61 6c 75 65 3d 3e  4f 53 5f 53 65 72 69 61  |<value=>OS_Seria|
00044cc0  6c 4f 70 53 70 65 65 64  73 3e 0a 0a 3c 3d 09 52  |lOpSpeeds>..<=.R|
00044cd0  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
00044ce0  3d 09 6f 6c 64 20 72 65  63 65 69 76 65 20 62 61  |=.old receive ba|
00044cf0  75 64 20 72 61 74 65 00  44 41 54 41 99 00 00 00  |ud rate.DATA....|
00044d00  4f 53 5f 53 65 72 69 61  6c 4f 70 20 36 0a 3d 3e  |OS_SerialOp 6.=>|
00044d10  09 52 30 20 3d 09 36 20  28 72 65 61 73 6f 6e 20  |.R0 =.6 (reason |
00044d20  63 6f 64 65 29 0a 09 52  31 20 3d 09 2d 31 20 74  |code)..R1 =.-1 t|
00044d30  6f 20 72 65 61 64 2c 20  6f 72 20 30 2d 31 35 20  |o read, or 0-15 |
00044d40  74 6f 20 73 65 74 20 61  20 3c 76 61 6c 75 65 3d  |to set a <value=|
00044d50  3e 4f 53 5f 53 65 72 69  61 6c 4f 70 53 70 65 65  |>OS_SerialOpSpee|
00044d60  64 73 3e 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |ds>..<=.R0 prese|
00044d70  72 76 65 64 0a 09 52 31  20 3d 09 6f 6c 64 20 74  |rved..R1 =.old t|
00044d80  72 61 6e 73 6d 69 74 20  62 61 75 64 20 72 61 74  |ransmit baud rat|
00044d90  65 00 00 00 44 41 54 41  a1 00 00 00 42 61 75 64  |e...DATA....Baud|
00044da0  20 72 61 74 65 20 63 6f  64 65 73 0a 52 31 09 42  | rate codes.R1.B|
00044db0  61 75 64 20 72 61 74 65  0a 23 4c 69 6e 65 0a 30  |aud rate.#Line.0|
00044dc0  09 39 36 30 30 20 0a 31  09 37 35 20 0a 32 09 31  |.9600 .1.75 .2.1|
00044dd0  35 30 20 0a 33 09 33 30  30 20 0a 34 09 31 32 30  |50 .3.300 .4.120|
00044de0  30 20 0a 35 09 32 34 30  30 20 0a 36 09 34 38 30  |0 .5.2400 .6.480|
00044df0  30 20 0a 37 09 39 36 30  30 0a 38 09 31 39 32 30  |0 .7.9600.8.1920|
00044e00  30 0a 39 09 35 30 0a 31  30 09 31 31 30 0a 31 31  |0.9.50.10.110.11|
00044e10  09 31 33 34 2e 35 0a 31  32 09 36 30 30 0a 31 33  |.134.5.12.600.13|
00044e20  09 31 38 30 30 0a 31 34  09 33 36 30 30 0a 31 35  |.1800.14.3600.15|
00044e30  09 37 32 30 30 00 00 00  44 41 54 41 93 01 00 00  |.7200...DATA....|
00044e40  4f 53 5f 53 65 74 43 61  6c 6c 42 61 63 6b 20 20  |OS_SetCallBack  |
00044e50  28 26 31 42 29 0a 54 68  69 73 20 73 65 74 73 20  |(&1B).This sets |
00044e60  74 68 65 20 63 61 6c 6c  62 61 63 6b 20 66 6c 61  |the callback fla|
00044e70  67 20 61 6e 64 20 73 6f  20 63 61 75 73 65 73 20  |g and so causes |
00044e80  65 6e 74 72 79 20 74 6f  20 74 68 65 20 63 61 6c  |entry to the cal|
00044e90  6c 62 61 63 6b 20 68 61  6e 64 6c 65 72 20 77 68  |lback handler wh|
00044ea0  65 6e 20 74 68 65 20 73  79 73 74 65 6d 20 6e 65  |en the system ne|
00044eb0  78 74 20 65 78 69 74 73  20 74 6f 20 75 73 65 72  |xt exits to user|
00044ec0  20 6d 6f 64 65 20 63 6f  64 65 20 77 69 74 68 20  | mode code with |
00044ed0  69 6e 74 65 72 72 75 70  74 73 20 65 6e 61 62 6c  |interrupts enabl|
00044ee0  65 64 20 28 61 70 61 72  74 2c 20 6f 66 20 63 6f  |ed (apart, of co|
00044ef0  75 72 73 65 2c 20 66 72  6f 6d 20 74 68 65 20 65  |urse, from the e|
00044f00  78 69 74 20 66 72 6f 6d  20 74 68 69 73 20 53 57  |xit from this SW|
00044f10  49 29 2e 20 54 68 69 73  20 53 57 49 20 6d 61 79  |I). This SWI may|
00044f20  20 62 65 20 75 73 65 64  20 69 66 20 74 68 65 20  | be used if the |
00044f30  63 6f 64 65 20 6c 69 6e  6b 65 64 20 69 6e 74 6f  |code linked into|
00044f40  20 74 68 65 20 74 68 65  20 73 79 73 74 65 6d 20  | the the system |
00044f50  28 76 69 61 20 76 65 63  74 6f 72 20 6f 72 20 61  |(via vector or a|
00044f60  73 20 61 20 53 57 49 20  68 61 6e 64 6c 65 72 2c  |s a SWI handler,|
00044f70  20 65 74 63 29 20 69 73  20 72 65 71 75 69 72 65  | etc) is require|
00044f80  64 20 74 6f 20 64 6f 20  74 68 69 6e 67 73 20 6f  |d to do things o|
00044f90  6e 20 65 78 69 74 20 66  72 6f 6d 20 74 68 65 20  |n exit from the |
00044fa0  73 79 73 74 65 6d 2e 20  46 75 72 74 68 65 72 20  |system. Further |
00044fb0  69 6e 66 6f 73 20 69 6e  20 3c 4f 53 5f 41 64 64  |infos in <OS_Add|
00044fc0  43 61 6c 6c 42 61 63 6b  3e 2e 0a 00 44 41 54 41  |CallBack>...DATA|
00044fd0  1a 02 00 00 4f 53 5f 53  65 74 45 6e 76 20 20 28  |....OS_SetEnv  (|
00044fe0  26 31 32 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&12).#Parent OS_|
00044ff0  0a 3d 3e 09 52 30 20 3d  09 61 64 64 72 65 73 73  |.=>.R0 =.address|
00045000  20 6f 66 20 74 68 65 20  68 61 6e 64 6c 65 72 20  | of the handler |
00045010  66 6f 72 20 3c 4f 53 5f  45 78 69 74 3e 2c 20 30  |for <OS_Exit>, 0|
00045020  20 74 6f 20 72 65 61 64  0a 09 52 31 20 3d 09 61  | to read..R1 =.a|
00045030  64 64 72 65 73 73 20 6f  66 20 74 68 65 20 6d 65  |ddress of the me|
00045040  6d 6f 72 79 20 6c 69 6d  69 74 20 66 6f 72 20 3c  |mory limit for <|
00045050  4f 53 5f 47 65 74 45 6e  76 3e 2c 20 30 20 74 6f  |OS_GetEnv>, 0 to|
00045060  20 72 65 61 64 0a 09 52  34 20 3d 09 61 64 64 72  | read..R4 =.addr|
00045070  65 73 73 20 66 6f 72 20  75 6e 64 65 66 69 6e 65  |ess for undefine|
00045080  64 20 69 6e 73 74 72 75  63 74 69 6f 6e 73 2c 20  |d instructions, |
00045090  30 20 74 6f 20 72 65 61  64 0a 09 52 35 20 3d 09  |0 to read..R5 =.|
000450a0  61 64 64 72 65 73 73 20  66 6f 72 20 70 72 65 66  |address for pref|
000450b0  65 74 63 68 20 61 62 6f  72 74 2c 20 30 20 74 6f  |etch abort, 0 to|
000450c0  20 72 65 61 64 0a 09 52  36 20 3d 09 61 64 64 72  | read..R6 =.addr|
000450d0  65 73 73 20 66 6f 72 20  68 61 6e 64 6c 65 72 20  |ess for handler |
000450e0  66 6f 72 20 64 61 74 61  20 61 62 6f 72 74 2c 20  |for data abort, |
000450f0  30 20 74 6f 20 72 65 61  64 0a 09 52 37 20 3d 09  |0 to read..R7 =.|
00045100  61 64 64 72 65 73 73 20  66 6f 72 20 68 61 6e 64  |address for hand|
00045110  6c 65 72 20 66 6f 72 20  61 64 64 72 65 73 73 20  |ler for address |
00045120  65 78 63 65 70 74 69 6f  6e 73 2c 20 30 20 74 6f  |exceptions, 0 to|
00045130  20 72 65 61 64 0a 0a 3c  3d 09 54 68 65 20 75 73  | read..<=.The us|
00045140  65 64 20 72 65 67 69 73  74 65 72 73 20 63 6f 6e  |ed registers con|
00045150  74 61 69 6e 20 74 68 65  20 70 72 65 76 69 6f 75  |tain the previou|
00045160  73 20 68 61 6e 64 6c 65  72 73 2e 0a 0a 54 68 69  |s handlers...Thi|
00045170  73 20 73 65 74 73 20 73  65 76 65 72 61 6c 20 68  |s sets several h|
00045180  61 6e 64 6c 65 72 73 2c  20 62 65 74 74 65 72 20  |andlers, better |
00045190  75 73 65 20 3c 4f 53 5f  43 68 61 6e 67 65 45 6e  |use <OS_ChangeEn|
000451a0  76 69 72 6f 6e 6d 65 6e  74 3e 2c 20 62 65 63 61  |vironment>, beca|
000451b0  75 73 65 20 74 68 69 73  20 63 61 6c 6c 20 69 73  |use this call is|
000451c0  20 6f 62 73 6f 6c 65 74  65 20 61 6e 64 20 75 73  | obsolete and us|
000451d0  65 73 20 74 68 69 73 20  6e 65 77 65 72 20 76 65  |es this newer ve|
000451e0  72 73 69 6f 6e 2e 00 00  44 41 54 41 f2 01 00 00  |rsion...DATA....|
000451f0  4f 53 5f 53 65 74 43 6f  6c 6f 75 72 20 20 28 26  |OS_SetColour  (&|
00045200  36 31 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |61).#Parent OS_.|
00045210  3d 3e 09 52 30 20 3d 09  3c 66 6c 61 67 20 77 6f  |=>.R0 =.<flag wo|
00045220  72 64 3d 3e 2e 66 6c 61  67 73 3e 0a 09 52 31 20  |rd=>.flags>..R1 |
00045230  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 45 43 46  |=.pointer to ECF|
00045240  20 70 61 74 74 65 72 6e  20 69 66 20 52 30 27 73  | pattern if R0's|
00045250  20 62 69 74 20 35 20 3d  20 31 0a 09 20 09 63 6f  | bit 5 = 1.. .co|
00045260  6c 6f 75 72 20 6e 75 6d  62 65 72 20 69 66 20 52  |lour number if R|
00045270  30 27 73 20 62 69 74 20  35 20 3d 20 30 0a 0a 54  |0's bit 5 = 0..T|
00045280  68 69 73 20 63 61 6c 6c  20 73 65 74 73 20 74 68  |his call sets th|
00045290  65 20 66 6f 72 65 20 61  6e 64 20 62 61 63 6b 67  |e fore and backg|
000452a0  6f 75 6e 64 20 74 65 78  74 20 63 6f 6c 6f 75 72  |ound text colour|
000452b0  2e 20 44 65 70 65 6e 64  69 6e 67 20 6f 6e 20 52  |. Depending on R|
000452c0  30 27 73 20 62 69 74 73  20 30 2d 33 2c 20 74 68  |0's bits 0-3, th|
000452d0  69 73 20 63 6f 6c 6f 75  72 20 6f 6e 20 74 68 65  |is colour on the|
000452e0  20 73 63 72 65 65 6e 20  69 73 20 63 68 61 6e 67  | screen is chang|
000452f0  65 64 2e 0a 23 53 75 62  70 61 67 65 20 66 6c 61  |ed..#Subpage fla|
00045300  67 73 0a 42 69 74 28 73  29 09 4d 65 61 6e 69 6e  |gs.Bit(s).Meanin|
00045310  67 0a 30 2d 33 09 3c 47  72 61 70 68 69 63 20 70  |g.0-3.<Graphic p|
00045320  6c 6f 74 20 61 63 74 69  6f 6e 3d 3e 6f 73 5f 73  |lot action=>os_s|
00045330  65 74 63 6f 6c 6f 75 72  61 63 74 69 6f 6e 73 3e  |etcolouractions>|
00045340  0a 34 09 53 65 74 3a 09  61 6c 74 65 72 20 62 61  |.4.Set:.alter ba|
00045350  63 6b 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 0a  |ckground colour.|
00045360  09 43 6c 65 61 72 3a 09  61 6c 74 65 72 20 66 6f  |.Clear:.alter fo|
00045370  72 65 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 0a  |reground colour.|
00045380  35 09 53 65 74 3a 09 52  31 20 69 73 20 70 6f 69  |5.Set:.R1 is poi|
00045390  6e 74 65 72 20 74 6f 20  45 43 46 20 70 61 74 74  |nter to ECF patt|
000453a0  65 72 6e 0a 09 43 6c 72  3a 09 52 31 20 69 73 20  |ern..Clr:.R1 is |
000453b0  63 6f 6c 6f 75 72 20 6e  75 6d 62 65 72 0a 36 2d  |colour number.6-|
000453c0  33 31 09 72 65 73 65 72  76 65 64 2c 20 6d 75 73  |31.reserved, mus|
000453d0  74 20 62 65 20 7a 65 72  6f 0a 00 00 44 41 54 41  |t be zero...DATA|
000453e0  83 01 00 00 47 72 61 70  68 69 63 20 70 6c 6f 74  |....Graphic plot|
000453f0  74 69 6e 67 20 61 63 74  69 6f 6e 73 0a 42 69 74  |ting actions.Bit|
00045400  73 20 30 2d 33 09 41 63  74 69 6f 6e 0a 23 4c 69  |s 0-3.Action.#Li|
00045410  6e 65 0a 30 09 09 52 65  70 6c 61 63 65 20 63 6f  |ne.0..Replace co|
00045420  6c 6f 75 72 20 6f 6e 20  73 63 72 65 65 6e 0a 31  |lour on screen.1|
00045430  09 09 4f 52 20 74 68 65  20 63 6f 6c 6f 75 72 20  |..OR the colour |
00045440  6f 6e 20 73 63 72 65 65  6e 0a 32 09 09 41 4e 44  |on screen.2..AND|
00045450  20 74 68 65 20 63 6f 6c  6f 75 72 20 6f 6e 20 73  | the colour on s|
00045460  63 72 65 65 6e 0a 33 09  09 45 4f 52 20 74 68 65  |creen.3..EOR the|
00045470  20 63 6f 6c 6f 75 72 20  6f 6e 20 73 63 72 65 65  | colour on scree|
00045480  6e 0a 34 09 09 4e 4f 54  20 74 68 65 20 63 6f 6c  |n.4..NOT the col|
00045490  6f 75 72 20 6f 6e 20 73  63 72 65 65 6e 0a 35 09  |our on screen.5.|
000454a0  09 4c 65 61 76 65 20 63  6f 6c 6f 75 72 20 6f 6e  |.Leave colour on|
000454b0  20 73 63 72 65 65 6e 0a  36 09 09 42 49 43 20 74  | screen.6..BIC t|
000454c0  68 65 20 63 6f 6c 6f 75  72 20 6f 6e 20 73 63 72  |he colour on scr|
000454d0  65 65 6e 0a 37 09 09 4f  52 20 4e 4f 54 20 63 6f  |een.7..OR NOT co|
000454e0  6c 6f 75 72 20 6f 6e 20  73 63 72 65 65 6e 0a 0a  |lour on screen..|
000454f0  49 66 20 62 69 74 20 33  20 69 73 20 73 65 74 2c  |If bit 3 is set,|
00045500  20 69 65 20 74 68 65 20  72 61 6e 67 65 20 66 72  | ie the range fr|
00045510  6f 6d 20 38 20 74 6f 20  31 35 2c 20 74 68 65 20  |om 8 to 15, the |
00045520  6c 6f 77 65 72 20 62 69  74 73 20 6d 65 61 6e 20  |lower bits mean |
00045530  74 68 65 20 73 61 6d 65  2c 20 62 75 74 20 62 61  |the same, but ba|
00045540  63 6b 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 20  |ckground colour |
00045550  69 73 20 74 72 61 6e 73  70 61 72 65 6e 74 2e 00  |is transparent..|
00045560  44 41 54 41 b0 07 00 00  4f 53 5f 53 75 62 73 74  |DATA....OS_Subst|
00045570  69 74 75 74 65 41 72 67  73 20 20 28 26 34 33 29  |ituteArgs  (&43)|
00045580  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
00045590  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
000455a0  61 72 67 75 6d 65 6e 74  20 6c 69 73 74 2c 20 61  |argument list, a|
000455b0  6e 64 20 66 6c 61 67 20  69 6e 20 74 6f 70 20 62  |nd flag in top b|
000455c0  69 74 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |it..R1 =.pointer|
000455d0  20 74 6f 20 62 75 66 66  65 72 20 66 6f 72 20 72  | to buffer for r|
000455e0  65 73 75 6c 74 69 6e 67  20 73 74 72 69 6e 67 0a  |esulting string.|
000455f0  09 52 32 20 3d 09 6c 65  6e 67 74 68 20 6f 66 20  |.R2 =.length of |
00045600  62 75 66 66 65 72 0a 09  52 33 20 3d 09 70 6f 69  |buffer..R3 =.poi|
00045610  6e 74 65 72 20 74 6f 20  74 65 6d 70 6c 61 74 65  |nter to template|
00045620  20 73 74 72 69 6e 67 0a  09 52 34 20 3d 09 6c 65  | string..R4 =.le|
00045630  6e 67 74 68 20 6f 66 20  74 65 6d 70 6c 61 74 65  |ngth of template|
00045640  20 73 74 72 69 6e 67 0a  0a 3c 3d 09 52 30 2c 52  | string..<=.R0,R|
00045650  31 20 70 72 65 73 65 72  76 65 64 0a 09 52 32 20  |1 preserved..R2 |
00045660  3d 09 6c 65 6e 67 74 68  20 6f 66 20 72 65 73 75  |=.length of resu|
00045670  6c 74 20 73 74 72 69 6e  67 20 28 69 6e 63 6c 2e  |lt string (incl.|
00045680  20 74 65 72 6d 69 6e 61  74 6f 72 29 0a 09 52 33  | terminator)..R3|
00045690  2c 52 34 20 70 72 65 73  65 72 76 65 64 0a 0a 54  |,R4 preserved..T|
000456a0  68 69 73 20 63 61 6c 6c  20 70 65 72 66 6f 72 6d  |his call perform|
000456b0  73 20 74 68 65 20 68 61  72 64 20 77 6f 72 6b 20  |s the hard work |
000456c0  69 6e 76 6f 6c 76 65 64  20 69 6e 20 73 75 62 73  |involved in subs|
000456d0  74 69 74 75 74 69 6e 67  20 61 20 6c 69 73 74 20  |tituting a list |
000456e0  6f 66 20 61 72 67 75 6d  65 6e 74 73 20 69 6e 74  |of arguments int|
000456f0  6f 20 61 20 27 74 65 6d  70 6c 61 74 65 27 20 73  |o a 'template' s|
00045700  74 72 69 6e 67 2e 20 49  74 27 73 20 6d 61 69 6e  |tring. It's main|
00045710  20 75 73 65 20 69 73 20  69 6e 20 74 68 65 20 70  | use is in the p|
00045720  72 6f 63 65 73 73 69 6e  67 20 6f 66 20 63 6f 6d  |rocessing of com|
00045730  6d 61 6e 64 20 41 6c 69  61 73 24 2e 2e 2e 20 76  |mand Alias$... v|
00045740  61 72 69 61 62 6c 65 73  20 62 79 20 74 68 65 20  |ariables by the |
00045750  73 79 73 74 65 6d 2e 20  49 74 27 73 20 61 6c 73  |system. It's als|
00045760  6f 20 75 73 65 66 75 6c  20 69 6e 20 6f 74 68 65  |o useful in othe|
00045770  72 20 73 69 74 75 61 74  69 6f 6e 73 2c 20 69 74  |r situations, it|
00045780  20 68 61 73 20 62 65 65  6e 20 6d 61 64 65 20 61  | has been made a|
00045790  76 61 69 6c 61 62 6c 65  20 74 6f 20 75 73 65 72  |vailable to user|
000457a0  73 2e 20 46 6f 72 20 65  78 61 6d 70 6c 65 2c 20  |s. For example, |
000457b0  46 69 6c 65 53 77 69 74  63 68 20 75 73 65 73 20  |FileSwitch uses |
000457c0  69 74 20 69 6e 20 74 68  65 20 70 72 6f 63 65 73  |it in the proces|
000457d0  73 69 6e 67 20 6f 66 20  41 6c 69 61 73 24 4c 6f  |sing of Alias$Lo|
000457e0  61 64 54 79 70 65 5f 54  54 54 20 76 61 72 69 61  |adType_TTT varia|
000457f0  62 6c 65 73 2e 0a 0a 54  68 65 20 61 72 67 75 6d  |bles...The argum|
00045800  65 6e 74 20 6c 69 73 74  20 69 73 20 61 20 73 74  |ent list is a st|
00045810  72 69 6e 67 20 63 6f 6e  73 69 73 74 69 6e 67 20  |ring consisting |
00045820  6f 66 20 73 70 61 63 65  20 73 65 70 65 72 61 74  |of space seperat|
00045830  65 64 20 69 74 65 6d 73  20 77 68 69 63 68 20 77  |ed items which w|
00045840  69 6c 6c 20 62 65 20 73  75 62 73 74 69 74 75 74  |ill be substitut|
00045850  65 64 20 69 6e 74 6f 20  74 68 65 20 74 65 6d 70  |ed into the temp|
00045860  6c 61 74 65 20 73 74 72  69 6e 67 2e 20 53 70 61  |late string. Spa|
00045870  63 65 73 20 77 69 74 68  69 6e 20 64 6f 75 62 6c  |ces within doubl|
00045880  65 20 71 75 6f 74 61 74  69 6f 6e 20 6d 61 72 6b  |e quotation mark|
00045890  73 20 61 72 65 20 6e 6f  74 20 63 6f 75 6e 74 65  |s are not counte|
000458a0  64 20 61 73 20 61 72 67  75 6d 65 6e 74 20 73 65  |d as argument se|
000458b0  70 65 72 61 74 6f 72 73  2e 20 54 79 70 69 63 61  |perators. Typica|
000458c0  6c 6c 79 2c 20 74 68 65  20 61 72 67 75 6d 65 6e  |lly, the argumen|
000458d0  74 20 73 74 72 69 6e 67  20 77 69 6c 6c 20 6a 75  |t string will ju|
000458e0  73 74 20 62 65 20 74 68  65 20 74 61 69 6c 20 6f  |st be the tail o|
000458f0  66 20 61 20 2a 43 6f 6d  6d 61 6e 64 2e 20 49 74  |f a *Command. It|
00045900  27 73 20 63 6f 6e 74 72  6f 6c 20 63 68 61 72 61  |'s control chara|
00045910  63 74 65 72 20 74 65 72  6d 69 6e 61 74 65 64 2e  |cter terminated.|
00045920  20 54 68 65 20 72 65 73  75 6c 74 20 6f 66 20 73  | The result of s|
00045930  75 62 73 74 69 74 75 74  69 6e 67 20 74 68 65 20  |ubstituting the |
00045940  61 72 67 75 6d 65 6e 74  73 20 69 6e 74 6f 20 74  |arguments into t|
00045950  68 65 20 74 65 6d 70 6c  61 74 65 20 73 74 72 69  |he template stri|
00045960  6e 67 20 69 73 20 70 6c  61 63 65 64 20 69 6e 20  |ng is placed in |
00045970  74 68 65 20 62 75 66 66  65 72 2e 20 54 68 65 20  |the buffer. The |
00045980  6c 65 6e 67 74 68 20 6f  66 20 74 68 65 20 62 75  |length of the bu|
00045990  66 66 65 72 20 69 73 20  67 69 76 65 6e 20 73 6f  |ffer is given so|
000459a0  20 74 68 61 74 20 74 68  65 20 63 61 6c 6c 20 63  | that the call c|
000459b0  61 6e 20 63 68 65 63 6b  20 66 6f 72 20 62 75 66  |an check for buf|
000459c0  66 65 72 20 6f 76 65 72  66 6c 6f 77 2e 20 54 68  |fer overflow. Th|
000459d0  65 20 74 65 6d 70 6c 61  74 65 20 73 74 72 69 6e  |e template strin|
000459e0  67 20 69 73 20 63 6f 70  69 65 64 20 69 6e 74 6f  |g is copied into|
000459f0  20 74 68 65 20 72 65 73  75 6c 74 20 62 75 66 66  | the result buff|
00045a00  65 72 20 63 68 61 72 20  66 6f 72 20 63 68 61 72  |er char for char|
00045a10  2e 20 48 6f 77 65 76 65  72 2c 20 77 68 65 6e 20  |. However, when |
00045a20  61 20 27 25 27 20 61 70  70 65 61 72 73 20 69 6e  |a '%' appears in|
00045a30  20 74 68 65 20 74 65 6d  70 6c 61 74 65 20 73 74  | the template st|
00045a40  72 69 6e 67 20 28 65 76  65 6e 20 77 69 74 68 69  |ring (even withi|
00045a50  6e 20 71 75 6f 74 61 74  69 6f 6e 20 6d 61 72 6b  |n quotation mark|
00045a60  73 29 2c 20 69 74 20 6d  61 72 6b 73 20 77 68 65  |s), it marks whe|
00045a70  72 65 20 61 6e 20 61 72  67 75 6d 65 6e 74 20 73  |re an argument s|
00045a80  68 6f 75 6c 64 20 62 65  20 70 6c 61 63 65 64 20  |hould be placed |
00045a90  69 6e 74 6f 20 74 68 65  20 6f 75 74 70 75 74 20  |into the output |
00045aa0  62 75 66 66 65 72 2e 20  54 68 65 20 27 25 27 20  |buffer. The '%' |
00045ab0  69 73 20 66 6f 6c 6c 6f  77 65 64 20 62 79 20 61  |is followed by a|
00045ac0  20 73 69 6e 67 6c 65 20  64 69 67 69 74 20 66 72  | single digit fr|
00045ad0  6f 6d 20 30 20 2d 20 39  2e 20 25 30 20 73 74 61  |om 0 - 9. %0 sta|
00045ae0  6e 64 73 20 66 6f 72 20  74 68 65 20 66 69 72 73  |nds for the firs|
00045af0  74 20 61 72 67 75 6d 65  6e 74 20 69 6e 20 74 68  |t argument in th|
00045b00  65 20 61 72 67 75 6d 65  6e 74 20 6c 69 73 74 20  |e argument list |
00045b10  61 6e 64 20 73 6f 20 6f  6e 2e 20 25 25 20 6d 65  |and so on. %% me|
00045b20  61 6e 73 20 61 20 73 69  6e 67 6c 65 20 25 2e 20  |ans a single %. |
00045b30  41 6e 79 74 68 69 6e 67  20 65 6c 73 65 20 66 6f  |Anything else fo|
00045b40  6c 6c 6f 77 69 6e 67 20  74 68 65 20 27 25 27 20  |llowing the '%' |
00045b50  69 73 20 6e 6f 74 20 74  72 65 61 74 65 64 20 73  |is not treated s|
00045b60  70 65 63 69 61 6c 6c 79  2c 20 69 65 20 62 6f 74  |pecially, ie bot|
00045b70  68 20 74 68 65 20 25 20  61 6e 64 20 74 68 65 20  |h the % and the |
00045b80  63 68 61 72 61 63 74 65  72 20 61 72 65 20 63 6f  |character are co|
00045b90  70 69 65 64 20 6f 76 65  72 2e 20 54 68 65 20 74  |pied over. The t|
00045ba0  65 6d 70 6c 61 74 65 20  73 74 72 69 6e 67 20 64  |emplate string d|
00045bb0  6f 65 73 6e 27 74 20 68  61 76 65 20 61 20 74 65  |oesn't have a te|
00045bc0  72 6d 69 6e 61 74 6f 72  2c 20 69 6e 73 74 65 61  |rminator, instea|
00045bd0  64 20 69 74 73 20 6c 65  6e 67 74 68 20 69 73 20  |d its length is |
00045be0  67 69 76 65 6e 2e 20 41  74 20 74 68 65 20 65 6e  |given. At the en|
00045bf0  64 20 6f 66 20 73 75 62  73 74 69 74 75 74 69 6f  |d of substitutio|
00045c00  6e 2c 20 61 6e 79 20 61  72 67 75 6d 65 6e 74 73  |n, any arguments|
00045c10  20 61 66 74 65 72 20 74  68 65 20 68 69 67 68 65  | after the highe|
00045c20  73 74 20 6f 6e 65 20 6d  65 6e 74 69 6f 6e 65 64  |st one mentioned|
00045c30  20 69 6e 20 74 68 65 20  74 65 6d 70 6c 61 74 65  | in the template|
00045c40  20 73 74 72 69 6e 67 20  61 72 65 20 61 70 70 65  | string are appe|
00045c50  6e 64 65 64 20 74 6f 20  74 68 65 20 72 65 73 75  |nded to the resu|
00045c60  6c 74 20 73 74 72 69 6e  67 2e 20 54 6f 20 70 72  |lt string. To pr|
00045c70  65 76 65 6e 74 20 74 68  69 73 20 73 65 74 20 74  |event this set t|
00045c80  68 65 20 74 6f 70 20 62  69 74 20 6f 66 20 52 30  |he top bit of R0|
00045c90  20 6f 6e 20 65 6e 74 72  79 2e 20 49 66 20 61 20  | on entry. If a |
00045ca0  6e 6f 6e 2d 65 78 69 73  74 69 6e 67 20 61 72 67  |non-existing arg|
00045cb0  75 6d 65 6e 74 20 69 73  20 73 70 65 63 69 66 69  |ument is specifi|
00045cc0  65 64 20 69 6e 20 74 68  65 20 74 65 6d 70 6c 61  |ed in the templa|
00045cd0  74 65 20 73 74 72 69 6e  67 2c 20 74 68 65 6e 20  |te string, then |
00045ce0  61 20 6e 75 6c 6c 20 73  74 72 69 6e 67 20 69 73  |a null string is|
00045cf0  20 73 75 62 73 74 69 74  75 74 65 64 2c 20 6e 6f  | substituted, no|
00045d00  20 65 72 72 6f 72 20 69  73 20 67 69 76 65 6e 2e  | error is given.|
00045d10  44 41 54 41 28 01 00 00  4f 53 5f 55 6e 75 73 65  |DATA(...OS_Unuse|
00045d20  64 53 57 49 20 20 28 26  31 39 29 0a 23 50 61 72  |dSWI  (&19).#Par|
00045d30  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
00045d40  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 75  |address of the u|
00045d50  6e 75 73 65 64 20 53 57  49 20 68 61 6e 64 6c 65  |nused SWI handle|
00045d60  72 3b 20 6f 72 20 30 20  74 6f 20 72 65 61 64 0a  |r; or 0 to read.|
00045d70  3c 3d 09 52 30 20 3d 09  61 64 64 72 65 73 73 20  |<=.R0 =.address |
00045d80  6f 66 20 74 68 65 20 70  72 65 76 69 6f 75 73 20  |of the previous |
00045d90  55 6e 75 73 65 64 53 57  49 20 68 61 6e 64 6c 65  |UnusedSWI handle|
00045da0  72 0a 0a 54 68 69 73 20  73 65 74 73 20 75 70 20  |r..This sets up |
00045db0  74 68 65 20 61 64 64 72  65 73 73 20 6f 66 20 74  |the address of t|
00045dc0  68 65 20 55 6e 75 73 65  64 53 57 49 20 68 61 6e  |he UnusedSWI han|
00045dd0  64 6c 65 72 2c 20 62 75  74 20 69 74 27 73 20 6f  |dler, but it's o|
00045de0  62 73 6f 6c 65 74 65 20  61 6e 64 20 6f 6e 6c 79  |bsolete and only|
00045df0  20 6b 65 70 74 20 66 6f  72 20 62 61 63 6b 77 61  | kept for backwa|
00045e00  72 64 73 20 63 6f 6d 70  61 74 69 62 69 6c 69 74  |rds compatibilit|
00045e10  79 20 73 6f 20 75 73 65  20 3c 4f 53 5f 43 68 61  |y so use <OS_Cha|
00045e20  6e 67 65 45 6e 76 69 72  6f 6e 6d 65 6e 74 3e 20  |ngeEnvironment> |
00045e30  69 6e 73 74 65 61 64 2e  44 41 54 41 b3 00 00 00  |instead.DATA....|
00045e40  4f 53 5f 57 72 69 74 65  45 6e 76 20 20 28 26 34  |OS_WriteEnv  (&4|
00045e50  38 29 0a 3c 3d 09 52 30  20 3d 09 70 6f 69 6e 74  |8).<=.R0 =.point|
00045e60  65 72 20 74 6f 20 65 6e  76 69 72 6f 6e 6d 65 6e  |er to environmen|
00045e70  74 20 73 74 72 69 6e 67  0a 09 52 31 20 3d 09 70  |t string..R1 =.p|
00045e80  6f 69 6e 74 65 72 20 74  6f 20 73 74 61 72 74 20  |ointer to start |
00045e90  74 69 6d 65 0a 0a 53 65  74 73 20 74 68 65 20 70  |time..Sets the p|
00045ea0  72 6f 67 72 61 6d 20 65  6e 76 69 72 6f 6e 6d 65  |rogram environme|
00045eb0  6e 74 20 63 6f 6d 6d 61  6e 64 20 73 74 72 69 6e  |nt command strin|
00045ec0  67 20 61 6e 64 20 73 74  61 72 74 20 74 69 6d 65  |g and start time|
00045ed0  20 72 65 61 64 20 62 79  20 75 73 69 6e 67 20 3c  | read by using <|
00045ee0  4f 53 5f 47 65 74 45 6e  76 3e 2e 00 44 41 54 41  |OS_GetEnv>..DATA|
00045ef0  8d 02 00 00 4f 53 5f 53  65 72 69 61 6c 4f 70 20  |....OS_SerialOp |
00045f00  20 28 26 35 37 29 0a 23  50 61 72 65 6e 74 20 4f  | (&57).#Parent O|
00045f10  53 5f 0a 3d 3e 09 52 30  20 3d 20 3c 72 65 61 73  |S_.=>.R0 = <reas|
00045f20  6f 6e 20 63 6f 64 65 3d  3e 2e 72 65 61 73 6f 6e  |on code=>.reason|
00045f30  73 3e 0a 09 6f 74 68 65  72 20 65 6e 74 72 79 20  |s>..other entry |
00045f40  63 6f 6e 64 69 74 69 6f  6e 73 20 64 65 70 65 6e  |conditions depen|
00045f50  64 20 6f 6e 20 72 65 61  73 6f 6e 20 63 6f 64 65  |d on reason code|
00045f60  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
00045f70  64 0a 09 6f 74 68 65 72  20 65 78 69 74 20 63 6f  |d..other exit co|
00045f80  6e 64 69 74 69 6f 6e 73  20 64 65 70 65 6e 64 20  |nditions depend |
00045f90  6f 6e 20 72 65 61 73 6f  6e 20 63 6f 64 65 0a 0a  |on reason code..|
00045fa0  54 68 69 73 20 63 61 6c  6c 20 69 73 20 6c 69 6b  |This call is lik|
00045fb0  65 20 3c 4f 53 5f 42 79  74 65 3e 20 69 6e 20 74  |e <OS_Byte> in t|
00045fc0  68 61 74 20 69 74 20 69  73 20 61 20 73 69 6e 67  |hat it is a sing|
00045fd0  6c 65 20 63 61 6c 6c 20  77 69 74 68 20 6d 61 6e  |le call with man|
00045fe0  79 20 6f 70 65 72 61 74  69 6f 6e 73 20 77 69 74  |y operations wit|
00045ff0  68 69 6e 20 69 74 2e 20  54 68 65 20 6f 70 65 72  |hin it. The oper|
00046000  61 74 69 6f 6e 20 72 65  71 75 69 72 65 64 2c 20  |ation required, |
00046010  6f 72 20 72 65 61 73 6f  6e 20 63 6f 64 65 2c 20  |or reason code, |
00046020  69 73 20 70 61 73 73 65  64 20 69 6e 20 52 30 2e  |is passed in R0.|
00046030  0a 23 53 75 62 70 61 67  65 20 72 65 61 73 6f 6e  |.#Subpage reason|
00046040  73 0a 4f 53 5f 53 65 72  69 61 6c 4f 70 20 72 65  |s.OS_SerialOp re|
00046050  61 73 6f 6e 20 63 6f 64  65 73 0a 23 50 61 72 65  |ason codes.#Pare|
00046060  6e 74 20 4f 53 5f 0a 52  30 20 3d 09 3c 30 20 52  |nt OS_.R0 =.<0 R|
00046070  65 61 64 2f 77 72 69 74  65 20 73 65 72 69 61 6c  |ead/write serial|
00046080  20 73 74 61 74 65 73 3d  3e 4f 53 5f 53 65 72 69  | states=>OS_Seri|
00046090  61 6c 4f 70 30 3e 0a 09  3c 31 20 52 65 61 64 2f  |alOp0>..<1 Read/|
000460a0  77 72 69 74 65 20 64 61  74 61 20 66 6f 72 6d 61  |write data forma|
000460b0  74 3d 3e 4f 53 5f 53 65  72 69 61 6c 4f 70 31 3e  |t=>OS_SerialOp1>|
000460c0  0a 09 3c 32 20 53 65 6e  64 20 62 72 65 61 6b 3d  |..<2 Send break=|
000460d0  3e 4f 53 5f 53 65 72 69  61 6c 4f 70 32 3e 0a 09  |>OS_SerialOp2>..|
000460e0  3c 33 20 53 65 6e 64 20  62 79 74 65 3d 3e 4f 53  |<3 Send byte=>OS|
000460f0  5f 53 65 72 69 61 6c 4f  70 33 3e 0a 09 3c 34 20  |_SerialOp3>..<4 |
00046100  47 65 74 20 62 79 74 65  3d 3e 4f 53 5f 53 65 72  |Get byte=>OS_Ser|
00046110  69 61 6c 4f 70 34 3e 0a  09 3c 35 20 52 65 61 64  |ialOp4>..<5 Read|
00046120  2f 77 72 69 74 65 20 72  65 63 69 65 76 65 20 62  |/write recieve b|
00046130  61 75 64 20 72 61 74 65  3d 3e 4f 53 5f 53 65 72  |aud rate=>OS_Ser|
00046140  69 61 6c 4f 70 35 3e 0a  09 3c 36 20 52 65 61 64  |ialOp5>..<6 Read|
00046150  2f 77 72 69 74 65 20 74  72 61 6e 73 6d 69 74 20  |/write transmit |
00046160  62 61 75 64 20 72 61 74  65 3d 3e 4f 53 5f 53 65  |baud rate=>OS_Se|
00046170  72 69 61 6c 4f 70 36 3e  0a 00 00 00 44 41 54 41  |rialOp6>....DATA|
00046180  1a 02 00 00 4f 53 5f 43  6c 61 69 6d 50 72 6f 63  |....OS_ClaimProc|
00046190  65 73 73 6f 72 56 65 63  74 6f 72 20 20 28 26 36  |essorVector  (&6|
000461a0  39 29 20 28 33 2e 35 29  0a 23 50 61 72 65 6e 74  |9) (3.5).#Parent|
000461b0  20 4f 53 5f 0a 3d 3e 09  52 30 20 3d 09 56 65 63  | OS_.=>.R0 =.Vec|
000461c0  74 6f 72 20 6e 75 6d 62  65 72 0a 09 20 09 20 09  |tor number.. . .|
000461d0  30 20 2d 20 42 72 61 6e  63 68 20 74 68 72 6f 75  |0 - Branch throu|
000461e0  67 68 20 7a 65 72 6f 0a  09 20 09 20 09 31 20 2d  |gh zero.. . .1 -|
000461f0  20 55 6e 64 65 66 69 6e  65 64 20 69 6e 73 74 72  | Undefined instr|
00046200  75 63 74 69 6f 6e 0a 09  20 09 20 09 32 20 2d 20  |uction.. . .2 - |
00046210  53 57 49 20 65 78 65 63  75 74 65 64 0a 09 20 09  |SWI executed.. .|
00046220  20 09 33 20 2d 20 50 72  65 66 65 74 63 68 20 61  | .3 - Prefetch a|
00046230  62 6f 72 74 0a 09 20 09  20 09 34 20 2d 20 44 61  |bort.. . .4 - Da|
00046240  74 61 20 61 62 6f 72 74  0a 09 20 09 20 09 36 20  |ta abort.. . .6 |
00046250  2d 20 49 52 51 0a 09 20  09 42 69 74 20 38 20 2d  |- IRQ.. .Bit 8 -|
00046260  20 73 65 74 20 74 6f 20  63 6c 61 69 6d 2c 20 75  | set to claim, u|
00046270  6e 73 65 74 20 74 6f 20  72 65 6c 65 61 73 65 0a  |nset to release.|
00046280  09 52 31 20 3d 09 28 49  66 20 63 6c 61 69 6d 29  |.R1 =.(If claim)|
00046290  20 2d 20 41 64 64 72 65  73 73 20 74 6f 20 63 61  | - Address to ca|
000462a0  6c 6c 0a 09 52 32 20 3d  09 28 49 66 20 72 65 6c  |ll..R2 =.(If rel|
000462b0  65 61 73 65 29 20 2d 20  41 64 64 72 65 73 73 20  |ease) - Address |
000462c0  75 73 65 64 20 77 68 65  6e 20 74 68 65 20 76 65  |used when the ve|
000462d0  63 74 6f 72 20 77 61 73  20 63 6c 61 69 6d 65 64  |ctor was claimed|
000462e0  2e 0a 09 20 09 28 49 66  20 63 6c 61 69 6d 29 20  |... .(If claim) |
000462f0  2d 20 50 72 65 76 69 6f  75 73 20 61 64 64 72 65  |- Previous addre|
00046300  73 73 20 75 73 65 64 2e  0a 23 6c 69 6e 65 0a 2a  |ss used..#line.*|
00046310  55 73 65 2a 3a 09 54 68  69 73 20 63 61 6c 6c 20  |Use*:.This call |
00046320  69 73 20 75 73 65 64 20  74 6f 20 61 6c 6c 6f 77  |is used to allow|
00046330  20 6c 6f 77 2d 6c 65 76  65 6c 20 63 6f 64 65 20  | low-level code |
00046340  74 6f 20 63 6c 61 69 6d  20 74 68 65 20 41 52 4d  |to claim the ARM|
00046350  27 73 20 68 61 72 64 77  61 72 65 20 76 65 63 74  |'s hardware vect|
00046360  6f 72 73 20 77 68 69 63  68 20 61 72 65 20 63 61  |ors which are ca|
00046370  6c 6c 65 64 20 77 68 65  6e 20 69 6e 74 65 72 72  |lled when interr|
00046380  75 70 74 73 20 61 6e 64  20 61 62 6f 72 74 73 20  |upts and aborts |
00046390  6f 63 63 75 72 2e 00 00  44 41 54 41 94 00 00 00  |occur...DATA....|
000463a0  4f 53 5f 52 65 73 65 74  20 20 28 26 36 41 29 20  |OS_Reset  (&6A) |
000463b0  28 33 2e 35 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(3.5).#Parent OS|
000463c0  5f 0a 3d 3e 09 98 0a 3c  3d 09 98 0a 23 6c 69 6e  |_.=>...<=...#lin|
000463d0  65 0a 54 68 69 73 20 53  57 49 20 64 6f 65 73 20  |e.This SWI does |
000463e0  74 68 65 20 65 71 75 69  76 61 6c 65 6e 74 20 6f  |the equivalent o|
000463f0  66 20 70 72 65 73 73 69  6e 67 20 74 68 65 20 52  |f pressing the R|
00046400  65 73 65 74 20 62 75 74  74 6f 6e 2e 20 55 73 65  |eset button. Use|
00046410  20 77 69 74 68 20 7b 2a  7d 65 78 74 72 65 6d 65  | with {*}extreme|
00046420  7b 2a 7d 20 63 61 75 74  69 6f 6e 2e 44 41 54 41  |{*} caution.DATA|
00046430  2d 01 00 00 4f 53 5f 53  63 72 65 65 6e 4d 6f 64  |-...OS_ScreenMod|
00046440  65 20 28 26 36 35 29 20  28 33 2e 35 29 0a 3d 3e  |e (&65) (3.5).=>|
00046450  09 52 30 20 3d 09 30 20  2d 20 53 65 74 0a 09 20  |.R0 =.0 - Set.. |
00046460  09 31 20 2d 20 52 65 61  64 0a 09 52 31 20 3d 09  |.1 - Read..R1 =.|
00046470  28 49 66 20 52 30 3d 30  29 20 2d 20 4f 6c 64 20  |(If R0=0) - Old |
00046480  73 74 79 6c 65 20 6d 6f  64 65 20 6e 75 6d 62 65  |style mode numbe|
00046490  72 20 6f 72 20 3c 61 20  6d 6f 64 65 20 73 70 65  |r or <a mode spe|
000464a0  63 69 66 69 65 72 20 62  6c 6f 63 6b 3d 3e 57 69  |cifier block=>Wi|
000464b0  6d 70 5f 4d 6f 64 65 53  65 6c 65 63 74 3e 0a 5c  |mp_ModeSelect>.\|
000464c0  3c 3d 09 52 31 20 3d 09  28 49 66 20 52 30 3d 31  |<=.R1 =.(If R0=1|
000464d0  29 20 2d 20 4d 6f 64 65  20 6e 75 6d 62 65 72 20  |) - Mode number |
000464e0  6f 72 20 70 6f 69 6e 74  65 72 20 74 6f 20 61 20  |or pointer to a |
000464f0  6d 6f 64 65 20 73 70 65  63 69 66 69 65 72 20 62  |mode specifier b|
00046500  6c 6f 63 6b 2e 0a 2a 55  73 65 2a 3a 09 54 68 69  |lock..*Use*:.Thi|
00046510  73 20 63 61 6c 6c 20 69  73 20 75 73 65 64 20 74  |s call is used t|
00046520  6f 20 63 68 61 6e 67 65  20 6f 72 20 72 65 61 64  |o change or read|
00046530  20 74 68 65 20 73 63 72  65 65 6e 20 6d 6f 64 65  | the screen mode|
00046540  2e 0a 53 65 65 20 61 6c  73 6f 20 3c 57 69 6d 70  |..See also <Wimp|
00046550  5f 53 65 74 4d 6f 64 65  3e 00 00 00 44 49 52 24  |_SetMode>...DIR$|
00046560  9c 00 00 00 9c 00 00 00  f8 65 04 00 46 fd ff ff  |.........e..F...|
00046570  ef e3 62 a1 45 00 00 00  13 00 00 00 00 00 00 00  |..b.E...........|
00046580  21 52 6f 6f 74 00 00 00  40 66 04 00 46 ff ff ff  |!Root...@f..F...|
00046590  02 d4 63 a1 11 01 00 00  13 00 00 00 00 00 00 00  |..c.............|
000465a0  4f 70 00 00 54 67 04 00  46 fd ff ff b3 11 63 a1  |Op..Tg..F.....c.|
000465b0  c1 00 00 00 13 00 00 00  00 00 00 00 4f 70 31 00  |............Op1.|
000465c0  18 68 04 00 46 fd ff ff  7f 78 63 a1 a7 01 00 00  |.h..F....xc.....|
000465d0  13 00 00 00 00 00 00 00  4f 70 30 00 c0 69 04 00  |........Op0..i..|
000465e0  46 fd ff ff 4c cd 63 a1  8d 01 00 00 13 00 00 00  |F...L.c.........|
000465f0  00 00 00 00 4f 70 32 00  44 41 54 41 45 00 00 00  |....Op2.DATAE...|
00046600  50 61 72 61 6c 6c 65 6c  0a 23 50 61 72 65 6e 74  |Parallel.#Parent|
00046610  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 50  | !Root.#Prefix P|
00046620  61 72 61 6c 6c 65 6c 5f  0a 48 61 72 64 77 61 72  |arallel_.Hardwar|
00046630  65 41 64 64 72 65 73 73  0a 3c 4f 70 3e 00 00 00  |eAddress.<Op>...|
00046640  44 41 54 41 11 01 00 00  50 61 72 61 6c 6c 65 6c  |DATA....Parallel|
00046650  5f 4f 70 0a 23 50 61 72  65 6e 74 20 50 61 72 61  |_Op.#Parent Para|
00046660  6c 6c 65 6c 5f 0a 3d 3e  09 52 30 20 3d 20 72 65  |llel_.=>.R0 = re|
00046670  61 73 6f 6e 20 63 6f 64  65 0a 0a 50 65 72 66 6f  |ason code..Perfo|
00046680  72 6d 73 20 64 69 72 65  63 74 20 6f 70 65 72 61  |rms direct opera|
00046690  74 69 6f 6e 73 20 74 6f  20 74 68 65 20 70 61 72  |tions to the par|
000466a0  61 6c 6c 65 6c 20 68 61  72 64 77 61 72 65 2e 0a  |allel hardware..|
000466b0  0a 23 54 61 62 0a 52 65  61 73 6f 6e 09 4d 65 61  |.#Tab.Reason.Mea|
000466c0  6e 69 6e 67 0a 23 4c 69  6e 65 0a 30 09 3c 52 65  |ning.#Line.0.<Re|
000466d0  61 64 20 64 61 74 61 20  61 6e 64 20 73 74 61 74  |ad data and stat|
000466e0  75 73 20 72 65 67 69 73  74 65 72 73 3d 3e 50 61  |us registers=>Pa|
000466f0  72 61 6c 6c 65 6c 5f 4f  70 30 3e 0a 31 09 3c 57  |rallel_Op0>.1.<W|
00046700  72 69 74 65 20 64 61 74  61 20 72 65 67 69 73 74  |rite data regist|
00046710  65 72 73 3d 3e 50 61 72  61 6c 6c 65 6c 5f 4f 70  |ers=>Parallel_Op|
00046720  31 3e 0a 32 09 3c 52 65  61 64 2f 77 72 69 74 65  |1>.2.<Read/write|
00046730  20 63 6f 6e 74 72 6f 6c  20 72 65 67 69 73 74 65  | control registe|
00046740  72 3d 3e 50 61 72 61 6c  6c 65 6c 5f 4f 70 32 3e  |r=>Parallel_Op2>|
00046750  0a 00 00 00 44 41 54 41  c1 00 00 00 50 61 72 61  |....DATA....Para|
00046760  6c 6c 65 6c 5f 4f 70 20  31 0a 3d 3e 09 52 30 20  |llel_Op 1.=>.R0 |
00046770  3d 20 31 0a 09 52 31 20  3d 20 64 61 74 61 20 74  |= 1..R1 = data t|
00046780  6f 20 77 72 69 74 65 0a  09 0a 54 68 69 73 20 53  |o write...This S|
00046790  57 49 20 77 72 69 74 65  73 20 74 6f 20 74 68 65  |WI writes to the|
000467a0  20 64 61 74 61 20 72 65  67 69 73 74 65 72 20 66  | data register f|
000467b0  6f 72 20 6f 75 74 70 75  74 20 6f 6e 20 74 68 65  |or output on the|
000467c0  20 70 72 69 6e 74 65 72  20 70 6f 72 74 2e 20 41  | printer port. A|
000467d0  20 63 6f 70 79 20 6f 66  20 74 68 69 73 20 64 61  | copy of this da|
000467e0  74 61 20 77 69 6c 6c 20  62 65 20 72 65 74 75 72  |ta will be retur|
000467f0  6e 65 64 20 6f 6e 20 74  68 65 20 6e 65 78 74 20  |ned on the next |
00046800  3c 72 65 61 64 3d 3e 50  61 72 61 6c 6c 65 6c 5f  |<read=>Parallel_|
00046810  4f 70 30 3e 2e 00 00 00  44 41 54 41 a7 01 00 00  |Op0>....DATA....|
00046820  50 61 72 61 6c 6c 65 6c  5f 4f 70 20 30 0a 3d 3e  |Parallel_Op 0.=>|
00046830  09 52 30 20 3d 20 30 0a  3c 3d 09 52 31 20 3d 20  |.R0 = 0.<=.R1 = |
00046840  64 61 74 61 20 72 65 67  69 73 74 65 72 20 63 6f  |data register co|
00046850  6e 74 65 6e 74 73 0a 09  52 32 20 3d 20 3c 73 74  |ntents..R2 = <st|
00046860  61 74 75 73 20 72 65 67  69 73 74 65 72 20 63 6f  |atus register co|
00046870  6e 74 65 6e 74 73 3d 3e  2e 62 69 74 73 3e 0a 09  |ntents=>.bits>..|
00046880  0a 54 68 69 73 20 53 57  49 20 72 65 61 64 73 20  |.This SWI reads |
00046890  74 68 65 20 64 61 74 61  20 61 6e 64 20 73 74 61  |the data and sta|
000468a0  74 75 73 20 72 65 67 69  73 74 65 72 73 20 74 61  |tus registers ta|
000468b0  6b 65 6e 20 66 72 6f 6d  20 74 68 65 20 70 72 69  |ken from the pri|
000468c0  6e 74 65 72 20 70 6f 72  74 2e 20 54 68 65 20 64  |nter port. The d|
000468d0  61 74 61 20 72 65 67 69  73 74 65 72 20 69 73 20  |ata register is |
000468e0  65 69 74 65 72 20 74 68  65 20 63 75 72 72 65 6e  |eiter the curren|
000468f0  74 20 76 61 6c 75 65 20  6f 6e 20 74 68 65 20 70  |t value on the p|
00046900  6f 72 74 2c 20 6f 72 20  74 68 65 20 6c 61 73 74  |ort, or the last|
00046910  20 76 61 6c 75 65 20 77  72 69 74 74 65 6e 20 69  | value written i|
00046920  66 20 6f 75 74 70 75 74  20 69 73 20 65 6e 61 62  |f output is enab|
00046930  6c 65 64 2e 0a 23 53 75  62 70 61 67 65 20 62 69  |led..#Subpage bi|
00046940  74 73 0a 53 74 61 74 75  73 20 72 65 67 69 73 74  |ts.Status regist|
00046950  65 72 20 62 69 74 73 0a  42 69 74 09 4d 65 61 6e  |er bits.Bit.Mean|
00046960  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 72 65 73 65  |ing.#Line.0.rese|
00046970  72 76 65 64 0a 31 09 72  65 73 65 72 76 65 64 0a  |rved.1.reserved.|
00046980  32 09 72 65 73 65 72 76  65 64 0a 33 09 45 72 72  |2.reserved.3.Err|
00046990  6f 72 0a 34 09 53 65 6c  65 63 74 0a 35 09 50 61  |or.4.Select.5.Pa|
000469a0  70 65 72 20 65 72 72 6f  72 0a 36 09 41 63 6b 6e  |per error.6.Ackn|
000469b0  6f 77 6c 65 64 67 65 0a  37 09 42 75 73 79 0a 00  |owledge.7.Busy..|
000469c0  44 41 54 41 8d 01 00 00  50 61 72 61 6c 6c 65 6c  |DATA....Parallel|
000469d0  5f 4f 70 20 32 0a 3d 3e  09 52 30 20 3d 20 32 0a  |_Op 2.=>.R0 = 2.|
000469e0  09 52 31 20 3d 20 45 4f  52 20 6d 61 73 6b 0a 09  |.R1 = EOR mask..|
000469f0  52 32 20 3d 20 41 4e 44  20 6d 61 73 6b 0a 0a 3c  |R2 = AND mask..<|
00046a00  3d 09 52 31 20 3d 20 6f  6c 64 20 63 6f 6e 74 65  |=.R1 = old conte|
00046a10  6e 74 73 20 6f 66 20 72  65 67 69 73 74 65 72 0a  |nts of register.|
00046a20  09 52 32 20 3d 20 6e 65  77 20 63 6f 6e 74 65 6e  |.R2 = new conten|
00046a30  74 73 20 6f 66 20 72 65  67 69 73 74 65 72 0a 09  |ts of register..|
00046a40  0a 54 68 69 73 20 53 57  49 20 77 72 69 74 65 73  |.This SWI writes|
00046a50  20 6f 72 20 72 65 61 64  73 20 74 68 65 20 74 68  | or reads the th|
00046a60  65 20 3c 63 6f 6e 74 72  6f 6c 20 72 65 67 69 73  |e <control regis|
00046a70  74 65 72 3d 3e 2e 62 69  74 73 3e 20 73 65 6e 74  |ter=>.bits> sent|
00046a80  20 74 6f 20 74 68 65 20  70 72 69 6e 74 65 72 20  | to the printer |
00046a90  70 6f 72 74 2e 0a 0a 54  6f 20 72 65 61 64 2c 20  |port...To read, |
00046aa0  75 73 65 20 52 31 3d 30  2c 20 52 32 3d 26 46 46  |use R1=0, R2=&FF|
00046ab0  46 46 46 46 46 46 2e 0a  23 53 75 62 70 61 67 65  |FFFFFF..#Subpage|
00046ac0  20 62 69 74 73 0a 43 6f  6e 74 72 6f 6c 20 72 65  | bits.Control re|
00046ad0  67 69 73 74 65 72 20 62  69 74 73 0a 42 69 74 09  |gister bits.Bit.|
00046ae0  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |Meaning.#Line.0.|
00046af0  53 74 72 6f 62 65 0a 31  09 41 75 74 6f 20 46 65  |Strobe.1.Auto Fe|
00046b00  65 64 0a 32 09 49 6e 69  74 20 28 52 65 73 65 74  |ed.2.Init (Reset|
00046b10  29 0a 33 09 53 65 6c 65  63 74 20 69 6e 0a 34 09  |).3.Select in.4.|
00046b20  49 52 51 20 65 6e 61 62  6c 65 0a 35 09 44 69 72  |IRQ enable.5.Dir|
00046b30  65 63 74 69 6f 6e 0a 36  09 72 65 73 65 72 76 65  |ection.6.reserve|
00046b40  64 0a 37 09 72 65 73 65  72 76 65 64 0a 00 00 00  |d.7.reserved....|
00046b50  44 49 52 24 74 00 00 00  74 00 00 00 c4 6b 04 00  |DIR$t...t....k..|
00046b60  46 fd ff ff a4 8b 1d 00  ba 01 00 00 13 00 00 00  |F...............|
00046b70  00 00 00 00 21 52 6f 6f  74 00 00 00 80 6d 04 00  |....!Root....m..|
00046b80  46 ff ff ff 2e a9 21 a5  67 01 00 00 13 00 00 00  |F.....!.g.......|
00046b90  00 00 00 00 50 61 67 65  53 69 7a 65 00 00 00 00  |....PageSize....|
00046ba0  e8 6e 04 00 46 ff ff ff  a9 d1 8f 21 03 01 00 00  |.n..F......!....|
00046bb0  13 00 00 00 00 00 00 00  53 65 6c 65 63 74 4a 6f  |........SelectJo|
00046bc0  62 00 00 00 44 41 54 41  ba 01 00 00 50 44 72 69  |b...DATA....PDri|
00046bd0  76 65 72 0a 23 50 61 72  65 6e 74 20 21 52 6f 6f  |ver.#Parent !Roo|
00046be0  74 0a 23 50 72 65 66 69  78 20 50 44 72 69 76 65  |t.#Prefix PDrive|
00046bf0  72 5f 0a 23 54 61 62 6c  65 20 31 35 20 32 30 0a  |r_.#Table 15 20.|
00046c00  20 41 62 6f 72 74 4a 6f  62 0a 20 43 61 6e 63 65  | AbortJob. Cance|
00046c10  6c 4a 6f 62 0a 20 43 61  6e 63 65 6c 4a 6f 62 57  |lJob. CancelJobW|
00046c20  69 74 68 45 72 72 6f 72  0a 20 43 68 65 63 6b 46  |ithError. CheckF|
00046c30  65 61 74 75 72 65 73 0a  20 43 75 72 72 65 6e 74  |eatures. Current|
00046c40  4a 6f 62 0a 2b 44 65 63  6c 61 72 65 44 72 69 76  |Job.+DeclareDriv|
00046c50  65 72 0a 2b 44 65 63 6c  61 72 65 46 6f 6e 74 0a  |er.+DeclareFont.|
00046c60  20 44 72 61 77 50 61 67  65 0a 20 45 6e 64 4a 6f  | DrawPage. EndJo|
00046c70  62 0a 2b 45 6e 75 6d 65  72 61 74 65 44 72 69 76  |b.+EnumerateDriv|
00046c80  65 72 73 0a 20 45 6e 75  6d 65 72 61 74 65 4a 6f  |ers. EnumerateJo|
00046c90  62 73 0a 20 46 6f 6e 74  53 57 49 0a 20 47 65 74  |bs. FontSWI. Get|
00046ca0  52 65 63 74 61 6e 67 6c  65 0a 20 47 69 76 65 52  |Rectangle. GiveR|
00046cb0  65 63 74 61 6e 67 6c 65  0a 20 49 6e 66 6f 0a 20  |ectangle. Info. |
00046cc0  49 6e 73 65 72 74 49 6c  6c 75 73 74 72 61 74 69  |InsertIllustrati|
00046cd0  6f 6e 0a 2b 4d 69 73 63  4f 70 0a 2b 4d 69 73 63  |on.+MiscOp.+Misc|
00046ce0  4f 70 46 6f 72 44 72 69  76 65 72 0a 20 3c 50 61  |OpForDriver. <Pa|
00046cf0  67 65 53 69 7a 65 3e 0a  2b 52 65 6d 6f 76 65 44  |geSize>.+RemoveD|
00046d00  72 69 76 65 72 0a 20 52  65 73 65 74 0a 20 53 63  |river. Reset. Sc|
00046d10  72 65 65 6e 44 75 6d 70  0a 2b 53 65 6c 65 63 74  |reenDump.+Select|
00046d20  44 72 69 76 65 72 0a 20  53 65 6c 65 63 74 49 6c  |Driver. SelectIl|
00046d30  6c 75 73 74 72 61 74 69  6f 6e 0a 20 3c 53 65 6c  |lustration. <Sel|
00046d40  65 63 74 4a 6f 62 3e 0a  2b 53 65 74 44 72 69 76  |ectJob>.+SetDriv|
00046d50  65 72 0a 20 53 65 74 49  6e 66 6f 0a 20 53 65 74  |er. SetInfo. Set|
00046d60  50 61 67 65 53 69 7a 65  0a 20 53 65 74 50 72 69  |PageSize. SetPri|
00046d70  6e 74 65 72 0a 23 45 6e  64 54 61 62 6c 65 00 00  |nter.#EndTable..|
00046d80  44 41 54 41 67 01 00 00  50 44 72 69 76 65 72 5f  |DATAg...PDriver_|
00046d90  50 61 67 65 53 69 7a 65  20 20 28 26 38 30 31 34  |PageSize  (&8014|
00046da0  32 29 0a 5c 3c 3d 09 52  31 20 3d 20 77 69 64 74  |2).\<=.R1 = widt|
00046db0  68 20 6f 66 20 70 61 70  65 72 0a 09 52 32 20 3d  |h of paper..R2 =|
00046dc0  20 68 65 69 67 68 74 20  6f 66 20 70 61 70 65 72  | height of paper|
00046dd0  0a 09 52 33 20 3d 20 6c  65 66 74 20 65 64 67 65  |..R3 = left edge|
00046de0  20 6f 66 20 70 72 69 6e  74 61 62 6c 65 20 61 72  | of printable ar|
00046df0  65 61 0a 09 52 34 20 3d  20 62 6f 74 74 6f 6d 20  |ea..R4 = bottom |
00046e00  65 64 67 65 20 6f 66 20  70 72 69 6e 74 61 62 6c  |edge of printabl|
00046e10  65 20 61 72 65 61 0a 09  52 35 20 3d 20 72 69 67  |e area..R5 = rig|
00046e20  68 74 20 65 64 67 65 20  6f 66 20 70 72 69 6e 74  |ht edge of print|
00046e30  61 62 6c 65 20 61 72 65  61 0a 09 52 36 20 3d 20  |able area..R6 = |
00046e40  74 6f 70 20 65 64 67 65  20 6f 66 20 70 72 69 6e  |top edge of prin|
00046e50  74 61 62 6c 65 20 61 72  65 61 0a 0a 54 68 69 73  |table area..This|
00046e60  20 53 57 49 20 72 65 74  75 72 6e 73 20 74 68 65  | SWI returns the|
00046e70  20 70 61 70 65 72 20 73  69 7a 65 2c 20 61 6e 64  | paper size, and|
00046e80  20 74 68 65 20 70 72 69  6e 74 61 62 6c 65 20 61  | the printable a|
00046e90  72 65 61 20 6f 6e 20 74  68 65 20 70 61 70 65 72  |rea on the paper|
00046ea0  20 28 6d 65 61 73 75 72  65 64 20 66 72 6f 6d 20  | (measured from |
00046eb0  62 6f 74 74 6f 6d 20 6c  65 66 74 20 6f 66 20 74  |bottom left of t|
00046ec0  68 65 20 70 61 70 65 72  29 20 41 6c 6c 20 76 61  |he paper) All va|
00046ed0  6c 75 65 73 20 61 72 65  20 69 6e 20 6d 69 6c 6c  |lues are in mill|
00046ee0  69 70 6f 69 6e 74 73 00  44 41 54 41 03 01 00 00  |ipoints.DATA....|
00046ef0  50 44 72 69 76 65 72 5f  53 65 6c 65 63 74 4a 6f  |PDriver_SelectJo|
00046f00  62 20 20 28 26 38 30 31  34 35 29 0a 3d 3e 09 52  |b  (&80145).=>.R|
00046f10  30 20 3d 09 46 69 6c 65  20 68 61 6e 64 6c 65 2c  |0 =.File handle,|
00046f20  20 6f 72 20 30 20 74 6f  20 63 61 6e 63 65 6c 20  | or 0 to cancel |
00046f30  63 75 72 72 65 6e 74 20  6a 6f 62 0a 09 52 31 20  |current job..R1 |
00046f40  3d 09 54 69 74 6c 65 20  73 74 72 69 6e 67 20 66  |=.Title string f|
00046f50  6f 72 20 6a 6f 62 2c 20  6f 72 20 30 20 69 66 20  |or job, or 0 if |
00046f60  6e 6f 6e 65 0a 0a 5c 3c  3d 09 52 30 20 3d 09 66  |none..\<=.R0 =.f|
00046f70  69 6c 65 20 68 61 6e 64  6c 65 20 6f 66 20 70 72  |ile handle of pr|
00046f80  65 76 69 6f 75 73 6c 79  20 61 63 74 69 76 65 20  |eviously active |
00046f90  6a 6f 62 0a 0a 54 68 69  73 20 53 57 49 20 73 74  |job..This SWI st|
00046fa0  61 72 74 73 20 61 20 6e  65 77 20 70 72 69 6e 74  |arts a new print|
00046fb0  20 6a 6f 62 2c 20 72 65  73 75 6d 65 73 20 61 20  | job, resumes a |
00046fc0  73 75 73 70 65 6e 64 65  64 20 6f 6e 65 2c 20 6f  |suspended one, o|
00046fd0  72 20 73 75 73 70 65 6e  64 73 20 74 68 65 20 63  |r suspends the c|
00046fe0  75 72 72 65 6e 74 20 6f  6e 65 2e 00 44 49 52 24  |urrent one..DIR$|
00046ff0  2c 00 00 00 2c 00 00 00  18 70 04 00 46 fd ff ff  |,...,....p..F...|
00047000  a6 8b 1d 00 73 00 00 00  13 00 00 00 00 00 00 00  |....s...........|
00047010  21 52 6f 6f 74 00 00 00  44 41 54 41 73 00 00 00  |!Root...DATAs...|
00047020  50 44 75 6d 70 65 72 0a  23 50 61 72 65 6e 74 20  |PDumper.#Parent |
00047030  21 52 6f 6f 74 0a 43 6c  61 69 6d 0a 43 6f 70 79  |!Root.Claim.Copy|
00047040  46 69 6c 65 6e 61 6d 65  0a 46 69 6e 64 0a 46 72  |Filename.Find.Fr|
00047050  65 65 0a 49 6e 66 6f 0a  4c 6f 6f 6b 75 70 45 72  |ee.Info.LookupEr|
00047060  72 6f 72 0a 50 72 65 70  61 72 65 53 74 72 69 70  |ror.PrepareStrip|
00047070  0a 53 65 74 43 6f 6c 6f  75 72 0a 53 74 61 72 74  |.SetColour.Start|
00047080  4a 6f 62 0a 54 69 64 79  4a 6f 62 00 44 49 52 24  |Job.TidyJob.DIR$|
00047090  2c 00 00 00 2c 00 00 00  b8 70 04 00 46 fd ff ff  |,...,....p..F...|
000470a0  a9 8b 1d 00 be 00 00 00  13 00 00 00 00 00 00 00  |................|
000470b0  21 52 6f 6f 74 00 00 00  44 41 54 41 be 00 00 00  |!Root...DATA....|
000470c0  50 6f 64 75 6c 65 0a 23  50 61 72 65 6e 74 20 21  |Podule.#Parent !|
000470d0  52 6f 6f 74 0a 43 61 6c  6c 4c 6f 61 64 65 72 0a  |Root.CallLoader.|
000470e0  45 6e 75 6d 65 72 61 74  65 43 68 75 6e 6b 73 0a  |EnumerateChunks.|
000470f0  45 6e 75 6d 65 72 61 74  65 43 68 75 6e 6b 73 57  |EnumerateChunksW|
00047100  69 74 68 49 6e 0a 48 61  72 64 77 61 72 65 41 64  |ithIn.HardwareAd|
00047110  64 72 65 73 73 0a 48 61  72 64 77 61 72 65 41 64  |dress.HardwareAd|
00047120  64 72 65 73 73 65 73 0a  52 61 77 52 65 61 64 0a  |dresses.RawRead.|
00047130  52 61 77 57 72 69 74 65  0a 52 65 61 64 42 79 74  |RawWrite.ReadByt|
00047140  65 73 0a 52 65 61 64 43  68 75 6e 6b 0a 52 65 61  |es.ReadChunk.Rea|
00047150  64 48 65 61 64 65 72 0a  52 65 61 64 49 44 0a 52  |dHeader.ReadID.R|
00047160  65 74 75 72 6e 4e 75 6d  62 65 72 0a 57 72 69 74  |eturnNumber.Writ|
00047170  65 42 79 74 65 73 00 00  44 49 52 24 2c 00 00 00  |eBytes..DIR$,...|
00047180  2c 00 00 00 a4 71 04 00  46 fd ff ff 13 d2 dc 14  |,....q..F.......|
00047190  51 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |Q...........!Roo|
000471a0  74 00 00 00 44 41 54 41  51 00 00 00 50 72 69 6e  |t...DATAQ...Prin|
000471b0  74 44 62 6f 78 0a 23 50  61 72 65 6e 74 20 21 52  |tDbox.#Parent !R|
000471c0  6f 6f 74 0a 23 50 72 65  66 69 78 20 50 72 69 6e  |oot.#Prefix Prin|
000471d0  74 44 62 6f 78 5f 0a 43  6c 61 73 73 53 57 49 0a  |tDbox_.ClassSWI.|
000471e0  50 6f 73 74 46 69 6c 74  65 72 0a 50 72 65 46 69  |PostFilter.PreFi|
000471f0  6c 74 65 72 0a 00 00 00  44 49 52 24 2c 00 00 00  |lter....DIR$,...|
00047200  2c 00 00 00 24 72 04 00  46 fd ff ff f2 d3 dc 14  |,...$r..F.......|
00047210  4f 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |O...........!Roo|
00047220  74 00 00 00 44 41 54 41  4f 00 00 00 50 72 6f 67  |t...DATAO...Prog|
00047230  49 6e 66 6f 0a 23 50 61  72 65 6e 74 20 21 52 6f  |Info.#Parent !Ro|
00047240  6f 74 0a 23 50 72 65 66  69 78 20 50 72 6f 67 49  |ot.#Prefix ProgI|
00047250  6e 66 6f 5f 0a 43 6c 61  73 73 53 57 49 0a 50 6f  |nfo_.ClassSWI.Po|
00047260  73 74 46 69 6c 74 65 72  0a 50 72 65 46 69 6c 74  |stFilter.PreFilt|
00047270  65 72 0a 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |er..DIR$,...,...|
00047280  a0 72 04 00 46 fd ff ff  ab 8b 1d 00 47 00 00 00  |.r..F.......G...|
00047290  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000472a0  44 41 54 41 47 00 00 00  52 61 6d 46 53 0a 23 50  |DATAG...RamFS.#P|
000472b0  61 72 65 6e 74 20 21 52  6f 6f 74 0a 44 65 73 63  |arent !Root.Desc|
000472c0  72 69 62 65 44 69 73 63  0a 44 69 73 63 4f 70 0a  |ribeDisc.DiscOp.|
000472d0  44 72 69 76 65 0a 46 72  65 65 53 70 61 63 65 0a  |Drive.FreeSpace.|
000472e0  4e 4f 50 0a 4e 4f 50 00  44 49 52 24 2c 00 00 00  |NOP.NOP.DIR$,...|
000472f0  2c 00 00 00 14 73 04 00  46 fd ff ff ad 8b 1d 00  |,....s..F.......|
00047300  3e 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |>...........!Roo|
00047310  74 00 00 00 44 41 54 41  3e 00 00 00 52 65 73 6f  |t...DATA>...Reso|
00047320  75 72 63 65 46 53 0a 23  50 61 72 65 6e 74 20 21  |urceFS.#Parent !|
00047330  52 6f 6f 74 0a 44 65 72  65 67 69 73 74 65 72 46  |Root.DeregisterF|
00047340  69 6c 65 73 0a 52 65 67  69 73 74 65 72 46 69 6c  |iles.RegisterFil|
00047350  65 73 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |es..DIR$,...,...|
00047360  80 73 04 00 46 fd ff ff  71 4c c7 13 80 00 00 00  |.s..F...qL......|
00047370  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00047380  44 41 54 41 80 00 00 00  52 4f 4d 43 61 63 68 65  |DATA....ROMCache|
00047390  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
000473a0  50 72 65 66 69 78 20 52  4f 4d 43 61 63 68 65 5f  |Prefix ROMCache_|
000473b0  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
000473c0  32 0a 43 61 63 68 65 0a  4c 69 6e 6b 0a 4c 6f 61  |2.Cache.Link.Loa|
000473d0  64 0a 53 77 61 70 0a 55  6e 63 61 63 68 65 0a 53  |d.Swap.Uncache.S|
000473e0  61 76 65 0a 53 65 74 53  74 61 74 65 0a 41 6c 6c  |ave.SetState.All|
000473f0  6f 63 61 74 65 0a 23 45  6e 64 54 61 62 6c 65 0a  |ocate.#EndTable.|
00047400  44 49 52 24 2c 00 00 00  2c 00 00 00 2c 74 04 00  |DIR$,...,...,t..|
00047410  46 fd ff ff 6a d7 dc 14  4b 00 00 00 13 00 00 00  |F...j...K.......|
00047420  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00047430  4b 00 00 00 53 61 76 65  41 73 0a 23 50 61 72 65  |K...SaveAs.#Pare|
00047440  6e 74 20 21 52 6f 6f 74  0a 23 50 72 65 66 69 78  |nt !Root.#Prefix|
00047450  20 53 61 76 65 41 73 5f  0a 43 6c 61 73 73 53 57  | SaveAs_.ClassSW|
00047460  49 0a 50 6f 73 74 46 69  6c 74 65 72 0a 50 72 65  |I.PostFilter.Pre|
00047470  46 69 6c 74 65 72 0a 00  44 49 52 24 2c 00 00 00  |Filter..DIR$,...|
00047480  2c 00 00 00 a4 74 04 00  46 fd ff ff 1a da dc 14  |,....t..F.......|
00047490  49 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |I...........!Roo|
000474a0  74 00 00 00 44 41 54 41  49 00 00 00 53 63 61 6c  |t...DATAI...Scal|
000474b0  65 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |e.#Parent !Root.|
000474c0  23 50 72 65 66 69 78 20  53 63 61 6c 65 5f 0a 43  |#Prefix Scale_.C|
000474d0  6c 61 73 73 53 57 49 0a  50 6f 73 74 46 69 6c 74  |lassSWI.PostFilt|
000474e0  65 72 0a 50 72 65 46 69  6c 74 65 72 0a 00 00 00  |er.PreFilter....|
000474f0  44 49 52 24 4c 00 00 00  4c 00 00 00 3c 75 04 00  |DIR$L...L...<u..|
00047500  47 fd ff ff 96 2a 13 0a  44 00 00 00 13 00 00 00  |G....*..D.......|
00047510  00 00 00 00 21 52 6f 6f  74 00 00 00 80 75 04 00  |....!Root....u..|
00047520  47 ff ff ff 33 37 13 0a  8a 00 00 00 13 00 00 00  |G...37..........|
00047530  00 00 00 00 43 6f 6e 74  72 6f 6c 00 44 41 54 41  |....Control.DATA|
00047540  44 00 00 00 53 63 72 65  65 6e 42 6c 61 6e 6b 65  |D...ScreenBlanke|
00047550  72 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |r.#Parent !Root.|
00047560  23 50 72 65 66 69 78 20  53 63 72 65 65 6e 42 6c  |#Prefix ScreenBl|
00047570  61 6e 6b 65 72 5f 0a 3c  43 6f 6e 74 72 6f 6c 3e  |anker_.<Control>|
00047580  44 41 54 41 8a 00 00 00  53 63 72 65 65 6e 42 6c  |DATA....ScreenBl|
00047590  61 6e 6b 65 72 5f 43 6f  6e 74 72 6f 6c 20 20 28  |anker_Control  (|
000475a0  26 34 33 31 30 30 29 0a  3d 3e 09 52 30 20 3d 09  |&43100).=>.R0 =.|
000475b0  30 0a 0a 42 6c 61 6e 6b  73 20 73 63 72 65 65 6e  |0..Blanks screen|
000475c0  20 69 6d 6d 65 64 69 61  74 65 6c 79 2e 0a 54 68  | immediately..Th|
000475d0  65 72 65 20 61 72 65 20  70 72 6f 62 61 62 6c 79  |ere are probably|
000475e0  20 6f 74 68 65 72 20 66  6c 61 67 73 2c 20 62 75  | other flags, bu|
000475f0  74 20 49 20 28 49 43 54  29 20 64 6f 6e 91 74 20  |t I (ICT) don.t |
00047600  6b 6e 6f 77 20 74 68 65  6d 2e 00 00 44 49 52 24  |know them...DIR$|
00047610  2c 00 00 00 2c 00 00 00  38 76 04 00 46 fd ff ff  |,...,...8v..F...|
00047620  b3 8b 1d 00 79 00 00 00  13 00 00 00 00 00 00 00  |....y...........|
00047630  21 52 6f 6f 74 00 00 00  44 41 54 41 79 00 00 00  |!Root...DATAy...|
00047640  53 43 53 49 0a 23 50 61  72 65 6e 74 20 21 52 6f  |SCSI.#Parent !Ro|
00047650  6f 74 0a 43 6f 6d 6d 61  6e 64 0a 44 65 73 63 72  |ot.Command.Descr|
00047660  69 62 65 44 69 73 63 0a  44 69 73 63 4f 70 0a 44  |ibeDisc.DiscOp.D|
00047670  72 69 76 65 73 0a 45 45  50 72 6f 6d 0a 46 72 65  |rives.EEProm.Fre|
00047680  65 53 70 61 63 65 0a 48  61 72 64 77 61 72 65 0a  |eSpace.Hardware.|
00047690  52 65 73 65 74 0a 53 74  61 74 75 73 0a 54 65 73  |Reset.Status.Tes|
000476a0  74 4d 6f 75 6e 74 65 64  0a 55 73 65 72 43 6f 64  |tMounted.UserCod|
000476b0  65 00 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |e...DIR$,...,...|
000476c0  e0 76 04 00 46 fd ff ff  94 d6 67 db 50 00 00 00  |.v..F.....g.P...|
000476d0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000476e0  44 41 54 41 50 00 00 00  53 68 61 72 65 64 43 4c  |DATAP...SharedCL|
000476f0  69 62 72 61 72 79 0a 23  50 61 72 65 6e 74 20 21  |ibrary.#Parent !|
00047700  52 6f 6f 74 0a 4c 69 62  49 6e 69 74 41 50 43 53  |Root.LibInitAPCS|
00047710  5f 41 0a 4c 69 62 49 6e  69 74 41 50 43 53 5f 52  |_A.LibInitAPCS_R|
00047720  0a 4c 69 62 49 6e 69 74  4d 6f 64 75 6c 65 20 20  |.LibInitModule  |
00047730  44 49 52 24 2c 00 00 00  2c 00 00 00 5c 77 04 00  |DIR$,...,...\w..|
00047740  46 fd ff ff ba 8b 1d 00  2a 00 00 00 13 00 00 00  |F.......*.......|
00047750  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00047760  2a 00 00 00 53 68 65 6c  6c 0a 23 50 61 72 65 6e  |*...Shell.#Paren|
00047770  74 20 21 52 6f 6f 74 0a  43 72 65 61 74 65 0a 44  |t !Root.Create.D|
00047780  65 73 74 72 6f 79 00 00  44 49 52 24 50 01 00 00  |estroy..DIR$P...|
00047790  50 01 00 00 d8 78 04 00  46 fd ff ff bb 8b 1d 00  |P....x..F.......|
000477a0  46 01 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |F...........!Roo|
000477b0  74 00 00 00 20 7a 04 00  46 ff ff ff 36 42 6d 48  |t... z..F...6BmH|
000477c0  e6 00 00 00 13 00 00 00  00 00 00 00 41 74 74 61  |............Atta|
000477d0  63 68 4e 61 6d 65 64 56  6f 69 63 65 00 00 00 00  |chNamedVoice....|
000477e0  08 7b 04 00 45 ff ff ff  03 db ec ff a2 01 00 00  |.{..E...........|
000477f0  13 00 00 00 00 00 00 00  41 74 74 61 63 68 56 6f  |........AttachVo|
00047800  69 63 65 00 ac 7c 04 00  45 ff ff ff b8 d7 ec ff  |ice..|..E.......|
00047810  e5 02 00 00 13 00 00 00  00 00 00 00 43 6f 6e 66  |............Conf|
00047820  69 67 75 72 65 00 00 00  94 7f 04 00 45 ff ff ff  |igure.......E...|
00047830  aa d1 ec ff 3c 01 00 00  13 00 00 00 00 00 00 00  |....<...........|
00047840  45 6e 61 62 6c 65 00 00  d0 80 04 00 46 ff ff ff  |Enable......F...|
00047850  1c 48 6d 48 d5 01 00 00  13 00 00 00 00 00 00 00  |.HmH............|
00047860  49 6e 73 74 61 6c 6c 56  6f 69 63 65 00 00 00 00  |InstallVoice....|
00047870  a8 82 04 00 46 ff ff ff  d6 61 6d 48 df 01 00 00  |....F....amH....|
00047880  13 00 00 00 00 00 00 00  52 65 6d 6f 76 65 56 6f  |........RemoveVo|
00047890  69 63 65 00 88 84 04 00  45 ff ff ff 69 eb ec ff  |ice.....E...i...|
000478a0  1c 01 00 00 13 00 00 00  00 00 00 00 53 6f 75 6e  |............Soun|
000478b0  64 4c 6f 67 00 00 00 00  a4 85 04 00 46 ff ff ff  |dLog........F...|
000478c0  dd df 74 4f 3a 01 00 00  13 00 00 00 00 00 00 00  |..tO:...........|
000478d0  56 6f 6c 75 6d 65 00 00  44 41 54 41 46 01 00 00  |Volume..DATAF...|
000478e0  53 6f 75 6e 64 0a 23 50  61 72 65 6e 74 20 21 52  |Sound.#Parent !R|
000478f0  6f 6f 74 0a 23 50 72 65  66 69 78 20 53 6f 75 6e  |oot.#Prefix Soun|
00047900  64 5f 0a 23 54 61 62 6c  65 20 31 33 20 31 38 0a  |d_.#Table 13 18.|
00047910  3c 41 74 74 61 63 68 4e  61 6d 65 64 56 6f 69 63  |<AttachNamedVoic|
00047920  65 3e 0a 3c 41 74 74 61  63 68 56 6f 69 63 65 3e  |e>.<AttachVoice>|
00047930  0a 3c 43 6f 6e 66 69 67  75 72 65 3e 0a 43 6f 6e  |.<Configure>.Con|
00047940  74 72 6f 6c 0a 43 6f 6e  74 72 6f 6c 50 61 63 6b  |trol.ControlPack|
00047950  65 64 0a 3c 45 6e 61 62  6c 65 3e 0a 3c 49 6e 73  |ed.<Enable>.<Ins|
00047960  74 61 6c 6c 56 6f 69 63  65 3e 0a 4c 6f 67 53 63  |tallVoice>.LogSc|
00047970  61 6c 65 0a 50 69 74 63  68 0a 51 42 65 61 74 0a  |ale.Pitch.QBeat.|
00047980  51 46 72 65 65 0a 51 49  6e 69 74 0a 51 49 6e 74  |QFree.QInit.QInt|
00047990  65 72 66 61 63 65 0a 51  52 65 6d 6f 76 65 0a 51  |erface.QRemove.Q|
000479a0  53 68 65 64 75 6c 65 0a  51 53 44 69 73 70 61 74  |Shedule.QSDispat|
000479b0  63 68 0a 51 54 65 6d 70  6f 0a 52 65 61 64 43 6f  |ch.QTempo.ReadCo|
000479c0  6e 74 72 6f 6c 42 6c 6f  63 6b 0a 3c 52 65 6d 6f  |ntrolBlock.<Remo|
000479d0  76 65 56 6f 69 63 65 3e  0a 3c 53 6f 75 6e 64 4c  |veVoice>.<SoundL|
000479e0  6f 67 3e 0a 53 70 65 61  6b 65 72 0a 53 74 65 72  |og>.Speaker.Ster|
000479f0  65 6f 0a 54 75 6e 69 6e  67 0a 3c 56 6f 6c 75 6d  |eo.Tuning.<Volum|
00047a00  65 3e 0a 57 72 69 74 65  43 6f 6e 74 72 6f 6c 42  |e>.WriteControlB|
00047a10  6c 6f 63 6b 0a 23 45 6e  64 54 61 62 6c 65 00 00  |lock.#EndTable..|
00047a20  44 41 54 41 e6 00 00 00  53 6f 75 6e 64 5f 41 74  |DATA....Sound_At|
00047a30  74 61 63 68 4e 61 6d 65  64 56 6f 69 63 65 20 20  |tachNamedVoice  |
00047a40  28 26 34 30 31 38 41 29  0a 23 50 61 72 65 6e 74  |(&4018A).#Parent|
00047a50  20 53 6f 75 6e 64 5f 0a  3d 3e 09 52 30 20 3d 09  | Sound_.=>.R0 =.|
00047a60  63 68 61 6e 6e 65 6c 20  6e 75 6d 62 65 72 20 28  |channel number (|
00047a70  31 2d 38 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |1-8)..R1 =.point|
00047a80  65 72 20 74 6f 20 76 6f  69 63 65 20 6e 61 6d 65  |er to voice name|
00047a90  20 28 6e 75 6c 6c 20 74  65 72 6d 69 6e 61 74 65  | (null terminate|
00047aa0  64 20 41 53 43 49 49 29  0a 0a 5c 3c 3d 09 52 30  |d ASCII)..\<=.R0|
00047ab0  20 3d 09 70 72 65 73 65  72 76 65 64 2c 20 6f 72  | =.preserved, or|
00047ac0  20 30 20 66 6f 72 20 66  61 69 6c 0a 09 52 31 20  | 0 for fail..R1 |
00047ad0  3d 09 70 72 65 73 65 72  76 65 64 0a 0a 53 65 65  |=.preserved..See|
00047ae0  20 3c 53 6f 75 6e 64 5f  41 74 74 61 63 68 56 6f  | <Sound_AttachVo|
00047af0  69 63 65 3e 20 66 6f 72  20 6d 6f 72 65 20 64 65  |ice> for more de|
00047b00  74 61 69 6c 73 2e 00 00  44 41 54 41 a2 01 00 00  |tails...DATA....|
00047b10  53 6f 75 6e 64 5f 41 74  74 61 63 68 56 6f 69 63  |Sound_AttachVoic|
00047b20  65 20 20 28 26 34 30 31  38 35 29 0a 23 50 61 72  |e  (&40185).#Par|
00047b30  65 6e 74 20 53 6f 75 6e  64 5f 0a 3d 3e 09 52 30  |ent Sound_.=>.R0|
00047b40  20 3d 20 63 68 61 6e 6e  65 6c 20 6e 75 6d 62 65  | = channel numbe|
00047b50  72 20 28 31 2d 38 29 0a  09 52 31 20 3d 20 76 6f  |r (1-8)..R1 = vo|
00047b60  69 63 65 20 73 6c 6f 74  20 74 6f 20 61 74 74 61  |ice slot to atta|
00047b70  63 68 20 28 30 20 74 6f  20 64 65 74 61 63 68 20  |ch (0 to detach |
00047b80  61 6e 64 20 6d 75 74 65  29 0a 0a 5c 3c 3d 09 52  |and mute)..\<=.R|
00047b90  30 20 3d 20 70 72 65 73  65 72 76 65 64 20 28 6f  |0 = preserved (o|
00047ba0  72 20 30 20 69 66 20 69  6c 6c 65 67 61 6c 20 63  |r 0 if illegal c|
00047bb0  68 61 6e 6e 65 6c 20 6e  75 6d 62 65 72 29 0a 09  |hannel number)..|
00047bc0  52 31 20 3d 20 70 72 65  76 69 6f 75 73 20 76 6f  |R1 = previous vo|
00047bd0  69 63 65 20 6e 75 6d 62  65 72 20 28 30 20 66 6f  |ice number (0 fo|
00047be0  72 20 6e 6f 20 70 72 65  76 69 6f 75 73 29 0a 0a  |r no previous)..|
00047bf0  54 68 65 20 70 72 65 76  69 6f 75 73 20 76 6f 69  |The previous voi|
00047c00  63 65 20 69 73 20 73 68  75 74 20 64 6f 77 6e 20  |ce is shut down |
00047c10  61 6e 64 20 74 68 65 20  6e 65 77 20 6f 6e 65 20  |and the new one |
00047c20  69 73 20 72 65 73 65 74  2e 0a 0a 44 69 66 66 65  |is reset...Diffe|
00047c30  72 65 6e 74 20 61 6c 67  6f 72 69 74 68 6d 73 20  |rent algorithms |
00047c40  68 61 76 65 20 64 69 66  66 65 72 65 6e 74 20 69  |have different i|
00047c50  6e 74 65 72 6e 61 6c 20  73 74 61 74 65 20 72 65  |nternal state re|
00047c60  70 72 65 73 65 6e 74 61  74 69 6f 6e 73 20 73 6f  |presentations so|
00047c70  20 69 74 20 69 73 20 6e  6f 74 20 70 6f 73 73 69  | it is not possi|
00047c80  62 6c 65 20 74 6f 20 73  77 61 70 20 56 6f 69 63  |ble to swap Voic|
00047c90  65 20 47 65 6e 65 72 61  74 6f 72 73 20 69 6e 20  |e Generators in |
00047ca0  6d 69 64 2d 73 6f 75 6e  64 2e 00 00 44 41 54 41  |mid-sound...DATA|
00047cb0  e5 02 00 00 53 6f 75 6e  64 5f 43 6f 6e 66 69 67  |....Sound_Config|
00047cc0  75 72 65 20 20 28 26 34  30 31 34 30 29 0a 23 50  |ure  (&40140).#P|
00047cd0  61 72 65 6e 74 20 53 6f  75 6e 64 5f 0a 3d 3e 09  |arent Sound_.=>.|
00047ce0  52 30 20 3d 20 6e 75 6d  62 65 72 20 6f 66 20 63  |R0 = number of c|
00047cf0  68 61 6e 6e 65 6c 73 3b  20 72 6f 75 6e 64 65 64  |hannels; rounded|
00047d00  20 74 6f 20 31 2c 32 2c  34 20 6f 72 20 38 0a 09  | to 1,2,4 or 8..|
00047d10  52 31 20 3d 20 44 4d 41  20 62 75 66 66 65 72 20  |R1 = DMA buffer |
00047d20  73 69 7a 65 2c 20 69 6e  20 62 79 74 65 73 20 66  |size, in bytes f|
00047d30  6f 72 20 6f 6e 65 20 63  68 61 6e 6e 65 6c 0a 09  |or one channel..|
00047d40  52 32 20 3d 20 73 61 6d  70 6c 65 20 70 65 72 69  |R2 = sample peri|
00047d50  6f 64 20 69 6e 20 b5 73  20 28 6f 76 65 72 61 6c  |od in .s (overal|
00047d60  6c 29 0a 09 52 33 20 3d  20 70 6f 69 6e 74 65 72  |l)..R3 = pointer|
00047d70  20 74 6f 20 43 68 61 6e  6e 65 6c 20 48 61 6e 64  | to Channel Hand|
00047d80  6c 65 72 20 28 30 20 74  6f 20 70 72 65 73 65 72  |ler (0 to preser|
00047d90  76 65 29 0a 09 52 34 20  3d 20 70 6f 69 6e 74 65  |ve)..R4 = pointe|
00047da0  72 20 74 6f 20 53 63 68  65 64 75 6c 65 72 20 28  |r to Scheduler (|
00047db0  30 20 74 6f 20 70 72 65  73 65 72 76 65 29 0a 0a  |0 to preserve)..|
00047dc0  5c 3c 3d 09 52 30 2d 52  34 20 3d 20 70 72 65 76  |\<=.R0-R4 = prev|
00047dd0  69 6f 75 73 20 76 61 6c  75 65 73 0a 20 20 20 20  |ious values.    |
00047de0  20 20 20 20 20 20 20 20  20 20 20 20 20 0a 50 6c  |             .Pl|
00047df0  65 61 73 65 20 6e 6f 74  65 20 74 68 61 74 20 52  |ease note that R|
00047e00  32 20 73 65 74 73 20 74  68 65 20 73 61 6d 70 6c  |2 sets the sampl|
00047e10  65 20 70 65 72 69 6f 64  20 66 6f 72 20 61 6c 6c  |e period for all|
00047e20  20 63 68 61 6e 6e 65 6c  73 2c 20 73 6f 20 61 20  | channels, so a |
00047e30  63 61 6c 6c 20 77 69 74  68 20 52 30 3d 34 20 61  |call with R0=4 a|
00047e40  6e 64 20 52 32 3d 34 38  20 67 69 76 65 73 20 61  |nd R2=48 gives a|
00047e50  20 73 61 6d 70 6c 65 20  70 65 72 69 6f 64 20 6f  | sample period o|
00047e60  66 20 34 38 2f 34 20 3d  20 31 32 20 b5 73 20 70  |f 48/4 = 12 .s p|
00047e70  65 72 20 63 68 61 6e 6e  65 6c 2c 20 77 68 69 6c  |er channel, whil|
00047e80  65 20 74 68 65 20 70 65  72 69 6f 64 20 6f 66 20  |e the period of |
00047e90  74 68 65 20 73 6f 75 6e  64 20 73 79 73 74 65 6d  |the sound system|
00047ea0  20 69 73 20 34 38 20 b5  73 2e 20 55 73 65 20 74  | is 48 .s. Use t|
00047eb0  68 65 20 66 6f 72 6d 75  6c 61 20 66 3d 31 2f 54  |he formula f=1/T|
00047ec0  20 74 6f 20 63 6f 6d 70  75 74 65 20 74 68 65 20  | to compute the |
00047ed0  73 61 6d 70 6c 65 20 72  61 74 65 20 28 68 65 72  |sample rate (her|
00047ee0  65 20 32 30 2e 38 33 33  20 6b 48 7a 29 2e 20 52  |e 20.833 kHz). R|
00047ef0  31 20 73 70 65 63 69 66  69 65 73 20 74 68 65 20  |1 specifies the |
00047f00  44 4d 41 20 73 77 61 70  20 62 75 66 66 65 72 20  |DMA swap buffer |
00047f10  6c 65 6e 67 74 68 20 66  6f 72 20 6f 6e 65 20 63  |length for one c|
00047f20  68 61 6e 6e 65 6c 2c 20  74 68 65 20 65 6e 74 69  |hannel, the enti|
00047f30  72 65 20 6d 65 6d 6f 72  79 20 61 72 65 61 20 68  |re memory area h|
00047f40  61 73 20 52 31 2a 52 30  20 62 79 74 65 73 2e 0a  |as R1*R0 bytes..|
00047f50  0a 41 6c 6c 20 63 75 72  72 65 6e 74 20 73 65 74  |.All current set|
00047f60  74 69 6e 67 73 20 6d 61  79 20 62 65 20 72 65 61  |tings may be rea|
00047f70  64 20 62 79 20 75 73 69  6e 67 20 7a 65 72 6f 20  |d by using zero |
00047f80  69 6e 70 75 74 20 70 61  72 61 6d 65 74 65 72 73  |input parameters|
00047f90  2e 00 00 00 44 41 54 41  3c 01 00 00 53 6f 75 6e  |....DATA<...Soun|
00047fa0  64 5f 45 6e 61 62 6c 65  20 20 28 26 34 30 31 34  |d_Enable  (&4014|
00047fb0  31 29 0a 23 50 61 72 65  6e 74 20 53 6f 75 6e 64  |1).#Parent Sound|
00047fc0  5f 0a 3d 3e 09 52 30 20  3d 20 6e 65 77 20 73 74  |_.=>.R0 = new st|
00047fd0  61 74 65 3a 0a 09 20 20  30 20 66 6f 72 20 6e 6f  |ate:..  0 for no|
00047fe0  20 63 68 61 6e 67 65 20  28 72 65 61 64 20 73 74  | change (read st|
00047ff0  61 74 65 29 0a 09 20 20  31 20 66 6f 72 20 4f 46  |ate)..  1 for OF|
00048000  46 0a 09 20 20 32 20 66  6f 72 20 4f 4e 0a 0a 5c  |F..  2 for ON..\|
00048010  3c 3d 09 52 30 20 3d 20  70 72 65 76 69 6f 75 73  |<=.R0 = previous|
00048020  20 73 74 61 74 65 3a 0a  09 20 20 30 20 66 6f 72  | state:..  0 for|
00048030  20 4f 46 46 0a 09 20 20  31 20 66 6f 72 20 63 6c  | OFF..  1 for cl|
00048040  6f 73 65 64 6f 77 6e 20  69 6d 6d 69 6e 65 6e 74  |osedown imminent|
00048050  0a 09 20 20 32 20 66 6f  72 20 63 6c 6f 73 65 64  |..  2 for closed|
00048060  6f 77 6e 20 69 6e 20 70  72 6f 67 72 65 73 73 0a  |own in progress.|
00048070  09 20 20 33 20 66 6f 72  20 61 63 74 69 76 65 20  |.  3 for active |
00048080  4f 4e 0a 0a 54 68 69 73  20 53 57 49 20 69 73 20  |ON..This SWI is |
00048090  75 73 65 64 20 74 6f 20  65 6e 61 62 6c 65 20 6f  |used to enable o|
000480a0  72 20 64 69 73 61 62 6c  65 20 61 6c 6c 20 53 6f  |r disable all So|
000480b0  75 6e 64 20 69 6e 74 65  72 72 75 70 74 73 20 61  |und interrupts a|
000480c0  6e 64 20 44 4d 41 20 61  63 74 69 76 69 74 79 2e  |nd DMA activity.|
000480d0  44 41 54 41 d5 01 00 00  53 6f 75 6e 64 5f 49 6e  |DATA....Sound_In|
000480e0  73 74 61 6c 6c 56 6f 69  63 65 20 20 28 26 34 30  |stallVoice  (&40|
000480f0  31 38 33 29 0a 23 50 61  72 65 6e 74 20 53 6f 75  |183).#Parent Sou|
00048100  6e 64 5f 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |nd_.=>.R0 =.poin|
00048110  74 65 72 20 74 6f 20 56  6f 69 63 65 20 47 65 6e  |ter to Voice Gen|
00048120  65 72 61 74 6f 72 20 28  30 20 74 6f 20 72 65 61  |erator (0 to rea|
00048130  64 29 0a 09 52 31 20 3d  09 76 6f 69 63 65 20 73  |d)..R1 =.voice s|
00048140  6c 6f 74 20 28 31 2d 33  32 29 20 28 30 20 74 6f  |lot (1-32) (0 to|
00048150  20 75 73 65 20 6e 65 78  74 20 66 72 65 65 20 73  | use next free s|
00048160  6c 6f 74 29 0a 0a 5c 3c  3d 09 52 30 20 3d 09 70  |lot)..\<=.R0 =.p|
00048170  6f 69 6e 74 65 72 20 74  6f 20 6e 61 6d 65 20 6f  |ointer to name o|
00048180  66 20 70 72 65 76 69 6f  75 73 20 76 6f 69 63 65  |f previous voice|
00048190  20 28 6f 72 20 6e 75 6c  6c 20 74 65 72 6d 69 6e  | (or null termin|
000481a0  61 74 65 64 20 65 72 72  6f 72 20 73 74 72 69 6e  |ated error strin|
000481b0  67 29 0a 09 52 31 20 3d  09 76 6f 69 63 65 20 6e  |g)..R1 =.voice n|
000481c0  75 6d 62 65 72 20 61 6c  6c 6f 63 61 74 65 64 20  |umber allocated |
000481d0  28 30 20 66 6f 72 20 66  61 69 6c 65 64 21 29 0a  |(0 for failed!).|
000481e0  0a 55 73 65 20 74 68 69  73 20 63 61 6c 6c 20 74  |.Use this call t|
000481f0  6f 20 61 64 64 20 61 20  56 6f 69 63 65 20 47 65  |o add a Voice Ge|
00048200  6e 65 72 61 74 6f 72 20  74 6f 20 74 68 65 20 74  |nerator to the t|
00048210  61 62 6c 65 20 6f 66 20  61 76 61 69 6c 61 62 6c  |able of availabl|
00048220  65 20 76 6f 69 63 65 73  2e 20 41 6e 20 65 72 72  |e voices. An err|
00048230  6f 72 20 69 73 20 69 6e  64 69 63 61 74 65 64 20  |or is indicated |
00048240  62 79 20 52 31 20 73 65  74 20 74 6f 20 7a 65 72  |by R1 set to zer|
00048250  6f 20 6f 6e 20 65 78 69  74 2c 20 61 6e 64 20 52  |o on exit, and R|
00048260  30 20 70 6f 69 6e 74 69  6e 67 20 74 6f 20 61 6e  |0 pointing to an|
00048270  20 65 72 72 6f 72 20 73  74 72 69 6e 67 2c 20 6e  | error string, n|
00048280  6f 74 20 74 68 65 20 56  20 62 69 74 20 73 65 74  |ot the V bit set|
00048290  20 69 6e 20 74 68 65 20  75 73 75 61 6c 20 6d 61  | in the usual ma|
000482a0  6e 6e 65 72 2e 00 00 00  44 41 54 41 df 01 00 00  |nner....DATA....|
000482b0  53 6f 75 6e 64 5f 52 65  6d 6f 76 65 56 6f 69 63  |Sound_RemoveVoic|
000482c0  65 20 20 28 26 34 30 31  38 34 29 0a 23 50 61 72  |e  (&40184).#Par|
000482d0  65 6e 74 20 53 6f 75 6e  64 5f 0a 3d 3e 09 52 30  |ent Sound_.=>.R0|
000482e0  20 3d 09 76 6f 69 63 65  20 73 6c 6f 74 20 74 6f  | =.voice slot to|
000482f0  20 72 65 6d 6f 76 65 20  28 31 2d 33 32 29 0a 0a  | remove (1-32)..|
00048300  5c 3c 3d 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |\<=.R0 =.pointer|
00048310  20 74 6f 20 6e 61 6d 65  20 6f 66 20 70 72 65 76  | to name of prev|
00048320  69 6f 75 73 20 76 6f 69  63 65 20 28 6f 72 20 65  |ious voice (or e|
00048330  72 72 6f 72 20 6d 65 73  73 61 67 65 29 0a 09 52  |rror message)..R|
00048340  31 20 3d 09 76 6f 69 63  65 20 6e 75 6d 62 65 72  |1 =.voice number|
00048350  20 64 65 2d 61 6c 6c 6f  63 61 74 65 64 20 28 30  | de-allocated (0|
00048360  20 66 6f 72 20 66 61 69  6c 29 0a 0a 54 68 69 73  | for fail)..This|
00048370  20 53 57 49 20 69 73 20  75 73 65 64 20 74 6f 20  | SWI is used to |
00048380  72 65 6d 6f 76 65 20 61  20 76 6f 69 63 65 20 66  |remove a voice f|
00048390  72 6f 6d 20 74 68 65 20  73 79 73 74 65 6d 2c 20  |rom the system, |
000483a0  61 6e 64 20 6e 6f 74 69  66 69 65 73 20 74 68 65  |and notifies the|
000483b0  20 43 68 61 6e 6e 65 6c  20 48 61 6e 64 6c 65 72  | Channel Handler|
000483c0  2e 20 45 72 72 6f 72 20  68 61 6e 64 6c 69 6e 67  |. Error handling|
000483d0  20 6c 69 6b 65 20 69 6e  20 3c 53 6f 75 6e 64 5f  | like in <Sound_|
000483e0  49 6e 73 74 61 6c 6c 56  6f 69 63 65 3e 2e 20 54  |InstallVoice>. T|
000483f0  68 69 73 20 63 61 6c 6c  20 6d 75 73 74 20 61 6c  |his call must al|
00048400  73 6f 20 62 65 20 69 73  73 75 65 64 20 62 65 66  |so be issued bef|
00048410  6f 72 65 20 74 68 65 20  52 4d 41 20 69 73 20 74  |ore the RMA is t|
00048420  69 64 69 65 64 2c 20 73  69 6e 63 65 20 74 68 65  |idied, since the|
00048430  20 6d 6f 64 75 6c 65 20  63 6f 6e 74 61 69 6e 73  | module contains|
00048440  20 61 62 73 6f 6c 75 74  65 20 70 6f 69 6e 74 65  | absolute pointe|
00048450  72 73 20 74 6f 20 56 6f  69 63 65 20 47 65 6e 65  |rs to Voice Gene|
00048460  72 61 74 6f 72 73 20 74  68 61 74 20 61 72 65 20  |rators that are |
00048470  6c 69 6b 65 6c 79 20 74  6f 20 65 78 69 73 74 20  |likely to exist |
00048480  69 6e 20 52 4d 41 2e 00  44 41 54 41 1c 01 00 00  |in RMA..DATA....|
00048490  53 6f 75 6e 64 5f 53 6f  75 6e 64 4c 6f 67 20 20  |Sound_SoundLog  |
000484a0  28 26 34 30 31 38 31 29  0a 23 50 61 72 65 6e 74  |(&40181).#Parent|
000484b0  20 53 6f 75 6e 64 5f 0a  3d 3e 09 52 30 20 3d 20  | Sound_.=>.R0 = |
000484c0  33 32 2d 62 69 74 20 73  69 67 6e 65 64 20 69 6e  |32-bit signed in|
000484d0  74 65 67 65 72 0a 0a 5c  3c 3d 09 52 30 20 3d 20  |teger..\<=.R0 = |
000484e0  38 2d 62 69 74 20 73 69  67 6e 65 64 20 76 6f 6c  |8-bit signed vol|
000484f0  75 6d 65 2d 73 63 61 6c  65 64 20 6c 6f 67 61 72  |ume-scaled logar|
00048500  69 74 68 6d 20 28 4c 53  42 29 0a 0a 54 68 69 73  |ithm (LSB)..This|
00048510  20 63 61 6c 6c 20 63 6f  6e 76 65 72 74 73 20 61  | call converts a|
00048520  20 73 69 67 6e 65 64 20  69 6e 74 65 67 65 72 20  | signed integer |
00048530  6c 6f 6e 67 77 6f 72 64  20 74 6f 20 61 20 73 69  |longword to a si|
00048540  67 6e 65 64 20 6c 6f 67  61 72 69 74 68 6d 20 62  |gned logarithm b|
00048550  79 74 65 20 69 6e 20 56  49 44 43 20 6c 6f 77 65  |yte in VIDC lowe|
00048560  72 20 73 69 67 6e 20 62  69 74 20 66 6f 72 6d 61  |r sign bit forma|
00048570  74 20 76 69 61 20 74 61  62 6c 65 20 6c 6f 6f 6b  |t via table look|
00048580  75 70 20 28 69 65 20 74  68 65 20 63 75 72 72 65  |up (ie the curre|
00048590  6e 74 20 76 6f 6c 75 6d  65 20 73 65 74 74 69 6e  |nt volume settin|
000485a0  67 21 29 2e 44 41 54 41  3a 01 00 00 53 6f 75 6e  |g!).DATA:...Soun|
000485b0  64 5f 56 6f 6c 75 6d 65  20 20 28 26 34 30 31 38  |d_Volume  (&4018|
000485c0  30 29 0a 23 50 61 72 65  6e 74 20 53 6f 75 6e 64  |0).#Parent Sound|
000485d0  5f 0a 3d 3e 09 52 30 20  3d 09 73 6f 75 6e 64 20  |_.=>.R0 =.sound |
000485e0  76 6f 6c 75 6d 65 20 28  31 2d 31 32 37 29 20 28  |volume (1-127) (|
000485f0  30 20 74 6f 20 72 65 61  64 20 73 65 74 74 69 6e  |0 to read settin|
00048600  67 29 0a 5c 3c 3d 09 52  30 20 3d 09 70 72 65 76  |g).\<=.R0 =.prev|
00048610  69 6f 75 73 20 76 6f 6c  75 6d 65 0a 0a 54 68 69  |ious volume..Thi|
00048620  73 20 63 61 6c 6c 20 73  65 74 73 20 74 68 65 20  |s call sets the |
00048630  6d 61 78 69 6d 75 6d 20  6f 76 65 72 61 6c 6c 20  |maximum overall |
00048640  76 6f 6c 75 6d 65 20 6f  66 20 74 68 65 20 53 6f  |volume of the So|
00048650  75 6e 64 20 73 79 73 74  65 6d 2e 20 41 20 63 68  |und system. A ch|
00048660  61 6e 67 65 20 6f 66 20  31 36 20 77 69 6c 6c 20  |ange of 16 will |
00048670  68 61 6c 76 65 20 6f 72  20 64 6f 75 62 6c 65 20  |halve or double |
00048680  74 68 65 20 76 6f 6c 75  6d 65 2e 20 54 68 65 20  |the volume. The |
00048690  63 6f 6d 6d 61 6e 64 20  61 6c 73 6f 20 73 63 61  |command also sca|
000486a0  6c 65 73 20 74 68 65 20  69 6e 74 65 72 6e 61 6c  |les the internal|
000486b0  20 76 6f 6c 75 6d 65 20  6c 6f 6f 6b 75 70 20 74  | volume lookup t|
000486c0  61 62 6c 65 73 20 6f 66  20 74 68 65 20 56 6f 69  |ables of the Voi|
000486d0  63 65 20 47 65 6e 65 72  61 74 6f 72 73 2e 00 00  |ce Generators...|
000486e0  44 49 52 24 2c 00 00 00  2c 00 00 00 0c 87 04 00  |DIR$,...,.......|
000486f0  46 fd ff ff b5 43 c7 13  a5 00 00 00 13 00 00 00  |F....C..........|
00048700  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00048710  a5 00 00 00 53 70 63 68  0a 23 50 61 72 65 6e 74  |....Spch.#Parent|
00048720  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 53  | !Root.#Prefix S|
00048730  70 63 68 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |pch_.#Table Colu|
00048740  6d 6e 73 20 32 0a 52 65  61 64 79 3f 0a 4f 6c 64  |mns 2.Ready?.Old|
00048750  63 68 61 6e 6e 65 6c 0a  45 72 72 6f 72 0a 53 61  |channel.Error.Sa|
00048760  79 0a 53 61 79 57 0a 53  70 65 61 6b 0a 53 70 65  |y.SayW.Speak.Spe|
00048770  61 6b 57 0a 50 69 74 63  68 0a 53 70 65 65 64 0a  |akW.Pitch.Speed.|
00048780  4d 6f 75 74 68 0a 54 6f  6e 67 75 65 0a 47 65 74  |Mouth.Tongue.Get|
00048790  44 69 63 74 69 6f 6e 61  72 79 0a 52 65 73 65 74  |Dictionary.Reset|
000487a0  0a 4c 65 76 65 6c 0a 23  45 6e 64 54 61 62 6c 65  |.Level.#EndTable|
000487b0  0a 00 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |....DIR$,...,...|
000487c0  e0 87 04 00 46 fd ff ff  b3 4b c7 13 65 01 00 00  |....F....K..e...|
000487d0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000487e0  44 41 54 41 65 01 00 00  53 70 65 6c 6c 0a 23 50  |DATAe...Spell.#P|
000487f0  61 72 65 6e 74 20 21 52  6f 6f 74 0a 23 50 72 65  |arent !Root.#Pre|
00048800  66 69 78 20 53 70 65 6c  6c 5f 0a 23 54 61 62 6c  |fix Spell_.#Tabl|
00048810  65 20 43 6f 6c 75 6d 6e  73 20 32 0a 54 79 70 6f  |e Columns 2.Typo|
00048820  0a 41 6e 61 67 72 61 6d  0a 46 75 7a 7a 79 0a 43  |.Anagram.Fuzzy.C|
00048830  68 65 63 6b 57 6f 72 64  0a 41 64 64 57 6f 72 64  |heckWord.AddWord|
00048840  0a 47 65 74 57 6f 72 64  0a 47 65 74 4e 65 78 74  |.GetWord.GetNext|
00048850  57 6f 72 64 0a 45 6e 75  6d 57 6f 72 64 0a 43 72  |Word.EnumWord.Cr|
00048860  65 61 74 65 55 73 65 72  0a 4c 6f 61 64 55 73 65  |eateUser.LoadUse|
00048870  72 0a 53 61 76 65 55 73  65 72 0a 55 73 65 72 54  |r.SaveUser.UserT|
00048880  6f 46 69 6c 65 0a 46 69  6c 65 54 6f 55 73 65 72  |oFile.FileToUser|
00048890  0a 47 65 74 44 69 63 74  69 6f 6e 61 72 79 4e 61  |.GetDictionaryNa|
000488a0  6d 65 0a 52 65 6d 6f 76  65 44 69 63 74 69 6f 6e  |me.RemoveDiction|
000488b0  61 72 79 0a 44 65 6c 65  74 65 57 6f 72 64 0a 52  |ary.DeleteWord.R|
000488c0  65 73 65 74 49 67 6e 6f  72 65 0a 41 64 64 54 6f  |esetIgnore.AddTo|
000488d0  49 67 6e 6f 72 65 0a 42  72 6f 77 73 65 57 69 6e  |Ignore.BrowseWin|
000488e0  64 6f 77 0a 53 70 65 6c  6c 4f 70 0a 46 69 6e 64  |dow.SpellOp.Find|
000488f0  57 6f 72 64 0a 49 6d 70  72 65 73 73 69 6f 6e 49  |Word.ImpressionI|
00048900  6e 66 6f 0a 49 6d 70 72  65 73 73 69 6f 6e 51 75  |nfo.ImpressionQu|
00048910  69 63 6b 43 68 65 63 6b  0a 46 69 6c 65 54 6f 46  |ickCheck.FileToF|
00048920  69 6c 65 0a 53 61 76 65  44 69 63 74 69 6f 6e 61  |ile.SaveDictiona|
00048930  72 79 57 69 74 68 50 61  74 68 0a 23 45 6e 64 54  |ryWithPath.#EndT|
00048940  61 62 6c 65 0a 00 00 00  44 49 52 24 2c 00 00 00  |able....DIR$,...|
00048950  2c 00 00 00 74 89 04 00  46 fd ff ff be 8b 1d 00  |,...t...F.......|
00048960  30 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |0...........!Roo|
00048970  74 00 00 00 44 41 54 41  30 00 00 00 53 71 75 61  |t...DATA0...Squa|
00048980  73 68 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |sh.#Parent !Root|
00048990  0a 43 6f 6d 70 72 65 73  73 0a 44 65 63 6f 6d 70  |.Compress.Decomp|
000489a0  72 65 73 73 44 49 52 24  2c 00 00 00 2c 00 00 00  |ressDIR$,...,...|
000489b0  d0 89 04 00 46 fd ff ff  d1 46 c7 13 d8 00 00 00  |....F....F......|
000489c0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000489d0  44 41 54 41 d8 00 00 00  53 74 72 65 61 6d 53 71  |DATA....StreamSq|
000489e0  75 61 73 68 0a 23 50 61  72 65 6e 74 20 21 52 6f  |uash.#Parent !Ro|
000489f0  6f 74 0a 23 50 72 65 66  69 78 20 53 74 72 65 61  |ot.#Prefix Strea|
00048a00  6d 53 71 75 61 73 68 5f  0a 23 54 61 62 6c 65 20  |mSquash_.#Table |
00048a10  43 6f 6c 75 6d 6e 73 20  32 0a 49 6e 69 74 69 61  |Columns 2.Initia|
00048a20  6c 69 73 65 0a 49 6e 66  6f 43 6f 6d 70 72 65 73  |lise.InfoCompres|
00048a30  73 0a 4f 70 65 6e 43 6f  6d 70 72 65 73 73 0a 43  |s.OpenCompress.C|
00048a40  6f 6d 70 72 65 73 73 42  6c 6f 63 6b 0a 43 6c 6f  |ompressBlock.Clo|
00048a50  73 65 43 6f 6d 70 72 65  73 73 0a 49 6e 66 6f 44  |seCompress.InfoD|
00048a60  65 63 6f 6d 70 72 65 73  73 0a 4f 70 65 6e 44 65  |ecompress.OpenDe|
00048a70  63 6f 6d 70 72 65 73 73  0a 44 65 63 6f 6d 70 72  |compress.Decompr|
00048a80  65 73 73 42 6c 6f 63 6b  0a 43 6c 6f 73 65 44 65  |essBlock.CloseDe|
00048a90  63 6f 6d 70 72 65 73 73  0a 45 78 69 74 0a 23 45  |compress.Exit.#E|
00048aa0  6e 64 54 61 62 6c 65 0a  44 49 52 24 9c 01 00 00  |ndTable.DIR$....|
00048ab0  9c 01 00 00 44 8c 04 00  46 fd ff ff 31 56 ba 20  |....D...F...1V. |
00048ac0  ce 02 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00048ad0  74 00 00 00 14 8f 04 00  46 ff ff ff f9 35 ba 20  |t.......F....5. |
00048ae0  23 02 00 00 13 00 00 00  00 00 00 00 45 6e 61 62  |#...........Enab|
00048af0  6c 65 00 00 38 91 04 00  46 ff ff ff a0 d1 b8 20  |le..8...F...... |
00048b00  c6 00 00 00 13 00 00 00  00 00 00 00 44 69 73 61  |............Disa|
00048b10  62 6c 65 00 00 92 04 00  46 ff ff ff 36 e0 b8 20  |ble.....F...6.. |
00048b20  53 01 00 00 13 00 00 00  00 00 00 00 4b 69 6c 6c  |S...........Kill|
00048b30  00 00 00 00 54 93 04 00  46 ff ff ff ef 31 ba 20  |....T...F....1. |
00048b40  65 00 00 00 13 00 00 00  00 00 00 00 55 6e 4b 69  |e...........UnKi|
00048b50  6c 6c 00 00 bc 93 04 00  46 ff ff ff 54 f9 b8 20  |ll......F...T.. |
00048b60  c9 00 00 00 13 00 00 00  00 00 00 00 49 6e 74 65  |............Inte|
00048b70  72 63 65 70 74 00 00 00  88 94 04 00 46 ff ff ff  |rcept.......F...|
00048b80  fc 0a b9 20 b9 00 00 00  13 00 00 00 00 00 00 00  |... ............|
00048b90  4e 6f 49 6e 74 65 72 63  65 70 74 00 44 95 04 00  |NoIntercept.D...|
00048ba0  46 ff ff ff e0 26 b9 20  74 00 00 00 13 00 00 00  |F....&. t.......|
00048bb0  00 00 00 00 53 68 6f 77  43 6f 64 65 73 00 00 00  |....ShowCodes...|
00048bc0  b8 95 04 00 46 ff ff ff  c2 36 b9 20 8c 00 00 00  |....F....6. ....|
00048bd0  13 00 00 00 00 00 00 00  4e 6f 43 6f 64 65 73 00  |........NoCodes.|
00048be0  44 96 04 00 46 ff ff ff  98 45 ba 20 6d 01 00 00  |D...F....E. m...|
00048bf0  13 00 00 00 00 00 00 00  52 65 73 65 74 00 00 00  |........Reset...|
00048c00  b4 97 04 00 46 ff ff ff  3e 4b ba 20 80 00 00 00  |....F...>K. ....|
00048c10  13 00 00 00 00 00 00 00  46 6c 75 73 68 54 65 78  |........FlushTex|
00048c20  74 00 00 00 34 98 04 00  46 fd ff ff fe f4 87 4d  |t...4...F......M|
00048c30  47 03 00 00 13 00 00 00  00 00 00 00 44 69 72 65  |G...........Dire|
00048c40  63 74 00 00 44 41 54 41  ce 02 00 00 53 74 72 65  |ct..DATA....Stre|
00048c50  61 6d 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |am.#Parent !Root|
00048c60  0a 23 50 72 65 66 69 78  20 53 74 72 65 61 6d 5f  |.#Prefix Stream_|
00048c70  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
00048c80  32 0a 3c 45 6e 61 62 6c  65 3e 0a 3c 44 69 73 61  |2.<Enable>.<Disa|
00048c90  62 6c 65 3e 0a 3c 4b 69  6c 6c 3e 0a 3c 55 6e 4b  |ble>.<Kill>.<UnK|
00048ca0  69 6c 6c 3e 0a 3c 49 6e  74 65 72 63 65 70 74 3e  |ill>.<Intercept>|
00048cb0  0a 3c 4e 6f 49 6e 74 65  72 63 65 70 74 3e 0a 3c  |.<NoIntercept>.<|
00048cc0  53 68 6f 77 43 6f 64 65  73 3e 0a 3c 4e 6f 43 6f  |ShowCodes>.<NoCo|
00048cd0  64 65 73 3e 0a 3c 52 65  73 65 74 3e 0a 3c 46 6c  |des>.<Reset>.<Fl|
00048ce0  75 73 68 54 65 78 74 3e  0a 3c 57 72 69 74 65 43  |ushText>.<WriteC|
00048cf0  3d 3e 53 74 72 65 61 6d  5f 64 69 72 65 63 74 3e  |=>Stream_direct>|
00048d00  0a 3c 57 72 69 74 65 53  3d 3e 53 74 72 65 61 6d  |.<WriteS=>Stream|
00048d10  5f 64 69 72 65 63 74 3e  0a 3c 57 72 69 74 65 30  |_direct>.<Write0|
00048d20  3d 3e 53 74 72 65 61 6d  5f 64 69 72 65 63 74 3e  |=>Stream_direct>|
00048d30  0a 3c 57 72 69 74 65 4e  3d 3e 53 74 72 65 61 6d  |.<WriteN=>Stream|
00048d40  5f 64 69 72 65 63 74 3e  0a 3c 4e 65 77 4c 69 6e  |_direct>.<NewLin|
00048d50  65 3d 3e 53 74 72 65 61  6d 5f 64 69 72 65 63 74  |e=>Stream_direct|
00048d60  3e 0a 3c 57 72 69 74 65  54 33 32 3d 3e 53 74 72  |>.<WriteT32=>Str|
00048d70  65 61 6d 5f 64 69 72 65  63 74 3e 0a 3c 57 72 69  |eam_direct>.<Wri|
00048d80  74 65 54 32 34 3d 3e 53  74 72 65 61 6d 5f 64 69  |teT24=>Stream_di|
00048d90  72 65 63 74 3e 0a 3c 57  72 69 74 65 54 31 36 3d  |rect>.<WriteT16=|
00048da0  3e 53 74 72 65 61 6d 5f  64 69 72 65 63 74 3e 0a  |>Stream_direct>.|
00048db0  3c 57 72 69 74 65 54 38  3d 3e 53 74 72 65 61 6d  |<WriteT8=>Stream|
00048dc0  5f 64 69 72 65 63 74 3e  0a 3c 57 72 69 74 65 48  |_direct>.<WriteH|
00048dd0  33 32 3d 3e 53 74 72 65  61 6d 5f 64 69 72 65 63  |32=>Stream_direc|
00048de0  74 3e 0a 3c 57 72 69 74  65 48 32 34 3d 3e 53 74  |t>.<WriteH24=>St|
00048df0  72 65 61 6d 5f 64 69 72  65 63 74 3e 0a 3c 57 72  |ream_direct>.<Wr|
00048e00  69 74 65 48 31 36 3d 3e  53 74 72 65 61 6d 5f 64  |iteH16=>Stream_d|
00048e10  69 72 65 63 74 3e 0a 3c  57 72 69 74 65 48 38 3d  |irect>.<WriteH8=|
00048e20  3e 53 74 72 65 61 6d 5f  64 69 72 65 63 74 3e 0a  |>Stream_direct>.|
00048e30  3c 57 72 69 74 65 44 33  32 3d 3e 53 74 72 65 61  |<WriteD32=>Strea|
00048e40  6d 5f 64 69 72 65 63 74  3e 0a 3c 57 72 69 74 65  |m_direct>.<Write|
00048e50  44 32 34 3d 3e 53 74 72  65 61 6d 5f 64 69 72 65  |D24=>Stream_dire|
00048e60  63 74 3e 0a 3c 57 72 69  74 65 44 31 36 3d 3e 53  |ct>.<WriteD16=>S|
00048e70  74 72 65 61 6d 5f 64 69  72 65 63 74 3e 0a 3c 57  |tream_direct>.<W|
00048e80  72 69 74 65 44 38 3d 3e  53 74 72 65 61 6d 5f 64  |riteD8=>Stream_d|
00048e90  69 72 65 63 74 3e 0a 3c  57 72 69 74 65 42 33 32  |irect>.<WriteB32|
00048ea0  3d 3e 53 74 72 65 61 6d  5f 64 69 72 65 63 74 3e  |=>Stream_direct>|
00048eb0  0a 3c 57 72 69 74 65 42  32 34 3d 3e 53 74 72 65  |.<WriteB24=>Stre|
00048ec0  61 6d 5f 64 69 72 65 63  74 3e 0a 3c 57 72 69 74  |am_direct>.<Writ|
00048ed0  65 42 31 36 3d 3e 53 74  72 65 61 6d 5f 64 69 72  |eB16=>Stream_dir|
00048ee0  65 63 74 3e 0a 3c 57 72  69 74 65 42 38 3d 3e 53  |ect>.<WriteB8=>S|
00048ef0  74 72 65 61 6d 5f 64 69  72 65 63 74 3e 0a 57 72  |tream_direct>.Wr|
00048f00  69 74 65 52 65 67 73 0a  23 45 6e 64 54 61 62 6c  |iteRegs.#EndTabl|
00048f10  65 0a 00 00 44 41 54 41  23 02 00 00 53 74 72 65  |e...DATA#...Stre|
00048f20  61 6d 5f 45 6e 61 62 6c  65 20 28 26 38 31 39 34  |am_Enable (&8194|
00048f30  30 29 0a 23 50 61 72 65  6e 74 20 53 74 72 65 61  |0).#Parent Strea|
00048f40  6d 5f 0a 4e 6f 20 70 61  72 61 6d 65 74 65 72 73  |m_.No parameters|
00048f50  0a 0a 56 44 55 53 74 72  65 61 6d 20 77 69 6c 6c  |..VDUStream will|
00048f60  20 63 6c 61 69 6d 20 74  68 65 20 57 72 69 74 65  | claim the Write|
00048f70  20 63 68 61 72 61 63 74  65 72 20 76 65 63 74 6f  | character vecto|
00048f80  72 20 61 6e 64 20 73 69  74 20 61 72 6f 75 6e 64  |r and sit around|
00048f90  20 77 61 69 74 69 6e 67  20 66 6f 72 20 63 68 61  | waiting for cha|
00048fa0  72 61 63 74 65 72 73 20  74 6f 20 62 65 20 70 72  |racters to be pr|
00048fb0  69 6e 74 65 64 2e 20 54  68 65 73 65 20 61 72 65  |inted. These are|
00048fc0  20 73 74 61 63 6b 65 64  20 69 6e 20 74 68 65 20  | stacked in the |
00048fd0  6d 6f 64 75 6c 65 73 20  74 65 6d 70 6f 72 61 72  |modules temporar|
00048fe0  79 20 52 4d 41 20 73 70  61 63 65 20 75 6e 74 69  |y RMA space unti|
00048ff0  6c 20 74 68 65 20 6d 61  69 6e 20 61 70 70 6c 69  |l the main appli|
00049000  63 61 74 69 6f 6e 20 69  73 20 63 61 6c 6c 65 64  |cation is called|
00049010  20 76 69 61 20 3c 57 69  6d 70 5f 50 6f 6c 6c 3e  | via <Wimp_Poll>|
00049020  2e 20 43 68 61 72 61 63  74 65 72 73 20 66 6f 75  |. Characters fou|
00049030  6e 64 20 74 6f 20 68 61  76 65 20 62 65 65 6e 20  |nd to have been |
00049040  77 72 69 74 74 65 6e 20  74 6f 20 74 68 65 20 52  |written to the R|
00049050  4d 41 20 62 75 66 66 65  72 20 61 72 65 20 73 71  |MA buffer are sq|
00049060  75 69 72 74 65 64 20 69  6e 74 6f 20 56 44 55 53  |uirted into VDUS|
00049070  74 72 65 61 6d 73 20 72  65 73 69 7a 61 62 6c 65  |treams resizable|
00049080  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 6d 65 6d  | application mem|
00049090  6f 72 79 20 64 75 72 69  6e 67 20 6e 75 6c 6c 20  |ory during null |
000490a0  65 76 65 6e 74 73 2e 0a  0a 54 68 69 73 20 63 61  |events...This ca|
000490b0  6c 6c 20 63 61 6e 20 62  65 20 73 74 61 63 6b 65  |ll can be stacke|
000490c0  64 20 74 6f 20 61 6e 79  20 6c 65 76 65 6c 2c 20  |d to any level, |
000490d0  62 75 74 20 74 68 65 20  73 74 72 65 61 6d 20 77  |but the stream w|
000490e0  69 6c 6c 20 6e 6f 74 20  62 65 20 72 65 6c 65 61  |ill not be relea|
000490f0  73 65 64 20 75 6e 74 69  6c 20 6e 20 3c 53 74 72  |sed until n <Str|
00049100  65 61 6d 5f 44 69 73 61  62 6c 65 3e 73 20 68 61  |eam_Disable>s ha|
00049110  76 65 20 62 65 65 6e 20  63 61 6c 6c 65 64 2c 20  |ve been called, |
00049120  6f 72 20 6f 6e 65 20 3c  53 74 72 65 61 6d 5f 52  |or one <Stream_R|
00049130  65 73 65 74 3e 2e 0a 00  44 41 54 41 c6 00 00 00  |eset>...DATA....|
00049140  53 74 72 65 61 6d 5f 44  69 73 61 62 6c 65 20 28  |Stream_Disable (|
00049150  26 38 31 39 34 31 29 0a  23 50 61 72 65 6e 74 20  |&81941).#Parent |
00049160  53 74 72 65 61 6d 5f 0a  4e 6f 20 70 61 72 61 6d  |Stream_.No param|
00049170  65 74 65 72 73 0a 0a 54  68 69 73 20 73 77 69 20  |eters..This swi |
00049180  64 65 63 72 65 6d 65 6e  74 73 20 74 68 65 20 63  |decrements the c|
00049190  6c 61 69 6d 20 63 6f 75  6e 74 20 61 6e 64 20 72  |laim count and r|
000491a0  65 6c 65 61 73 65 73 20  57 72 63 68 56 20 69 66  |eleases WrchV if|
000491b0  20 69 74 20 69 73 20 7a  65 72 6f 2e 20 53 75 62  | it is zero. Sub|
000491c0  73 65 71 75 65 6e 74 20  74 65 78 74 20 77 69 6c  |sequent text wil|
000491d0  6c 20 61 70 70 65 61 72  20 61 73 20 6e 6f 72 6d  |l appear as norm|
000491e0  61 6c 20 69 66 20 74 68  65 20 73 74 72 65 61 6d  |al if the stream|
000491f0  20 69 73 20 72 65 6c 65  61 73 65 64 2e 0a 00 00  | is released....|
00049200  44 41 54 41 53 01 00 00  53 74 72 65 61 6d 5f 4b  |DATAS...Stream_K|
00049210  69 6c 6c 20 28 26 38 31  39 34 32 29 0a 23 50 61  |ill (&81942).#Pa|
00049220  72 65 6e 74 20 53 74 72  65 61 6d 5f 0a 4e 6f 20  |rent Stream_.No |
00049230  70 61 72 61 6d 65 74 65  72 73 0a 0a 53 74 72 65  |parameters..Stre|
00049240  61 6d 5f 4b 69 6c 6c 20  77 69 6c 6c 20 73 65 74  |am_Kill will set|
00049250  20 61 20 66 6c 61 67 20  69 6e 74 65 72 6e 61 6c  | a flag internal|
00049260  6c 79 20 74 6f 20 70 72  65 76 65 6e 74 20 3c 53  |ly to prevent <S|
00049270  74 72 65 61 6d 5f 45 6e  61 62 6c 65 3e 20 66 72  |tream_Enable> fr|
00049280  6f 6d 20 62 65 69 6e 67  20 68 61 6e 64 6c 65 64  |om being handled|
00049290  20 69 6e 20 74 68 65 20  75 73 75 61 6c 20 77 61  | in the usual wa|
000492a0  79 2e 20 41 6c 6c 20 63  61 6c 6c 73 20 74 6f 20  |y. All calls to |
000492b0  53 74 72 65 61 6d 5f 45  6e 61 62 6c 65 20 77 69  |Stream_Enable wi|
000492c0  6c 6c 20 62 65 20 69 67  6e 6f 72 65 64 2e 20 54  |ll be ignored. T|
000492d0  68 69 73 20 61 6c 6c 6f  77 73 20 6f 6e 65 20 70  |his allows one p|
000492e0  69 65 63 65 20 6f 66 20  63 6f 64 65 20 77 68 69  |iece of code whi|
000492f0  63 68 20 63 61 6c 6c 73  20 61 6e 6f 74 68 65 72  |ch calls another|
00049300  20 72 6f 75 74 69 6e 65  20 6f 72 20 72 6f 75 74  | routine or rout|
00049310  69 6e 65 73 20 74 6f 20  70 72 65 76 65 6e 74 20  |ines to prevent |
00049320  64 65 62 75 67 67 69 6e  67 20 62 65 69 6e 67 20  |debugging being |
00049330  67 65 6e 65 72 61 74 65  64 20 66 72 6f 6d 20 74  |generated from t|
00049340  68 65 20 63 61 6c 6c 65  64 20 72 6f 75 74 69 6e  |he called routin|
00049350  65 73 2e 00 44 41 54 41  65 00 00 00 53 74 72 65  |es..DATAe...Stre|
00049360  61 6d 5f 55 6e 4b 69 6c  6c 20 28 26 38 31 39 34  |am_UnKill (&8194|
00049370  33 29 0a 23 50 61 72 65  6e 74 20 53 74 72 65 61  |3).#Parent Strea|
00049380  6d 5f 0a 4e 6f 20 70 61  72 61 6d 65 74 65 72 73  |m_.No parameters|
00049390  0a 0a 41 6c 6c 6f 77 73  20 61 63 63 65 73 73 20  |..Allows access |
000493a0  74 6f 20 3c 53 74 72 65  61 6d 5f 45 6e 61 62 6c  |to <Stream_Enabl|
000493b0  65 3e 20 61 67 61 69 6e  2e 00 00 00 44 41 54 41  |e> again....DATA|
000493c0  c9 00 00 00 53 74 72 65  61 6d 5f 49 6e 74 65 72  |....Stream_Inter|
000493d0  63 65 70 74 20 28 26 38  31 39 34 34 29 0a 23 50  |cept (&81944).#P|
000493e0  61 72 65 6e 74 20 53 74  72 65 61 6d 5f 0a 4e 6f  |arent Stream_.No|
000493f0  20 70 61 72 61 6d 65 74  65 72 73 0a 0a 41 6c 6c  | parameters..All|
00049400  20 70 72 69 6e 74 61 62  6c 65 20 63 68 61 72 61  | printable chara|
00049410  63 74 65 72 73 20 77 69  6c 6c 20 62 65 20 69 6e  |cters will be in|
00049420  74 65 72 63 65 70 74 65  64 20 62 79 20 56 44 55  |tercepted by VDU|
00049430  73 74 72 65 61 6d 20 77  68 65 6e 20 74 68 65 20  |stream when the |
00049440  73 74 72 65 61 6d 20 69  73 20 65 6e 61 62 6c 65  |stream is enable|
00049450  64 20 72 61 74 68 65 72  20 74 68 61 6e 20 62 65  |d rather than be|
00049460  69 6e 67 20 70 61 73 73  65 64 20 6f 6e 20 74 6f  |ing passed on to|
00049470  20 74 68 65 20 64 65 66  61 75 6c 74 20 68 61 6e  | the default han|
00049480  64 6c 65 72 2e 00 00 00  44 41 54 41 b9 00 00 00  |dler....DATA....|
00049490  53 74 72 65 61 6d 5f 4e  6f 49 6e 74 65 72 63 65  |Stream_NoInterce|
000494a0  70 74 20 28 26 38 31 39  34 35 29 0a 23 50 61 72  |pt (&81945).#Par|
000494b0  65 6e 74 20 53 74 72 65  61 6d 5f 0a 4e 6f 20 70  |ent Stream_.No p|
000494c0  61 72 61 6d 65 74 65 72  73 0a 0a 50 61 73 73 65  |arameters..Passe|
000494d0  73 20 63 68 61 72 61 63  74 65 72 20 63 6f 64 65  |s character code|
000494e0  73 20 6f 6e 20 74 6f 20  74 68 65 20 6e 65 78 74  |s on to the next|
000494f0  20 69 6e 74 65 72 72 75  70 74 20 68 61 6e 64 6c  | interrupt handl|
00049500  65 72 20 6f 6e 20 74 68  65 20 57 72 63 68 56 20  |er on the WrchV |
00049510  61 73 0a 6e 6f 72 6d 61  6c 2e 20 52 65 76 65 72  |as.normal. Rever|
00049520  73 65 73 20 65 66 66 65  63 74 20 6f 66 20 3c 53  |ses effect of <S|
00049530  74 72 65 61 6d 5f 49 6e  74 65 72 63 65 70 74 3e  |tream_Intercept>|
00049540  2e 00 00 00 44 41 54 41  74 00 00 00 53 74 72 65  |....DATAt...Stre|
00049550  61 6d 5f 53 68 6f 77 43  6f 64 65 73 20 28 26 38  |am_ShowCodes (&8|
00049560  31 39 34 36 29 0a 23 50  61 72 65 6e 74 20 53 74  |1946).#Parent St|
00049570  72 65 61 6d 5f 0a 4e 6f  20 70 61 72 61 6d 65 74  |ream_.No paramet|
00049580  65 72 73 0a 0a 53 68 6f  77 20 63 6f 6e 74 72 6f  |ers..Show contro|
00049590  6c 20 63 6f 64 65 73 20  61 73 20 5b 23 23 5d 20  |l codes as [##] |
000495a0  76 61 6c 75 65 73 20 77  68 65 6e 20 69 6e 74 65  |values when inte|
000495b0  72 63 65 70 74 65 64 2e  44 41 54 41 8c 00 00 00  |rcepted.DATA....|
000495c0  53 74 72 65 61 6d 5f 4e  6f 43 6f 64 65 73 20 28  |Stream_NoCodes (|
000495d0  26 38 31 39 34 37 29 0a  23 50 61 72 65 6e 74 20  |&81947).#Parent |
000495e0  53 74 72 65 61 6d 5f 0a  4e 6f 20 70 61 72 61 6d  |Stream_.No param|
000495f0  65 74 65 72 73 0a 0a 49  67 6e 6f 72 65 20 61 6c  |eters..Ignore al|
00049600  6c 20 63 6f 6e 74 72 6f  6c 20 63 6f 64 65 73 20  |l control codes |
00049610  72 65 63 65 69 76 65 64  2e 20 52 65 76 65 72 73  |received. Revers|
00049620  65 73 20 74 68 65 20 65  66 66 65 63 74 20 6f 66  |es the effect of|
00049630  20 3c 53 74 72 65 61 6d  5f 53 68 6f 77 43 6f 64  | <Stream_ShowCod|
00049640  65 73 3e 2e 44 41 54 41  6d 01 00 00 53 74 72 65  |es>.DATAm...Stre|
00049650  61 6d 5f 52 65 73 65 74  20 28 26 38 31 39 34 38  |am_Reset (&81948|
00049660  29 0a 23 50 61 72 65 6e  74 20 53 74 72 65 61 6d  |).#Parent Stream|
00049670  5f 0a 4e 6f 20 70 61 72  61 6d 65 74 65 72 73 0a  |_.No parameters.|
00049680  0a 54 68 72 6f 77 73 20  61 77 61 79 20 61 6c 6c  |.Throws away all|
00049690  20 73 74 61 63 6b 65 64  20 63 61 6c 6c 73 20 74  | stacked calls t|
000496a0  6f 20 3c 53 74 72 65 61  6d 5f 45 6e 61 62 6c 65  |o <Stream_Enable|
000496b0  3e 20 61 6e 64 20 72 65  6c 65 61 73 65 73 20 74  |> and releases t|
000496c0  68 65 20 57 72 63 68 56  2e 20 54 68 69 73 20 73  |he WrchV. This s|
000496d0  68 6f 75 6c 64 20 62 65  20 75 73 65 64 20 69 6e  |hould be used in|
000496e0  63 61 73 65 20 6f 66 20  65 6d 6d 65 72 67 65 6e  |case of emmergen|
000496f0  63 79 2e 20 28 69 65 20  77 68 65 6e 20 61 20 63  |cy. (ie when a c|
00049700  6c 69 65 6e 74 20 61 70  70 6c 69 63 61 74 69 6f  |lient applicatio|
00049710  6e 20 68 61 73 20 63 72  61 73 68 65 64 20 61 6e  |n has crashed an|
00049720  64 20 6e 6f 74 20 63 61  6c 6c 65 64 20 3c 53 74  |d not called <St|
00049730  72 65 61 6d 5f 44 69 73  61 62 6c 65 3e 2e 20 59  |ream_Disable>. Y|
00049740  6f 75 20 77 69 6c 6c 20  6e 6f 74 69 63 65 20 74  |ou will notice t|
00049750  68 69 73 20 62 79 20 65  72 72 6f 72 20 62 6f 78  |his by error box|
00049760  65 73 20 77 69 74 68 20  6e 6f 20 74 65 78 74 20  |es with no text |
00049770  69 6e 20 74 68 65 6d 20  61 70 70 65 61 72 69 6e  |in them appearin|
00049780  67 20 61 6c 6f 6e 67 20  77 69 74 68 20 74 68 65  |g along with the|
00049790  20 64 65 73 6b 74 6f 70  20 72 65 6e 64 65 72 69  | desktop renderi|
000497a0  6e 67 20 73 70 72 69 74  65 73 20 6f 6e 6c 79 29  |ng sprites only)|
000497b0  0a 00 00 00 44 41 54 41  80 00 00 00 53 74 72 65  |....DATA....Stre|
000497c0  61 6d 5f 46 6c 75 73 68  54 65 78 74 20 28 26 38  |am_FlushText (&8|
000497d0  31 39 34 39 29 0a 23 50  61 72 65 6e 74 20 53 74  |1949).#Parent St|
000497e0  72 65 61 6d 5f 0a 4e 6f  20 70 61 72 61 6d 65 74  |ream_.No paramet|
000497f0  65 72 73 0a 0a 54 68 72  6f 77 73 20 61 77 61 79  |ers..Throws away|
00049800  20 74 68 65 20 63 75 72  72 65 6e 74 20 74 65 78  | the current tex|
00049810  74 20 69 6e 20 74 68 65  20 61 70 70 6c 69 63 61  |t in the applica|
00049820  74 69 6f 6e 20 73 70 61  63 65 20 61 6e 64 20 52  |tion space and R|
00049830  4d 41 2e 0a 44 41 54 41  47 03 00 00 44 69 72 65  |MA..DATAG...Dire|
00049840  63 74 20 73 74 72 65 61  6d 20 64 72 69 76 65 72  |ct stream driver|
00049850  73 0a 23 50 61 72 65 6e  74 20 53 74 72 65 61 6d  |s.#Parent Stream|
00049860  5f 0a 56 64 75 53 74 72  65 61 6d 20 31 2e 30 39  |_.VduStream 1.09|
00049870  20 6f 6e 77 61 72 64 73  20 70 72 6f 76 69 64 65  | onwards provide|
00049880  73 20 64 69 72 65 63 74  20 73 74 72 65 61 6d 20  |s direct stream |
00049890  61 63 63 65 73 73 20 73  6f 20 74 68 61 74 20 61  |access so that a|
000498a0  70 70 6c 69 63 61 74 69  6f 6e 73 20 63 61 6e 20  |pplications can |
000498b0  73 65 6e 64 20 74 65 78  74 20 74 6f 20 74 68 65  |send text to the|
000498c0  20 73 74 72 65 61 6d 20  77 68 65 6e 20 74 68 65  | stream when the|
000498d0  20 6f 70 65 72 61 74 69  6e 67 20 73 79 73 74 65  | operating syste|
000498e0  6d 20 3c 4f 53 5f 57 72  69 74 65 43 3e 20 69 73  |m <OS_WriteC> is|
000498f0  20 62 65 69 6e 67 20 69  6e 74 65 72 63 65 70 74  | being intercept|
00049900  65 64 20 62 79 20 73 6f  6d 65 6f 6e 65 20 65 6c  |ed by someone el|
00049910  73 65 20 65 61 72 6c 69  65 72 20 69 6e 20 74 68  |se earlier in th|
00049920  65 20 63 68 61 69 6e 2e  20 65 67 20 64 75 72 69  |e chain. eg duri|
00049930  6e 67 20 70 72 69 6e 74  69 6e 67 2e 0a 0a 54 68  |ng printing...Th|
00049940  65 20 66 6f 6c 6c 6f 77  69 6e 67 20 64 69 72 65  |e following dire|
00049950  63 74 20 73 77 69 73 20  61 72 65 20 70 72 6f 76  |ct swis are prov|
00049960  69 64 65 64 3a 0a 23 49  6e 64 65 6e 74 20 31 0a  |ided:.#Indent 1.|
00049970  53 74 72 65 61 6d 5f 57  72 69 74 65 43 09 3a 20  |Stream_WriteC.: |
00049980  57 72 69 74 65 20 52 30  20 63 68 61 72 61 74 65  |Write R0 charate|
00049990  72 20 74 6f 20 74 68 65  20 73 74 72 65 61 6d 0a  |r to the stream.|
000499a0  53 74 72 65 61 6d 5f 57  72 69 74 65 30 09 3a 20  |Stream_Write0.: |
000499b0  57 72 69 74 65 20 6e 75  6c 6c 20 74 65 72 6d 69  |Write null termi|
000499c0  6e 61 74 65 64 20 73 74  72 69 6e 67 2e 20 52 30  |nated string. R0|
000499d0  3d 70 74 72 0a 53 74 72  65 61 6d 5f 57 72 69 74  |=ptr.Stream_Writ|
000499e0  65 53 09 3a 20 57 72 69  74 65 20 69 6e 20 6c 69  |eS.: Write in li|
000499f0  6e 65 20 73 74 72 69 6e  67 2e 0a 53 74 72 65 61  |ne string..Strea|
00049a00  6d 5f 57 72 69 74 65 4e  09 3a 20 57 72 69 74 65  |m_WriteN.: Write|
00049a10  20 63 6f 75 6e 74 65 64  20 73 74 72 69 6e 67 2e  | counted string.|
00049a20  20 52 30 3d 70 74 72 2c  20 52 31 3d 6e 75 6d 62  | R0=ptr, R1=numb|
00049a30  65 72 0a 53 74 72 65 61  6d 5f 4e 65 77 4c 69 6e  |er.Stream_NewLin|
00049a40  65 09 3a 20 57 72 69 74  65 20 6e 65 77 6c 69 6e  |e.: Write newlin|
00049a50  65 0a 0a 53 74 72 65 61  6d 5f 57 72 69 74 65 54  |e..Stream_WriteT|
00049a60  78 78 09 3a 20 57 72 69  74 65 20 72 30 20 61 73  |xx.: Write r0 as|
00049a70  20 63 68 61 72 61 63 74  65 72 73 2e 20 22 2e 22  | characters. "."|
00049a80  20 72 65 70 6c 61 63 65  73 20 6e 6f 6e 2d 61 6c  | replaces non-al|
00049a90  70 68 61 6e 75 6d 65 72  69 63 0a 53 74 72 65 61  |phanumeric.Strea|
00049aa0  6d 5f 57 72 69 74 65 48  78 78 09 3a 20 57 72 69  |m_WriteHxx.: Wri|
00049ab0  74 65 20 68 65 78 20 63  6f 6e 76 65 72 73 69 6f  |te hex conversio|
00049ac0  6e 20 6f 66 20 52 30 0a  53 74 72 65 61 6d 5f 57  |n of R0.Stream_W|
00049ad0  72 69 74 65 44 78 78 09  3a 20 57 72 69 74 65 20  |riteDxx.: Write |
00049ae0  64 65 63 69 6d 61 6c 20  63 6f 6e 76 65 72 73 69  |decimal conversi|
00049af0  6f 6e 20 6f 66 20 52 30  0a 53 74 72 65 61 6d 5f  |on of R0.Stream_|
00049b00  57 72 69 74 65 42 78 78  09 3a 20 57 72 69 74 65  |WriteBxx.: Write|
00049b10  20 62 69 6e 61 72 79 20  63 6f 6e 76 65 72 73 69  | binary conversi|
00049b20  6f 6e 20 6f 66 20 52 30  0a 0a 23 49 6e 64 65 6e  |on of R0..#Inden|
00049b30  74 0a 57 68 65 72 65 20  78 78 20 69 73 20 33 32  |t.Where xx is 32|
00049b40  2c 20 32 34 2c 20 31 36  2c 20 6f 72 20 38 20 64  |, 24, 16, or 8 d|
00049b50  65 70 65 6e 64 69 6e 67  20 6f 6e 20 74 68 65 20  |epending on the |
00049b60  6e 75 6d 62 65 72 20 6f  66 20 62 69 74 73 20 74  |number of bits t|
00049b70  6f 20 64 69 73 70 6c 61  79 2e 0a 00 44 49 52 24  |o display...DIR$|
00049b80  2c 00 00 00 2c 00 00 00  a8 9b 04 00 46 fd ff ff  |,...,.......F...|
00049b90  c1 8b 1d 00 2d 00 00 00  13 00 00 00 00 00 00 00  |....-...........|
00049ba0  21 52 6f 6f 74 00 00 00  44 41 54 41 2d 00 00 00  |!Root...DATA-...|
00049bb0  53 75 70 65 72 0a 23 50  61 72 65 6e 74 20 21 52  |Super.#Parent !R|
00049bc0  6f 6f 74 0a 53 61 6d 70  6c 65 34 35 0a 53 61 6d  |oot.Sample45.Sam|
00049bd0  70 6c 65 39 30 00 00 00  44 49 52 24 54 00 00 00  |ple90...DIR$T...|
00049be0  54 00 00 00 2c 9c 04 00  46 fd ff ff 7c ef 1d 00  |T...,...F...|...|
00049bf0  48 01 00 00 13 00 00 00  00 00 00 00 65 72 72 6f  |H...........erro|
00049c00  72 62 6c 6f 63 6b 00 00  74 9d 04 00 46 ff ff ff  |rblock..t...F...|
00049c10  77 81 14 b0 59 02 00 00  13 00 00 00 00 00 00 00  |w...Y...........|
00049c20  64 61 74 65 66 6f 72 6d  61 74 00 00 44 41 54 41  |dateformat..DATA|
00049c30  48 01 00 00 53 57 49 20  45 72 72 6f 72 20 62 6c  |H...SWI Error bl|
00049c40  6f 63 6b 3a 0a 30 09 45  72 72 6f 72 20 6e 75 6d  |ock:.0.Error num|
00049c50  62 65 72 0a 34 2e 2e 09  45 72 72 6f 72 20 73 74  |ber.4...Error st|
00049c60  72 69 6e 67 2e 20 5a 65  72 6f 20 74 65 72 6d 69  |ring. Zero termi|
00049c70  6e 61 74 65 64 2e 0a 0a  42 69 74 73 20 69 6e 20  |nated...Bits in |
00049c80  45 72 72 6f 72 20 6e 75  6d 62 65 72 0a 23 4c 69  |Error number.#Li|
00049c90  6e 65 3b 20 74 61 62 0a  30 2d 37 09 42 61 73 69  |ne; tab.0-7.Basi|
00049ca0  63 20 65 72 72 6f 72 20  6e 75 6d 62 65 72 0a 38  |c error number.8|
00049cb0  2d 32 33 09 27 4f 77 6e  65 72 27 2f 47 65 6e 65  |-23.'Owner'/Gene|
00049cc0  72 61 74 6f 72 20 6f 66  20 65 72 72 6f 72 20 28  |rator of error (|
00049cd0  6c 6f 6e 67 20 6c 69 73  74 29 0a 32 34 2d 32 39  |long list).24-29|
00049ce0  09 52 65 73 65 72 76 65  64 2e 20 4d 75 73 74 20  |.Reserved. Must |
00049cf0  62 65 20 30 0a 33 30 09  44 65 66 69 6e 65 64 20  |be 0.30.Defined |
00049d00  74 6f 20 62 65 20 30 0a  33 31 09 45 72 72 6f 72  |to be 0.31.Error|
00049d10  20 69 73 20 73 65 72 69  6f 75 73 20 28 68 61 72  | is serious (har|
00049d20  64 77 61 72 65 29 2e 20  4f 77 6e 65 72 20 69 73  |dware). Owner is|
00049d30  20 74 68 65 6e 0a 09 20  20 30 20 4d 61 63 68 69  | then..  0 Machi|
00049d40  6e 65 0a 09 20 20 31 20  43 6f 2d 50 72 6f 63 65  |ne..  1 Co-Proce|
00049d50  73 73 6f 72 0a 09 20 20  32 20 46 6c 6f 61 74 69  |ssor..  2 Floati|
00049d60  6e 67 20 70 6f 69 6e 74  0a 09 20 20 33 20 45 63  |ng point..  3 Ec|
00049d70  6f 6e 65 74 44 41 54 41  59 02 00 00 44 61 74 65  |onetDATAY...Date|
00049d80  20 66 6f 72 6d 61 74 20  73 74 72 69 6e 67 20 74  | format string t|
00049d90  6f 6b 65 6e 73 0a 54 6f  6b 65 6e 09 4d 65 61 6e  |okens.Token.Mean|
00049da0  69 6e 67 0a 23 4c 69 6e  65 0a 25 44 59 09 20 44  |ing.#Line.%DY. D|
00049db0  61 74 65 20 28 30 38 29  0a 25 53 54 09 20 73 74  |ate (08).%ST. st|
00049dc0  2c 20 74 68 20 6f 72 20  6e 64 20 62 79 20 64 61  |, th or nd by da|
00049dd0  74 65 0a 25 4d 4e 09 20  4d 6f 6e 74 68 20 61 73  |te.%MN. Month as|
00049de0  20 6e 75 6d 62 65 72 20  28 30 34 29 0a 25 4d 4f  | number (04).%MO|
00049df0  09 20 4d 6f 6e 74 68 20  61 73 20 6c 6f 6e 67 20  |. Month as long |
00049e00  65 6e 74 72 79 20 28 41  70 72 69 6c 29 0a 25 4d  |entry (April).%M|
00049e10  33 09 20 4d 6f 6e 74 68  20 61 73 20 33 20 6c 65  |3. Month as 3 le|
00049e20  74 74 65 72 73 20 28 41  70 72 29 0a 25 57 4b 09  |tters (Apr).%WK.|
00049e30  20 57 65 65 6b 20 6f 66  20 79 65 61 72 0a 25 44  | Week of year.%D|
00049e40  4e 09 20 44 61 79 20 77  69 74 68 20 69 6e 20 79  |N. Day with in y|
00049e50  65 61 72 20 28 30 39 38  29 0a 25 57 4e 09 20 57  |ear (098).%WN. W|
00049e60  65 65 6b 20 64 61 79 20  61 73 20 6e 75 6d 62 65  |eek day as numbe|
00049e70  72 20 28 37 20 3d 20 53  61 74 75 72 64 61 79 29  |r (7 = Saturday)|
00049e80  0a 25 57 33 09 20 57 65  65 6b 20 64 61 79 20 61  |.%W3. Week day a|
00049e90  73 20 33 20 6c 65 74 74  65 72 73 20 28 53 61 74  |s 3 letters (Sat|
00049ea0  29 0a 25 57 45 09 20 57  65 65 6b 20 64 61 79 20  |).%WE. Week day |
00049eb0  61 73 20 6c 6f 6e 67 20  28 53 61 74 75 72 64 61  |as long (Saturda|
00049ec0  79 29 0a 25 43 45 09 20  43 65 6e 74 75 72 79 20  |y).%CE. Century |
00049ed0  61 73 20 32 20 64 69 67  69 74 73 20 28 31 39 29  |as 2 digits (19)|
00049ee0  0a 25 59 52 09 20 59 65  61 72 20 61 73 20 32 20  |.%YR. Year as 2 |
00049ef0  64 69 67 69 74 73 20 28  39 35 29 0a 25 32 34 09  |digits (95).%24.|
00049f00  20 48 6f 75 72 20 61 73  20 32 34 20 68 6f 75 72  | Hour as 24 hour|
00049f10  20 28 31 35 29 0a 25 31  32 09 20 48 6f 75 72 20  | (15).%12. Hour |
00049f20  61 73 20 31 32 20 68 6f  75 72 20 28 30 33 29 0a  |as 12 hour (03).|
00049f30  25 41 4d 09 20 61 6d 20  6f 72 20 70 6d 0a 25 50  |%AM. am or pm.%P|
00049f40  4d 09 20 61 6d 20 6f 72  20 70 6d 0a 25 4d 49 09  |M. am or pm.%MI.|
00049f50  20 4d 69 6e 75 74 65 20  61 73 20 32 20 64 69 67  | Minute as 2 dig|
00049f60  69 74 73 20 28 32 35 29  0a 25 53 45 09 20 53 65  |its (25).%SE. Se|
00049f70  63 6f 6e 64 20 61 73 20  32 20 64 69 67 69 74 73  |cond as 2 digits|
00049f80  20 28 35 30 29 0a 25 43  53 09 20 43 65 6e 74 69  | (50).%CS. Centi|
00049f90  73 65 63 6f 6e 64 20 61  73 20 32 20 64 69 67 69  |second as 2 digi|
00049fa0  74 73 20 28 38 37 29 0a  25 54 5a 09 20 54 69 6d  |ts (87).%TZ. Tim|
00049fb0  65 20 7a 6f 6e 65 20 28  42 53 54 2f 44 53 54 2f  |e zone (BST/DST/|
00049fc0  2b 30 31 3a 30 30 2c 20  65 74 63 29 0a 00 00 00  |+01:00, etc)....|
00049fd0  44 49 52 24 a4 00 00 00  a4 00 00 00 74 a0 04 00  |DIR$........t...|
00049fe0  46 fd ff ff c6 61 68 db  71 00 00 00 13 00 00 00  |F....ah.q.......|
00049ff0  00 00 00 00 21 52 6f 6f  74 00 00 00 e8 a0 04 00  |....!Root.......|
0004a000  47 ff ff ff ff e9 7b 04  36 02 00 00 13 00 00 00  |G.....{.6.......|
0004a010  00 00 00 00 45 6e 75 6d  65 72 61 74 65 54 61 73  |....EnumerateTas|
0004a020  6b 73 00 00 20 a3 04 00  46 ff ff ff 14 22 7c 4f  |ks.. ...F...."|O|
0004a030  15 01 00 00 13 00 00 00  00 00 00 00 54 61 73 6b  |............Task|
0004a040  4e 61 6d 65 46 72 6f 6d  48 61 6e 64 6c 65 00 00  |NameFromHandle..|
0004a050  38 a4 04 00 46 ff ff ff  eb 58 68 db 5d 02 00 00  |8...F....Xh.]...|
0004a060  13 00 00 00 00 00 00 00  73 68 75 74 64 6f 77 6e  |........shutdown|
0004a070  00 00 00 00 44 41 54 41  71 00 00 00 54 61 73 6b  |....DATAq...Task|
0004a080  4d 61 6e 61 67 65 72 0a  23 50 61 72 65 6e 74 20  |Manager.#Parent |
0004a090  21 52 6f 6f 74 3b 20 50  72 65 66 69 78 20 54 61  |!Root; Prefix Ta|
0004a0a0  73 6b 4d 61 6e 61 67 65  72 5f 3b 20 57 72 61 70  |skManager_; Wrap|
0004a0b0  20 6f 66 66 0a 3c 45 6e  75 6d 65 72 61 74 65 54  | off.<EnumerateT|
0004a0c0  61 73 6b 73 3e 0a 3c 53  68 75 74 64 6f 77 6e 3e  |asks>.<Shutdown>|
0004a0d0  0a 3c 54 61 73 6b 4e 61  6d 65 46 72 6f 6d 48 61  |.<TaskNameFromHa|
0004a0e0  6e 64 6c 65 3e 00 00 00  44 41 54 41 36 02 00 00  |ndle>...DATA6...|
0004a0f0  54 61 73 6b 4d 61 6e 61  67 65 72 5f 45 6e 75 6d  |TaskManager_Enum|
0004a100  65 72 61 74 65 54 61 73  6b 73 20 20 28 26 34 32  |erateTasks  (&42|
0004a110  36 38 31 29 0a 23 50 61  72 65 6e 74 20 54 61 73  |681).#Parent Tas|
0004a120  6b 4d 61 6e 61 67 65 72  5f 0a 3d 3e 09 52 30 20  |kManager_.=>.R0 |
0004a130  3d 20 30 20 66 6f 72 20  66 69 72 73 74 20 63 61  |= 0 for first ca|
0004a140  6c 6c 0a 09 52 31 20 3d  20 62 75 66 66 65 72 0a  |ll..R1 = buffer.|
0004a150  09 52 32 20 3d 20 73 69  7a 65 20 6f 66 20 62 75  |.R2 = size of bu|
0004a160  66 66 65 72 0a 0a 3c 3d  09 52 30 20 3d 20 76 61  |ffer..<=.R0 = va|
0004a170  6c 75 65 20 74 6f 20 75  73 65 20 66 6f 72 20 6e  |lue to use for n|
0004a180  65 78 74 20 63 61 6c 6c  2c 20 6f 72 20 5c 3c 20  |ext call, or \< |
0004a190  30 20 66 6f 72 20 6e 6f  20 6d 6f 72 65 0a 09 52  |0 for no more..R|
0004a1a0  31 20 3d 20 31 73 74 20  62 79 74 65 20 6e 6f 74  |1 = 1st byte not|
0004a1b0  20 75 73 65 64 0a 09 52  32 20 3d 20 62 79 74 65  | used..R2 = byte|
0004a1c0  73 20 6e 6f 74 20 75 73  65 64 0a 0a 54 68 69 73  |s not used..This|
0004a1d0  20 53 57 49 20 72 65 74  75 72 6e 73 20 69 6e 66  | SWI returns inf|
0004a1e0  6f 72 6d 61 74 69 6f 6e  20 61 62 6f 75 74 20 74  |ormation about t|
0004a1f0  68 65 20 72 75 6e 6e 69  6e 67 20 74 61 73 6b 73  |he running tasks|
0004a200  2e 20 28 53 61 6d 65 20  6c 69 73 74 20 61 73 20  |. (Same list as |
0004a210  54 61 73 6b 4d 61 6e 61  67 65 72 20 64 69 73 70  |TaskManager disp|
0004a220  6c 61 79 73 2e 29 20 46  6f 72 20 65 61 63 68 20  |lays.) For each |
0004a230  74 61 73 6b 20 61 20 34  20 77 6f 72 64 20 62 6c  |task a 4 word bl|
0004a240  6f 63 6b 20 69 73 20 72  65 74 75 72 6e 65 64 20  |ock is returned |
0004a250  3a 0a 0a 23 54 61 62 0a  30 09 54 61 73 6b 20 68  |:..#Tab.0.Task h|
0004a260  61 6e 64 6c 65 0a 34 09  54 61 73 6b 20 6e 61 6d  |andle.4.Task nam|
0004a270  65 0a 38 09 53 6c 6f 74  20 73 69 7a 65 0a 31 32  |e.8.Slot size.12|
0004a280  09 3c 46 6c 61 67 73 3d  3e 2e 66 6c 61 67 73 3e  |.<Flags=>.flags>|
0004a290  0a 23 53 75 62 70 61 67  65 20 66 6c 61 67 73 0a  |.#Subpage flags.|
0004a2a0  54 61 73 6b 20 66 6c 61  67 73 0a 42 69 74 09 4d  |Task flags.Bit.M|
0004a2b0  65 61 6e 69 6e 67 20 69  66 20 73 65 74 0a 23 4c  |eaning if set.#L|
0004a2c0  69 6e 65 0a 30 09 6d 6f  64 75 6c 65 20 74 61 73  |ine.0.module tas|
0004a2d0  6b 20 28 6f 74 68 65 72  77 69 73 65 20 61 70 70  |k (otherwise app|
0004a2e0  6c 69 63 61 74 69 6f 6e  20 74 61 73 6b 29 0a 31  |lication task).1|
0004a2f0  09 73 6c 6f 74 20 62 61  72 20 63 61 6e 20 62 65  |.slot bar can be|
0004a300  20 64 72 61 67 67 65 64  20 28 6f 74 68 65 72 77  | dragged (otherw|
0004a310  69 73 65 20 69 74 20 63  61 6e 27 74 29 0a 00 00  |ise it can't)...|
0004a320  44 41 54 41 15 01 00 00  54 61 73 6b 4d 61 6e 61  |DATA....TaskMana|
0004a330  67 65 72 5f 54 61 73 6b  4e 61 6d 65 46 72 6f 6d  |ger_TaskNameFrom|
0004a340  48 61 6e 64 6c 65 20 20  28 26 34 32 36 38 30 29  |Handle  (&42680)|
0004a350  0a 23 50 61 72 65 6e 74  20 54 61 73 6b 4d 61 6e  |.#Parent TaskMan|
0004a360  61 67 65 72 5f 0a 3d 3e  09 52 30 20 3d 20 54 61  |ager_.=>.R0 = Ta|
0004a370  73 6b 68 61 6e 64 6c 65  0a 5c 3c 3d 09 52 30 20  |skhandle.\<=.R0 |
0004a380  3d 20 50 6f 69 6e 74 65  72 20 74 6f 20 54 61 73  |= Pointer to Tas|
0004a390  6b 6e 61 6d 65 0a 0a 54  68 69 73 20 53 57 49 20  |kname..This SWI |
0004a3a0  67 69 76 65 73 20 72 65  74 75 72 6e 73 20 74 68  |gives returns th|
0004a3b0  65 20 64 65 73 63 72 69  70 74 69 6f 6e 20 73 74  |e description st|
0004a3c0  72 69 6e 67 20 77 68 69  63 68 20 74 68 65 20 74  |ring which the t|
0004a3d0  61 73 6b 20 75 73 65 64  20 77 68 65 6e 20 69 74  |ask used when it|
0004a3e0  20 63 61 6c 6c 65 64 20  3c 57 69 6d 70 5f 49 6e  | called <Wimp_In|
0004a3f0  69 74 69 61 6c 69 73 65  3e 2e 20 54 68 69 73 20  |itialise>. This |
0004a400  69 73 20 61 6c 73 6f 20  74 68 65 20 73 74 72 69  |is also the stri|
0004a410  6e 67 20 73 68 6f 77 6e  20 69 6e 20 74 68 65 20  |ng shown in the |
0004a420  6c 69 73 74 2d 6f 66 2d  74 61 73 6b 73 20 77 69  |list-of-tasks wi|
0004a430  6e 64 6f 77 2e 00 00 00  44 41 54 41 5d 02 00 00  |ndow....DATA]...|
0004a440  54 61 73 6b 4d 61 6e 61  67 65 72 5f 53 68 75 74  |TaskManager_Shut|
0004a450  64 6f 77 6e 0a 23 50 61  72 65 6e 74 20 54 61 73  |down.#Parent Tas|
0004a460  6b 4d 61 6e 61 67 65 72  5f 0a 3d 3e 09 52 30 20  |kManager_.=>.R0 |
0004a470  3d 09 3c 53 68 75 74 64  6f 77 6e 20 66 6c 61 67  |=.<Shutdown flag|
0004a480  73 3d 3e 2e 66 6c 61 67  73 3e 0a 0a 54 68 69 73  |s=>.flags>..This|
0004a490  20 63 61 6c 6c 20 69 6e  69 74 69 61 6c 69 73 65  | call initialise|
0004a4a0  73 20 61 20 64 65 73 6b  74 6f 70 20 73 68 75 74  |s a desktop shut|
0004a4b0  64 6f 77 6e 2e 20 54 68  65 20 61 63 74 69 6f 6e  |down. The action|
0004a4c0  73 20 70 72 65 66 6f 72  6d 65 64 20 61 72 65 20  |s preformed are |
0004a4d0  63 6f 6e 74 72 6f 6c 6c  65 64 20 62 79 20 74 68  |controlled by th|
0004a4e0  65 20 73 68 75 74 64 6f  77 6e 20 66 6c 61 67 73  |e shutdown flags|
0004a4f0  2e 0a 23 53 75 62 70 61  67 65 20 66 6c 61 67 73  |..#Subpage flags|
0004a500  0a 54 61 73 6b 4d 61 6e  61 67 65 72 5f 53 68 75  |.TaskManager_Shu|
0004a510  74 64 6f 77 6e 20 74 79  70 65 73 0a 42 69 74 09  |tdown types.Bit.|
0004a520  4d 65 61 6e 69 6e 67 20  77 68 65 6e 20 73 65 74  |Meaning when set|
0004a530  0a 23 4c 69 6e 65 0a 30  09 64 6f 6e 27 74 20 64  |.#Line.0.don't d|
0004a540  69 73 70 6c 61 79 20 72  65 73 74 61 72 74 20 64  |isplay restart d|
0004a550  69 61 6c 6f 67 75 65 0a  31 09 64 6f 6e 27 74 20  |ialogue.1.don't |
0004a560  62 72 6f 61 64 63 61 73  74 20 6d 65 73 73 61 67  |broadcast messag|
0004a570  65 5f 50 72 65 51 75 69  74 0a 32 09 66 6c 61 67  |e_PreQuit.2.flag|
0004a580  20 69 6e 20 3c 43 4d 4f  53 3d 3e 4f 53 5f 42 79  | in <CMOS=>OS_By|
0004a590  74 65 43 4d 4f 53 3e 20  61 73 20 70 6f 72 74 61  |teCMOS> as porta|
0004a5a0  62 6c 65 20 50 6f 77 65  72 44 6f 77 6e 0a 33 09  |ble PowerDown.3.|
0004a5b0  73 65 6e 64 20 61 20 4d  65 73 73 61 67 65 5f 53  |send a Message_S|
0004a5c0  68 75 74 64 6f 77 6e 0a  34 09 72 65 6a 65 63 74  |hutdown.4.reject|
0004a5d0  20 4f 53 5f 55 70 63 61  6c 6c 20 31 20 61 6e 64  | OS_Upcall 1 and|
0004a5e0  20 32 0a 35 2d 33 31 09  6d 75 73 74 20 62 65 20  | 2.5-31.must be |
0004a5f0  7a 65 72 6f 0a 0a 49 66  20 74 68 65 20 62 69 74  |zero..If the bit|
0004a600  20 32 20 69 73 20 73 65  74 2c 20 69 6e 20 43 4d  | 2 is set, in CM|
0004a610  4f 53 20 69 73 20 73 74  6f 72 65 64 20 74 68 61  |OS is stored tha|
0004a620  74 20 74 68 65 20 6c 61  73 74 20 73 68 75 74 64  |t the last shutd|
0004a630  6f 77 6e 20 68 61 70 70  65 6e 65 64 20 62 65 63  |own happened bec|
0004a640  61 75 73 65 20 74 68 65  20 43 4d 4f 53 20 62 61  |ause the CMOS ba|
0004a650  74 74 65 72 79 20 77 61  73 20 64 6f 77 6e 2c 20  |ttery was down, |
0004a660  61 74 20 6e 65 78 74 20  44 65 73 6b 74 6f 70 20  |at next Desktop |
0004a670  73 74 61 72 74 20 61 20  6d 65 73 73 61 67 65 20  |start a message |
0004a680  74 65 6c 6c 69 6e 67 20  74 68 61 74 20 61 70 70  |telling that app|
0004a690  65 61 72 73 2e 00 00 00  44 49 52 24 2c 00 00 00  |ears....DIR$,...|
0004a6a0  2c 00 00 00 c4 a6 04 00  46 fd ff ff 40 f2 ee 13  |,.......F...@...|
0004a6b0  5b 01 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |[...........!Roo|
0004a6c0  74 00 00 00 44 41 54 41  5b 01 00 00 54 61 73 6b  |t...DATA[...Task|
0004a6d0  57 69 6e 64 6f 77 0a 23  50 61 72 65 6e 74 20 21  |Window.#Parent !|
0004a6e0  52 6f 6f 74 0a 54 61 73  6b 49 6e 66 6f 0a 0a 4d  |Root.TaskInfo..M|
0004a6f0  65 73 73 61 67 65 20 63  61 6c 6c 73 20 3a 0a 23  |essage calls :.#|
0004a700  49 6e 64 65 6e 74 20 33  0a 23 54 61 62 6c 65 20  |Indent 3.#Table |
0004a710  34 20 32 34 0a 3c 38 30  38 43 30 20 54 57 5f 49  |4 24.<808C0 TW_I|
0004a720  6e 70 75 74 3d 3e 77 69  6d 70 5f 75 6d 38 30 38  |nput=>wimp_um808|
0004a730  63 30 3e 0a 3c 38 30 38  43 31 20 54 57 5f 4f 75  |c0>.<808C1 TW_Ou|
0004a740  74 70 75 74 20 3d 3e 77  69 6d 70 5f 75 6d 38 30  |tput =>wimp_um80|
0004a750  38 63 31 3e 0a 3c 38 30  38 43 32 20 54 57 5f 45  |8c1>.<808C2 TW_E|
0004a760  67 6f 3d 3e 77 69 6d 70  5f 75 6d 38 30 38 63 32  |go=>wimp_um808c2|
0004a770  3e 0a 3c 38 30 38 43 33  20 54 57 5f 4d 6f 72 69  |>.<808C3 TW_Mori|
0004a780  6f 3d 3e 77 69 6d 70 5f  75 6d 38 30 38 63 33 3e  |o=>wimp_um808c3>|
0004a790  0a 3c 38 30 38 43 34 20  54 57 5f 4d 6f 72 69 74  |.<808C4 TW_Morit|
0004a7a0  65 20 3d 3e 77 69 6d 70  5f 75 6d 38 30 38 63 34  |e =>wimp_um808c4|
0004a7b0  3e 0a 3c 38 30 38 43 35  20 54 57 5f 4e 65 77 54  |>.<808C5 TW_NewT|
0004a7c0  61 73 6b 3d 3e 77 69 6d  70 5f 75 6d 38 30 38 63  |ask=>wimp_um808c|
0004a7d0  35 3e 0a 3c 38 30 38 43  36 20 54 57 5f 53 75 73  |5>.<808C6 TW_Sus|
0004a7e0  70 65 6e 64 3d 3e 77 69  6d 70 5f 75 6d 38 30 38  |pend=>wimp_um808|
0004a7f0  63 36 3e 0a 3c 38 30 38  43 37 20 54 57 5f 52 65  |c6>.<808C7 TW_Re|
0004a800  73 75 6d 65 20 3d 3e 77  69 6d 70 5f 75 6d 38 30  |sume =>wimp_um80|
0004a810  38 63 37 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 00  |8c7>.#EndTable..|
0004a820  44 49 52 24 b4 01 00 00  b4 01 00 00 d4 a9 04 00  |DIR$............|
0004a830  46 fd ff ff 57 47 0f fb  9f 02 00 00 13 00 00 00  |F...WG..........|
0004a840  00 00 00 00 21 52 6f 6f  74 00 00 00 74 ac 04 00  |....!Root...t...|
0004a850  46 ff ff ff 80 a8 56 a8  7b 00 00 00 13 00 00 00  |F.....V.{.......|
0004a860  00 00 00 00 4e 75 6d 62  65 72 00 00 f0 ac 04 00  |....Number......|
0004a870  46 ff ff ff 27 00 59 a8  c0 00 00 00 13 00 00 00  |F...'.Y.........|
0004a880  00 00 00 00 52 65 67 69  73 74 65 72 00 00 00 00  |....Register....|
0004a890  b0 ad 04 00 46 ff ff ff  a0 06 59 a8 8d 00 00 00  |....F.....Y.....|
0004a8a0  13 00 00 00 00 00 00 00  44 65 72 65 67 69 73 74  |........Deregist|
0004a8b0  65 72 00 00 40 ae 04 00  46 ff ff ff e3 f2 58 a8  |er..@...F.....X.|
0004a8c0  d8 00 00 00 13 00 00 00  00 00 00 00 4e 75 6d 62  |............Numb|
0004a8d0  65 72 54 6f 4e 61 6d 65  00 00 00 00 18 af 04 00  |erToName........|
0004a8e0  46 ff ff ff 05 93 57 a8  b5 00 00 00 13 00 00 00  |F.....W.........|
0004a8f0  00 00 00 00 45 78 69 73  74 73 00 00 d0 af 04 00  |....Exists......|
0004a900  46 ff ff ff 2b 20 58 a8  70 01 00 00 13 00 00 00  |F...+ X.p.......|
0004a910  00 00 00 00 43 6f 6e 76  65 72 74 54 69 6d 65 54  |....ConvertTimeT|
0004a920  6f 55 54 43 4f 72 64 69  6e 61 6c 73 00 00 00 00  |oUTCOrdinals....|
0004a930  40 b1 04 00 46 ff ff ff  b4 54 58 a8 e0 00 00 00  |@...F....TX.....|
0004a940  13 00 00 00 00 00 00 00  41 6c 70 68 61 62 65 74  |........Alphabet|
0004a950  4e 75 6d 62 65 72 54 6f  4e 61 6d 65 00 00 00 00  |NumberToName....|
0004a960  20 b2 04 00 46 ff ff ff  ff 0e 59 a8 ac 00 00 00  | ...F.....Y.....|
0004a970  13 00 00 00 00 00 00 00  53 65 6c 65 63 74 41 6c  |........SelectAl|
0004a980  70 68 61 62 65 74 00 00  cc b2 04 00 46 ff ff ff  |phabet......F...|
0004a990  4f fa 58 a8 86 00 00 00  13 00 00 00 00 00 00 00  |O.X.............|
0004a9a0  53 65 74 54 69 6d 65 00  54 b3 04 00 46 ff ff ff  |SetTime.T...F...|
0004a9b0  d9 a5 58 a8 de 00 00 00  13 00 00 00 00 00 00 00  |..X.............|
0004a9c0  52 65 61 64 43 75 72 72  65 6e 74 54 69 6d 65 5a  |ReadCurrentTimeZ|
0004a9d0  6f 6e 65 00 44 41 54 41  9f 02 00 00 54 65 72 72  |one.DATA....Terr|
0004a9e0  69 74 6f 72 79 0a 23 50  72 65 66 69 78 20 54 65  |itory.#Prefix Te|
0004a9f0  72 72 69 74 6f 72 79 5f  0a 23 50 61 72 65 6e 74  |rritory_.#Parent|
0004aa00  20 21 52 6f 6f 74 0a 23  54 61 62 6c 65 20 43 6f  | !Root.#Table Co|
0004aa10  6c 75 6d 6e 73 20 32 0a  41 6c 70 68 61 62 65 74  |lumns 2.Alphabet|
0004aa20  0a 41 6c 70 68 61 62 65  74 49 64 65 6e 74 69 66  |.AlphabetIdentif|
0004aa30  69 65 72 0a 3c 41 6c 70  68 61 62 65 74 4e 75 6d  |ier.<AlphabetNum|
0004aa40  62 65 72 54 6f 4e 61 6d  65 3e 0a 43 68 61 72 61  |berToName>.Chara|
0004aa50  63 74 65 72 50 72 6f 70  65 72 74 79 54 61 62 6c  |cterPropertyTabl|
0004aa60  65 0a 43 6f 6c 6c 61 74  65 0a 43 6f 6e 74 72 6f  |e.Collate.Contro|
0004aa70  6c 54 61 62 6c 65 0a 43  6f 6e 76 65 72 74 44 61  |lTable.ConvertDa|
0004aa80  74 65 41 6e 64 54 69 6d  65 0a 43 6f 6e 76 65 72  |teAndTime.Conver|
0004aa90  74 4f 72 64 69 6e 61 6c  73 54 6f 54 69 6d 65 0a  |tOrdinalsToTime.|
0004aaa0  43 6f 6e 76 65 72 74 53  74 61 6e 64 61 72 64 44  |ConvertStandardD|
0004aab0  61 74 65 0a 43 6f 6e 76  65 72 74 53 74 61 6e 64  |ate.ConvertStand|
0004aac0  61 72 64 44 61 74 65 41  6e 64 54 69 6d 65 0a 43  |ardDateAndTime.C|
0004aad0  6f 6e 76 65 72 74 53 74  61 6e 64 61 72 64 54 69  |onvertStandardTi|
0004aae0  6d 65 0a 43 6f 6e 76 65  72 74 54 65 78 74 54 6f  |me.ConvertTextTo|
0004aaf0  53 74 72 69 6e 67 0a 43  6f 6e 76 65 72 74 54 69  |String.ConvertTi|
0004ab00  6d 65 53 74 72 69 6e 67  54 6f 4f 72 64 69 6e 61  |meStringToOrdina|
0004ab10  6c 73 0a 43 6f 6e 76 65  72 74 54 69 6d 65 54 6f  |ls.ConvertTimeTo|
0004ab20  4f 72 64 69 6e 61 6c 73  0a 3c 43 6f 6e 76 65 72  |Ordinals.<Conver|
0004ab30  74 54 69 6d 65 54 6f 55  54 43 4f 72 64 69 6e 61  |tTimeToUTCOrdina|
0004ab40  6c 73 3e 0a 3c 44 65 72  65 67 69 73 74 65 72 3e  |ls>.<Deregister>|
0004ab50  0a 3c 45 78 69 73 74 73  3e 0a 4c 6f 77 65 72 43  |.<Exists>.LowerC|
0004ab60  61 73 65 54 61 62 6c 65  0a 4e 61 6d 65 54 6f 4e  |aseTable.NameToN|
0004ab70  75 6d 62 65 72 0a 3c 4e  75 6d 62 65 72 3e 0a 3c  |umber.<Number>.<|
0004ab80  4e 75 6d 62 65 72 54 6f  4e 61 6d 65 3e 0a 50 6c  |NumberToName>.Pl|
0004ab90  61 69 6e 54 61 62 6c 65  0a 52 65 61 64 43 61 6c  |ainTable.ReadCal|
0004aba0  65 6e 64 61 72 49 6e 66  6f 72 6d 61 74 69 6f 6e  |endarInformation|
0004abb0  0a 3c 52 65 61 64 43 75  72 72 65 6e 74 54 69 6d  |.<ReadCurrentTim|
0004abc0  65 5a 6f 6e 65 3e 0a 52  65 61 64 53 79 6d 62 6f  |eZone>.ReadSymbo|
0004abd0  6c 73 0a 52 65 61 64 54  69 6d 65 5a 6f 6e 65 73  |ls.ReadTimeZones|
0004abe0  0a 3c 52 65 67 69 73 74  65 72 3e 0a 52 65 70 72  |.<Register>.Repr|
0004abf0  65 73 65 6e 74 61 74 69  6f 6e 54 61 62 6c 65 0a  |esentationTable.|
0004ac00  3c 53 65 6c 65 63 74 41  6c 70 68 61 62 65 74 3e  |<SelectAlphabet>|
0004ac10  0a 53 65 6c 65 63 74 4b  65 79 62 6f 61 72 64 48  |.SelectKeyboardH|
0004ac20  61 6e 64 6c 65 72 0a 3c  53 65 74 54 69 6d 65 3e  |andler.<SetTime>|
0004ac30  0a 54 72 61 6e 73 66 6f  72 6d 53 74 72 69 6e 67  |.TransformString|
0004ac40  0a 55 70 70 65 72 43 61  73 65 54 61 62 6c 65 0a  |.UpperCaseTable.|
0004ac50  56 61 6c 75 65 54 61 62  6c 65 0a 57 72 69 74 65  |ValueTable.Write|
0004ac60  44 69 72 65 63 74 69 6f  6e 0a 23 45 6e 64 54 61  |Direction.#EndTa|
0004ac70  62 6c 65 00 44 41 54 41  7b 00 00 00 54 65 72 72  |ble.DATA{...Terr|
0004ac80  69 74 6f 72 79 5f 4e 75  6d 62 65 72 20 20 28 26  |itory_Number  (&|
0004ac90  34 33 30 34 30 29 0a 23  50 61 72 65 6e 74 20 54  |43040).#Parent T|
0004aca0  65 72 72 69 74 6f 72 79  5f 0a 3c 3d 09 52 30 20  |erritory_.<=.R0 |
0004acb0  3d 20 43 75 72 72 65 6e  74 20 74 65 72 72 69 74  |= Current territ|
0004acc0  6f 72 79 20 6e 75 6d 62  65 72 0a 0a 52 65 61 64  |ory number..Read|
0004acd0  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 74 65  |s the current te|
0004ace0  72 72 69 74 6f 72 79 20  6e 75 6d 62 65 72 2e 00  |rritory number..|
0004acf0  44 41 54 41 c0 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
0004ad00  79 5f 52 65 67 69 73 74  65 72 20 20 28 26 34 33  |y_Register  (&43|
0004ad10  30 34 31 29 0a 23 50 61  72 65 6e 74 20 54 65 72  |041).#Parent Ter|
0004ad20  72 69 74 6f 72 79 5f 0a  3d 3e 09 52 30 20 3d 09  |ritory_.=>.R0 =.|
0004ad30  74 65 72 72 69 74 6f 72  79 20 6e 75 6d 62 65 72  |territory number|
0004ad40  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
0004ad50  6f 20 74 61 62 6c 65 20  6f 66 20 65 6e 74 72 79  |o table of entry|
0004ad60  20 70 6f 69 6e 74 73 0a  09 52 32 20 3d 09 52 31  | points..R2 =.R1|
0004ad70  32 20 66 6f 72 20 63 6f  64 65 0a 0a 41 64 64 73  |2 for code..Adds|
0004ad80  20 61 20 74 65 72 72 69  74 6f 72 79 20 74 6f 20  | a territory to |
0004ad90  74 68 65 20 6c 69 73 74  20 6f 66 20 61 63 74 69  |the list of acti|
0004ada0  76 65 20 74 65 72 72 69  74 6f 72 69 65 73 2e 0a  |ve territories..|
0004adb0  44 41 54 41 8d 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
0004adc0  79 5f 44 65 72 65 67 69  73 74 65 72 20 20 28 26  |y_Deregister  (&|
0004add0  34 33 30 34 32 29 0a 23  50 61 72 65 6e 74 20 54  |43042).#Parent T|
0004ade0  65 72 72 69 74 6f 72 79  5f 0a 3d 3e 09 52 30 20  |erritory_.=>.R0 |
0004adf0  3d 20 74 65 72 72 69 74  6f 72 79 20 6e 75 6d 62  |= territory numb|
0004ae00  65 72 0a 0a 52 65 6d 6f  76 65 73 20 61 20 74 65  |er..Removes a te|
0004ae10  72 72 69 74 6f 72 79 20  66 72 6f 6d 20 74 68 65  |rritory from the|
0004ae20  20 6c 69 73 74 20 6f 66  20 61 63 74 69 76 65 20  | list of active |
0004ae30  74 65 72 72 69 74 6f 72  69 65 73 2e 0a 00 00 00  |territories.....|
0004ae40  44 41 54 41 d8 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
0004ae50  79 5f 4e 75 6d 62 65 72  54 6f 4e 61 6d 65 20 20  |y_NumberToName  |
0004ae60  28 26 34 33 30 34 33 29  0a 23 50 61 72 65 6e 74  |(&43043).#Parent|
0004ae70  20 54 65 72 72 69 74 6f  72 79 5f 0a 3d 3e 09 52  | Territory_.=>.R|
0004ae80  30 20 3d 20 74 65 72 72  69 74 6f 72 79 20 6e 75  |0 = territory nu|
0004ae90  6d 62 65 72 0a 09 52 31  20 3d 20 70 6f 69 6e 74  |mber..R1 = point|
0004aea0  65 72 20 74 6f 20 62 75  66 66 65 72 20 66 6f 72  |er to buffer for|
0004aeb0  20 6e 61 6d 65 0a 09 52  32 20 3d 20 6c 65 6e 67  | name..R2 = leng|
0004aec0  74 68 20 6f 66 20 62 75  66 66 65 72 0a 09 0a 52  |th of buffer...R|
0004aed0  65 74 75 72 6e 73 20 74  68 65 20 6e 61 6d 65 20  |eturns the name |
0004aee0  6f 66 20 67 69 76 65 6e  20 74 65 72 72 69 74 6f  |of given territo|
0004aef0  72 79 20 69 6e 20 74 68  65 20 63 75 72 72 65 6e  |ry in the curren|
0004af00  74 20 74 65 72 72 69 74  6f 72 79 27 73 20 6c 61  |t territory's la|
0004af10  6e 67 75 61 67 65 2e 0a  44 41 54 41 b5 00 00 00  |nguage..DATA....|
0004af20  54 65 72 72 69 74 6f 72  79 5f 45 78 69 73 74 73  |Territory_Exists|
0004af30  20 20 28 26 34 33 30 34  34 29 0a 23 50 61 72 65  |  (&43044).#Pare|
0004af40  6e 74 20 54 65 72 72 69  74 6f 72 79 5f 0a 3d 3e  |nt Territory_.=>|
0004af50  09 52 30 20 3d 20 74 65  72 72 69 74 6f 72 79 20  |.R0 = territory |
0004af60  6e 75 6d 62 65 72 0a 3c  3d 09 5a 20 66 6c 61 67  |number.<=.Z flag|
0004af70  20 73 65 74 20 69 66 20  74 68 65 20 74 65 72 72  | set if the terr|
0004af80  69 74 6f 72 79 20 69 73  20 6c 6f 61 64 65 64 20  |itory is loaded |
0004af90  28 69 65 20 69 73 20 45  51 29 0a 0a 43 68 65 63  |(ie is EQ)..Chec|
0004afa0  6b 73 20 74 6f 20 73 65  65 20 69 66 20 74 68 65  |ks to see if the|
0004afb0  20 67 69 76 65 6e 20 74  65 72 72 69 74 6f 72 79  | given territory|
0004afc0  20 69 73 20 70 72 65 73  65 6e 74 2e 0a 00 00 00  | is present.....|
0004afd0  44 41 54 41 70 01 00 00  54 65 72 72 69 74 6f 72  |DATAp...Territor|
0004afe0  79 5f 43 6f 6e 76 65 72  74 54 69 6d 65 54 6f 55  |y_ConvertTimeToU|
0004aff0  54 43 4f 72 64 69 6e 61  6c 73 20 20 28 26 34 33  |TCOrdinals  (&43|
0004b000  30 34 39 29 0a 23 50 61  72 65 6e 74 20 54 65 72  |049).#Parent Ter|
0004b010  72 69 74 6f 72 79 5f 0a  3d 3e 09 52 31 20 3d 20  |ritory_.=>.R1 = |
0004b020  70 6f 69 6e 74 65 72 20  74 6f 20 35 20 62 79 74  |pointer to 5 byt|
0004b030  65 20 74 69 6d 65 20 62  6c 6f 63 6b 0a 09 52 32  |e time block..R2|
0004b040  20 3d 20 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | = pointer to bu|
0004b050  66 66 65 72 20 74 6f 20  68 6f 6c 64 20 3c 72 65  |ffer to hold <re|
0004b060  73 75 6c 74 3d 3e 2e 75  73 61 62 6c 65 3e 0a 09  |sult=>.usable>..|
0004b070  0a 52 65 74 75 72 6e 73  20 74 68 65 20 74 69 6d  |.Returns the tim|
0004b080  65 20 62 6c 6f 63 6b 20  61 73 20 61 20 73 65 74  |e block as a set|
0004b090  20 6f 66 20 75 73 65 66  75 6c 20 6e 75 6d 62 65  | of useful numbe|
0004b0a0  72 73 2e 0a 23 53 75 62  70 61 67 65 20 75 73 61  |rs..#Subpage usa|
0004b0b0  62 6c 65 0a 55 73 61 62  6c 65 20 74 69 6d 65 20  |ble.Usable time |
0004b0c0  62 6c 6f 63 6b 0a 42 79  74 65 09 43 6f 6e 74 65  |block.Byte.Conte|
0004b0d0  6e 74 73 0a 23 4c 69 6e  65 0a 30 09 63 65 6e 74  |nts.#Line.0.cent|
0004b0e0  69 73 65 63 6f 6e 64 0a  34 09 73 65 63 6f 6e 64  |isecond.4.second|
0004b0f0  0a 38 09 6d 69 6e 75 74  65 0a 43 09 68 6f 75 72  |.8.minute.C.hour|
0004b100  0a 31 30 09 64 61 79 20  77 69 74 68 69 6e 20 6d  |.10.day within m|
0004b110  6f 6e 74 68 0a 31 34 09  6d 6f 6e 74 68 20 69 6e  |onth.14.month in|
0004b120  20 79 65 61 72 0a 31 38  09 79 65 61 72 0a 32 38  | year.18.year.28|
0004b130  09 64 61 79 20 6f 66 20  74 68 65 20 77 65 65 6b  |.day of the week|
0004b140  44 41 54 41 e0 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
0004b150  79 5f 41 6c 70 68 61 62  65 74 4e 75 6d 62 65 72  |y_AlphabetNumber|
0004b160  54 6f 4e 61 6d 65 20 20  28 26 34 33 30 34 35 29  |ToName  (&43045)|
0004b170  0a 23 50 61 72 65 6e 74  20 54 65 72 72 69 74 6f  |.#Parent Territo|
0004b180  72 79 5f 0a 3d 3e 09 52  30 20 3d 20 61 6c 70 68  |ry_.=>.R0 = alph|
0004b190  61 62 65 74 20 6e 75 6d  62 65 72 0a 09 52 31 20  |abet number..R1 |
0004b1a0  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 62 75 66  |= pointer to buf|
0004b1b0  66 65 72 20 74 6f 20 68  6f 6c 64 20 6e 61 6d 65  |fer to hold name|
0004b1c0  0a 09 52 32 20 3d 20 6c  65 6e 67 74 68 20 6f 66  |..R2 = length of|
0004b1d0  20 62 75 66 66 65 72 0a  09 0a 52 65 74 75 72 6e  | buffer...Return|
0004b1e0  73 20 74 68 65 20 6e 61  6d 65 20 6f 66 20 74 68  |s the name of th|
0004b1f0  65 20 61 6c 70 68 61 62  65 74 20 69 6e 20 74 68  |e alphabet in th|
0004b200  65 20 63 75 72 72 65 6e  74 20 74 65 72 72 69 74  |e current territ|
0004b210  6f 72 79 27 73 20 6c 61  6e 67 75 61 67 65 2e 0a  |ory's language..|
0004b220  44 41 54 41 ac 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
0004b230  79 5f 53 65 6c 65 63 74  41 6c 70 68 61 62 65 74  |y_SelectAlphabet|
0004b240  20 20 28 26 34 33 30 34  36 29 0a 23 50 61 72 65  |  (&43046).#Pare|
0004b250  6e 74 20 54 65 72 72 69  74 6f 72 79 5f 0a 3d 3e  |nt Territory_.=>|
0004b260  09 52 30 20 3d 09 74 65  72 72 69 74 6f 72 79 20  |.R0 =.territory |
0004b270  6e 75 6d 62 65 72 2c 20  6f 72 20 2d 31 20 74 6f  |number, or -1 to|
0004b280  20 75 73 65 20 63 75 72  72 65 6e 74 20 74 65 72  | use current ter|
0004b290  72 69 74 6f 72 79 0a 09  0a 53 65 6c 65 63 74 73  |ritory...Selects|
0004b2a0  20 74 68 65 20 63 6f 72  72 65 63 74 20 61 6c 70  | the correct alp|
0004b2b0  68 61 62 65 74 20 66 6f  72 20 61 20 67 69 76 65  |habet for a give|
0004b2c0  6e 20 74 65 72 72 69 74  6f 74 79 2e 44 41 54 41  |n territoty.DATA|
0004b2d0  86 00 00 00 54 65 72 72  69 74 6f 72 79 5f 53 65  |....Territory_Se|
0004b2e0  74 54 69 6d 65 20 20 28  26 34 33 30 34 37 29 0a  |tTime  (&43047).|
0004b2f0  23 50 61 72 65 6e 74 20  54 65 72 72 69 74 6f 72  |#Parent Territor|
0004b300  79 5f 0a 3d 3e 09 52 30  20 3d 09 70 6f 69 6e 74  |y_.=>.R0 =.point|
0004b310  65 72 20 74 6f 20 61 20  35 2d 62 79 74 65 20 55  |er to a 5-byte U|
0004b320  54 43 20 74 69 6d 65 0a  09 0a 53 65 74 73 20 74  |TC time...Sets t|
0004b330  68 65 20 69 6e 74 65 72  6e 61 6c 20 63 6c 6f 63  |he internal cloc|
0004b340  6b 20 74 6f 20 61 20 67  69 76 65 6e 20 74 69 6d  |k to a given tim|
0004b350  65 2e 00 00 44 41 54 41  de 00 00 00 54 65 72 72  |e...DATA....Terr|
0004b360  69 74 6f 72 79 5f 52 65  61 64 43 75 72 72 65 6e  |itory_ReadCurren|
0004b370  74 54 69 6d 65 5a 6f 6e  65 20 20 28 26 34 33 30  |tTimeZone  (&430|
0004b380  34 38 29 0a 23 50 61 72  65 6e 74 20 54 65 72 72  |48).#Parent Terr|
0004b390  69 74 6f 72 79 5f 0a 3d  3e 09 52 30 20 3d 09 70  |itory_.=>.R0 =.p|
0004b3a0  6f 69 6e 74 65 72 20 74  6f 20 6e 61 6d 65 20 6f  |ointer to name o|
0004b3b0  66 20 74 68 65 20 63 75  72 72 65 6e 74 20 74 69  |f the current ti|
0004b3c0  6d 65 20 7a 6f 6e 65 0a  09 52 31 20 3d 09 6f 66  |me zone..R1 =.of|
0004b3d0  66 73 65 74 20 66 72 6f  6d 20 55 54 43 20 74 6f  |fset from UTC to|
0004b3e0  20 63 75 72 72 65 6e 74  20 74 69 6d 65 20 7a 6f  | current time zo|
0004b3f0  6e 65 20 69 6e 20 63 65  6e 74 69 2d 73 65 63 6f  |ne in centi-seco|
0004b400  6e 64 73 0a 09 0a 52 65  74 75 72 6e 73 20 69 6e  |nds...Returns in|
0004b410  66 6f 72 6d 61 74 69 6f  6e 20 6f 6e 20 74 68 65  |formation on the|
0004b420  20 63 75 72 72 65 6e 74  20 74 69 6d 65 7a 6f 6e  | current timezon|
0004b430  65 2e 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |e...DIR$,...,...|
0004b440  60 b4 04 00 46 fd ff ff  2d dc dc 14 40 00 00 00  |`...F...-...@...|
0004b450  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0004b460  44 41 54 41 40 00 00 00  54 69 6e 79 53 75 70 70  |DATA@...TinySupp|
0004b470  6f 72 74 0a 23 50 61 72  65 6e 74 20 21 52 6f 6f  |ort.#Parent !Roo|
0004b480  74 0a 23 50 72 65 66 69  78 20 54 69 6e 79 53 75  |t.#Prefix TinySu|
0004b490  70 70 6f 72 74 5f 0a 49  6e 69 74 0a 44 69 65 0a  |pport_.Init.Die.|
0004b4a0  44 49 52 24 2c 00 00 00  2c 00 00 00 cc b4 04 00  |DIR$,...,.......|
0004b4b0  46 fd ff ff 17 36 da 14  86 01 00 00 13 00 00 00  |F....6..........|
0004b4c0  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
0004b4d0  86 01 00 00 54 6f 6f 6c  62 6f 78 0a 23 50 61 72  |....Toolbox.#Par|
0004b4e0  65 6e 74 20 21 52 6f 6f  74 0a 23 50 72 65 66 69  |ent !Root.#Prefi|
0004b4f0  78 20 54 6f 6f 6c 62 6f  78 5f 0a 23 54 61 62 6c  |x Toolbox_.#Tabl|
0004b500  65 20 43 6f 6c 75 6d 6e  73 20 32 0a 43 72 65 61  |e Columns 2.Crea|
0004b510  74 65 4f 62 6a 65 63 74  0a 44 65 6c 65 74 65 4f  |teObject.DeleteO|
0004b520  62 6a 65 63 74 0a 43 6f  70 79 4f 62 6a 65 63 74  |bject.CopyObject|
0004b530  0a 53 68 6f 77 4f 62 6a  65 63 74 0a 48 69 64 65  |.ShowObject.Hide|
0004b540  4f 62 6a 65 63 74 0a 47  65 74 4f 62 6a 65 63 74  |Object.GetObject|
0004b550  49 6e 66 6f 0a 4f 62 6a  65 63 74 4d 69 73 63 4f  |Info.ObjectMiscO|
0004b560  70 0a 53 65 74 43 6c 69  65 6e 74 48 61 6e 64 6c  |p.SetClientHandl|
0004b570  65 0a 47 65 74 43 6c 69  65 6e 74 48 61 6e 64 6c  |e.GetClientHandl|
0004b580  65 0a 47 65 74 4f 62 6a  65 63 74 43 6c 61 73 73  |e.GetObjectClass|
0004b590  0a 47 65 74 50 61 72 65  6e 74 0a 47 65 74 41 6e  |.GetParent.GetAn|
0004b5a0  63 65 73 74 6f 72 0a 47  65 74 54 65 6d 70 6c 61  |cestor.GetTempla|
0004b5b0  74 65 4e 61 6d 65 0a 52  61 69 73 65 54 6f 6f 6c  |teName.RaiseTool|
0004b5c0  62 6f 78 45 76 65 6e 74  0a 47 65 74 53 79 73 49  |boxEvent.GetSysI|
0004b5d0  6e 66 6f 0a 49 6e 69 74  69 61 6c 69 73 65 0a 4c  |nfo.Initialise.L|
0004b5e0  6f 61 64 52 65 73 6f 75  72 63 65 73 0a 54 65 6d  |oadResources.Tem|
0004b5f0  70 6c 61 74 65 4c 6f 6f  6b 55 70 0a 47 65 74 49  |plateLookUp.GetI|
0004b600  6e 74 65 72 6e 61 6c 48  61 6e 64 6c 65 0a 52 65  |nternalHandle.Re|
0004b610  67 69 73 74 65 72 50 6f  73 74 46 69 6c 74 65 72  |gisterPostFilter|
0004b620  0a 52 65 67 69 73 74 65  72 50 72 65 46 69 6c 74  |.RegisterPreFilt|
0004b630  65 72 0a 52 65 67 69 73  74 65 72 4f 62 6a 65 63  |er.RegisterObjec|
0004b640  74 4d 6f 64 75 6c 65 0a  23 45 6e 64 54 61 62 6c  |tModule.#EndTabl|
0004b650  65 0a 00 00 44 49 52 24  b4 03 00 00 b4 03 00 00  |e...DIR$........|
0004b660  08 ba 04 00 46 fd ff ff  04 fc ec 13 b8 01 00 00  |....F...........|
0004b670  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0004b680  c0 bb 04 00 46 ff ff ff  d1 d8 8c a5 0d 01 00 00  |....F...........|
0004b690  13 00 00 00 00 00 00 00  56 65 72 73 69 6f 6e 00  |........Version.|
0004b6a0  d0 bc 04 00 46 ff ff ff  43 88 8c a5 ec 01 00 00  |....F...C.......|
0004b6b0  13 00 00 00 00 00 00 00  4c 6f 61 64 00 00 00 00  |........Load....|
0004b6c0  bc be 04 00 46 ff ff ff  3d 91 0e fb 83 04 00 00  |....F...=.......|
0004b6d0  13 00 00 00 00 00 00 00  6d 65 6d 6f 72 79 6c 6f  |........memorylo|
0004b6e0  61 64 00 00 40 c3 04 00  46 ff ff ff 84 e2 8c a5  |ad..@...F.......|
0004b6f0  a6 00 00 00 13 00 00 00  00 00 00 00 50 6c 61 79  |............Play|
0004b700  00 00 00 00 e8 c3 04 00  46 ff ff ff 5e eb 8c a5  |........F...^...|
0004b710  d5 01 00 00 13 00 00 00  00 00 00 00 53 74 6f 70  |............Stop|
0004b720  00 00 00 00 c0 c5 04 00  46 ff ff ff 3c ef 8c a5  |........F...<...|
0004b730  5f 00 00 00 13 00 00 00  00 00 00 00 50 61 75 73  |_...........Paus|
0004b740  65 00 00 00 20 c6 04 00  46 ff ff ff 36 c5 8c a5  |e... ...F...6...|
0004b750  b0 04 00 00 13 00 00 00  00 00 00 00 53 74 65 72  |............Ster|
0004b760  65 6f 00 00 d0 ca 04 00  46 ff ff ff fb cb 8c a5  |eo......F.......|
0004b770  b4 01 00 00 13 00 00 00  00 00 00 00 53 65 74 50  |............SetP|
0004b780  6f 73 00 00 84 cc 04 00  46 ff ff ff 6b d4 8c a5  |os......F...k...|
0004b790  8f 01 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
0004b7a0  50 6f 73 00 14 ce 04 00  46 ff ff ff d4 01 8d a5  |Pos.....F.......|
0004b7b0  bd 03 00 00 13 00 00 00  00 00 00 00 50 6c 61 79  |............Play|
0004b7c0  4e 6f 74 65 00 00 00 00  d4 d1 04 00 46 ff ff ff  |Note........F...|
0004b7d0  08 08 8d a5 45 04 00 00  13 00 00 00 00 00 00 00  |....E...........|
0004b7e0  54 75 6e 65 49 6e 66 6f  00 00 00 00 1c d6 04 00  |TuneInfo........|
0004b7f0  46 ff ff ff ef 0e 8d a5  3c 04 00 00 13 00 00 00  |F.......<.......|
0004b800  00 00 00 00 53 6f 75 6e  64 49 6e 66 6f 00 00 00  |....SoundInfo...|
0004b810  58 da 04 00 46 ff ff ff  f0 19 8d a5 aa 02 00 00  |X...F...........|
0004b820  13 00 00 00 00 00 00 00  52 65 61 64 53 61 6d 70  |........ReadSamp|
0004b830  6c 65 54 61 62 6c 65 00  04 dd 04 00 46 ff ff ff  |leTable.....F...|
0004b840  b0 c5 8d a5 63 05 00 00  13 00 00 00 00 00 00 00  |....c...........|
0004b850  57 72 69 74 65 53 61 6d  70 6c 65 54 61 62 6c 65  |WriteSampleTable|
0004b860  00 00 00 00 68 e2 04 00  46 ff ff ff 4c 5d 8d a5  |....h...F...L]..|
0004b870  1a 06 00 00 13 00 00 00  00 00 00 00 4c 6f 63 6b  |............Lock|
0004b880  00 00 00 00 84 e8 04 00  46 ff ff ff 38 52 8d a5  |........F...8R..|
0004b890  4c 01 00 00 13 00 00 00  00 00 00 00 55 6e 6c 6f  |L...........Unlo|
0004b8a0  63 6b 00 00 d0 e9 04 00  46 ff ff ff 22 71 8d a5  |ck......F..."q..|
0004b8b0  83 01 00 00 13 00 00 00  00 00 00 00 4d 75 74 65  |............Mute|
0004b8c0  43 68 61 6e 6e 65 6c 00  54 eb 04 00 46 ff ff ff  |Channel.T...F...|
0004b8d0  ce 81 8d a5 2f 01 00 00  13 00 00 00 00 00 00 00  |..../...........|
0004b8e0  52 65 73 74 6f 72 65 43  68 61 6e 6e 65 6c 00 00  |RestoreChannel..|
0004b8f0  84 ec 04 00 46 ff ff ff  1d 92 8d a5 17 02 00 00  |....F...........|
0004b900  13 00 00 00 00 00 00 00  53 70 65 65 64 00 00 00  |........Speed...|
0004b910  9c ee 04 00 46 ff ff ff  19 a4 8d a5 03 02 00 00  |....F...........|
0004b920  13 00 00 00 00 00 00 00  56 6f 6c 75 6d 65 00 00  |........Volume..|
0004b930  a0 f0 04 00 46 ff ff ff  4d d9 8d a5 44 01 00 00  |....F...M...D...|
0004b940  13 00 00 00 00 00 00 00  54 72 61 6e 73 6c 61 74  |........Translat|
0004b950  65 56 6f 6c 75 6d 65 00  e4 f1 04 00 46 ff ff ff  |eVolume.....F...|
0004b960  d3 ee 8d a5 42 01 00 00  13 00 00 00 00 00 00 00  |....B...........|
0004b970  55 70 64 61 74 65 44 61  74 61 00 00 28 f3 04 00  |UpdateData..(...|
0004b980  46 fd ff ff f4 d7 c7 13  f7 01 00 00 13 00 00 00  |F...............|
0004b990  00 00 00 00 4e 6f 74 65  54 61 62 6c 65 00 00 00  |....NoteTable...|
0004b9a0  20 f5 04 00 46 fd ff ff  9e a1 0e fb d9 0b 00 00  | ...F...........|
0004b9b0  13 00 00 00 00 00 00 00  63 6f 6d 6d 61 6e 64 73  |........commands|
0004b9c0  00 00 00 00 fc 00 05 00  46 fd ff ff 8d 47 c9 13  |........F....G..|
0004b9d0  b6 06 00 00 13 00 00 00  00 00 00 00 45 72 72 6f  |............Erro|
0004b9e0  72 73 00 00 b4 07 05 00  46 fd ff ff 3f 16 cb 13  |rs......F...?...|
0004b9f0  0b 06 00 00 13 00 00 00  00 00 00 00 53 6f 75 6e  |............Soun|
0004ba00  64 42 6c 6f 63 6b 00 00  44 41 54 41 b8 01 00 00  |dBlock..DATA....|
0004ba10  54 72 61 63 6b 65 72 0a  23 50 61 72 65 6e 74 20  |Tracker.#Parent |
0004ba20  21 52 6f 6f 74 0a 23 50  72 65 66 69 78 20 54 72  |!Root.#Prefix Tr|
0004ba30  61 63 6b 65 72 5f 0a 23  54 61 62 6c 65 20 43 6f  |acker_.#Table Co|
0004ba40  6c 75 6d 6e 73 20 32 0a  3c 56 65 72 73 69 6f 6e  |lumns 2.<Version|
0004ba50  3e 0a 3c 4c 6f 61 64 3e  0a 3c 4d 65 6d 6f 72 79  |>.<Load>.<Memory|
0004ba60  4c 6f 61 64 3e 0a 3c 50  6c 61 79 3e 0a 3c 53 74  |Load>.<Play>.<St|
0004ba70  6f 70 3e 0a 3c 50 61 75  73 65 3e 0a 3c 53 74 65  |op>.<Pause>.<Ste|
0004ba80  72 65 6f 3e 0a 3c 53 65  74 50 6f 73 3e 0a 3c 52  |reo>.<SetPos>.<R|
0004ba90  65 61 64 50 6f 73 3e 0a  3c 50 6c 61 79 4e 6f 74  |eadPos>.<PlayNot|
0004baa0  65 3e 0a 3c 54 75 6e 65  49 6e 66 6f 3e 0a 3c 53  |e>.<TuneInfo>.<S|
0004bab0  6f 75 6e 64 49 6e 66 6f  3e 0a 3c 52 65 61 64 53  |oundInfo>.<ReadS|
0004bac0  61 6d 70 6c 65 54 61 62  6c 65 3e 0a 3c 4c 6f 63  |ampleTable>.<Loc|
0004bad0  6b 3e 0a 3c 55 6e 6c 6f  63 6b 3e 0a 3c 4d 75 74  |k>.<Unlock>.<Mut|
0004bae0  65 43 68 61 6e 6e 65 6c  3e 0a 3c 52 65 73 74 6f  |eChannel>.<Resto|
0004baf0  72 65 43 68 61 6e 6e 65  6c 3e 0a 3c 53 70 65 65  |reChannel>.<Spee|
0004bb00  64 3e 0a 3c 56 6f 6c 75  6d 65 3e 0a 3c 57 72 69  |d>.<Volume>.<Wri|
0004bb10  74 65 53 61 6d 70 6c 65  54 61 62 6c 65 3e 0a 3c  |teSampleTable>.<|
0004bb20  54 72 61 6e 73 6c 61 74  65 56 6f 6c 75 6d 65 3e  |TranslateVolume>|
0004bb30  0a 3c 55 70 64 61 74 65  44 61 74 61 3e 0a 23 45  |.<UpdateData>.#E|
0004bb40  6e 64 54 61 62 6c 65 0a  0a 4f 74 68 65 72 20 69  |ndTable..Other i|
0004bb50  6e 66 6f 72 6d 61 74 69  6f 6e 20 3a 0a 23 49 6e  |nformation :.#In|
0004bb60  64 65 6e 74 20 33 0a 3c  4e 6f 74 65 20 74 72 61  |dent 3.<Note tra|
0004bb70  6e 73 6c 61 74 69 6f 6e  20 74 61 62 6c 65 3d 3e  |nslation table=>|
0004bb80  54 72 61 63 6b 65 72 5f  4e 6f 74 65 54 61 62 6c  |Tracker_NoteTabl|
0004bb90  65 3e 0a 3c 54 72 61 63  6b 65 72 20 63 6f 6d 6d  |e>.<Tracker comm|
0004bba0  61 6e 64 73 3d 3e 54 72  61 63 6b 65 72 5f 43 6f  |ands=>Tracker_Co|
0004bbb0  6d 6d 61 6e 64 73 3e 0a  3c 45 72 72 6f 72 73 3e  |mmands>.<Errors>|
0004bbc0  44 41 54 41 0d 01 00 00  54 72 61 63 6b 65 72 5f  |DATA....Tracker_|
0004bbd0  56 65 72 73 69 6f 6e 20  20 28 26 34 33 32 30 30  |Version  (&43200|
0004bbe0  29 0a 23 50 61 72 65 6e  74 20 54 72 61 63 6b 65  |).#Parent Tracke|
0004bbf0  72 5f 0a 3d 3e 09 52 30  20 3d 09 76 65 72 73 69  |r_.=>.R0 =.versi|
0004bc00  6f 6e 20 6e 75 6d 62 65  72 2a 31 30 30 20 20 28  |on number*100  (|
0004bc10  69 65 2e 20 66 6f 72 20  76 31 2e 32 33 20 3d 20  |ie. for v1.23 = |
0004bc20  31 32 33 29 0a 0a 55 73  65 20 74 68 69 73 20 63  |123)..Use this c|
0004bc30  61 6c 6c 20 74 6f 20 65  6e 73 75 72 65 20 74 68  |all to ensure th|
0004bc40  61 74 20 74 68 65 20 54  72 61 63 6b 65 72 4d 6f  |at the TrackerMo|
0004bc50  64 75 6c 65 20 69 6e 73  74 61 6c 6c 65 64 20 69  |dule installed i|
0004bc60  73 20 61 20 72 65 63 65  6e 74 20 65 6e 6f 75 67  |s a recent enoug|
0004bc70  68 20 76 65 72 73 69 6f  6e 20 74 6f 20 73 75 70  |h version to sup|
0004bc80  70 6f 72 74 20 74 68 65  20 53 57 49 27 73 20 79  |port the SWI's y|
0004bc90  6f 75 20 77 69 73 68 20  74 6f 20 75 73 65 2e 20  |ou wish to use. |
0004bca0  56 65 72 73 69 6f 6e 73  20 34 2e 30 30 20 6f 6e  |Versions 4.00 on|
0004bcb0  77 61 72 64 73 20 69 6e  63 6f 72 70 6f 72 61 74  |wards incorporat|
0004bcc0  65 20 74 68 65 20 53 57  49 27 73 2e 0a 00 00 00  |e the SWI's.....|
0004bcd0  44 41 54 41 ec 01 00 00  54 72 61 63 6b 65 72 5f  |DATA....Tracker_|
0004bce0  4c 6f 61 64 20 20 28 26  34 33 32 30 31 29 0a 23  |Load  (&43201).#|
0004bcf0  50 61 72 65 6e 74 20 54  72 61 63 6b 65 72 5f 0a  |Parent Tracker_.|
0004bd00  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
0004bd10  74 6f 20 66 69 6c 65 6e  61 6d 65 20 6f 66 20 73  |to filename of s|
0004bd20  6f 75 6e 64 74 72 61 63  6b 65 72 2f 74 72 61 63  |oundtracker/trac|
0004bd30  6b 65 72 20 6d 6f 64 75  6c 65 0a 5c 3c 3d 09 52  |ker module.\<=.R|
0004bd40  30 20 70 72 65 73 65 72  76 65 64 0a 0a 54 68 69  |0 preserved..Thi|
0004bd50  73 20 63 61 6c 6c 20 77  69 6c 6c 20 63 6c 61 69  |s call will clai|
0004bd60  6d 20 6d 65 6d 6f 72 79  20 66 72 6f 6d 20 74 68  |m memory from th|
0004bd70  65 20 52 4d 41 20 61 6e  64 20 6c 6f 61 64 20 74  |e RMA and load t|
0004bd80  68 65 20 73 70 65 63 69  66 69 65 64 20 74 75 6e  |he specified tun|
0004bd90  65 20 6d 6f 64 75 6c 65  2c 20 69 6e 69 74 69 61  |e module, initia|
0004bda0  6c 69 73 65 20 74 68 65  20 73 6f 75 6e 64 20 73  |lise the sound s|
0004bdb0  79 73 74 65 6d 2c 20 61  6e 64 20 73 65 74 20 74  |ystem, and set t|
0004bdc0  68 65 20 70 6c 61 79 72  6f 75 74 69 6e 65 20 69  |he playroutine i|
0004bdd0  6e 20 70 61 75 73 65 20  6d 6f 64 65 2e 20 59 6f  |n pause mode. Yo|
0004bde0  75 20 6d 75 73 74 20 74  68 65 6e 20 75 73 65 20  |u must then use |
0004bdf0  3c 54 72 61 63 6b 65 72  5f 50 6c 61 79 3e 20 74  |<Tracker_Play> t|
0004be00  6f 20 73 74 61 72 74 20  74 68 65 20 74 75 6e 65  |o start the tune|
0004be10  20 70 6c 61 79 69 6e 67  2e 20 54 68 65 20 63 6f  | playing. The co|
0004be20  6d 6d 61 6e 64 20 2a 50  6c 61 79 4d 6f 64 20 63  |mmand *PlayMod c|
0004be30  61 6c 6c 73 20 74 68 69  73 20 72 6f 75 74 69 6e  |alls this routin|
0004be40  65 2c 20 61 6e 64 20 74  68 65 6e 20 3c 54 72 61  |e, and then <Tra|
0004be50  63 6b 65 72 5f 50 6c 61  79 3e 2e 0a 0a 41 6e 20  |cker_Play>...An |
0004be60  65 72 72 6f 72 20 77 69  6c 6c 20 62 65 20 67 65  |error will be ge|
0004be70  6e 65 72 61 74 65 64 20  69 66 20 74 68 65 20 6d  |nerated if the m|
0004be80  6f 64 75 6c 65 20 63 61  6e 6e 6f 74 20 62 65 20  |odule cannot be |
0004be90  6c 6f 61 64 65 64 20 6f  72 20 6e 6f 74 20 65 6e  |loaded or not en|
0004bea0  6f 75 67 68 20 6d 65 6d  6f 72 79 20 63 61 6e 20  |ough memory can |
0004beb0  62 65 20 63 6c 61 69 6d  65 64 2e 0a 44 41 54 41  |be claimed..DATA|
0004bec0  83 04 00 00 54 72 61 63  6b 65 72 5f 4d 65 6d 6f  |....Tracker_Memo|
0004bed0  72 79 4c 6f 61 64 20 20  28 26 34 33 32 30 32 29  |ryLoad  (&43202)|
0004bee0  0a 23 50 61 72 65 6e 74  20 54 72 61 63 6b 65 72  |.#Parent Tracker|
0004bef0  5f 0a 3d 3e 09 52 30 20  3d 09 70 6f 69 6e 74 65  |_.=>.R0 =.pointe|
0004bf00  72 20 74 6f 20 66 69 72  73 74 20 77 6f 72 64 20  |r to first word |
0004bf10  6f 66 20 73 6f 75 6e 64  74 72 61 63 6b 65 72 2f  |of soundtracker/|
0004bf20  74 72 61 63 6b 65 72 20  6d 6f 64 75 6c 65 20 69  |tracker module i|
0004bf30  6e 20 6d 65 6d 6f 72 79  20 28 4e 42 20 6d 75 73  |n memory (NB mus|
0004bf40  74 20 62 65 20 77 6f 72  64 2d 61 6c 69 67 6e 65  |t be word-aligne|
0004bf50  64 29 0a 09 52 31 20 3d  09 6c 65 6e 67 74 68 20  |d)..R1 =.length |
0004bf60  6f 66 20 6d 6f 64 75 6c  65 20 69 6e 20 62 79 74  |of module in byt|
0004bf70  65 73 0a 5c 3c 3d 09 52  30 20 61 6e 64 20 52 31  |es.\<=.R0 and R1|
0004bf80  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0004bf90  20 63 61 6c 6c 20 63 61  6e 20 62 65 20 75 73 65  | call can be use|
0004bfa0  64 20 62 79 20 61 20 6e  6f 6e 2d 6d 75 6c 74 69  |d by a non-multi|
0004bfb0  74 61 73 6b 69 6e 67 20  61 70 70 6c 69 63 61 74  |tasking applicat|
0004bfc0  69 6f 6e 20 74 6f 20 73  70 65 63 69 66 79 20 61  |ion to specify a|
0004bfd0  6e 20 61 72 65 61 20 6f  66 20 6d 65 6d 6f 72 79  |n area of memory|
0004bfe0  20 61 73 20 61 20 74 75  6e 65 20 6d 6f 64 75 6c  | as a tune modul|
0004bff0  65 2c 20 61 6e 64 20 74  68 65 72 65 62 79 20 72  |e, and thereby r|
0004c000  65 6d 6f 76 65 20 74 68  65 20 6e 65 65 64 20 66  |emove the need f|
0004c010  6f 72 20 61 20 73 65 70  65 72 61 74 65 20 66 69  |or a seperate fi|
0004c020  6c 65 20 74 6f 20 68 6f  6c 64 20 61 20 74 75 6e  |le to hold a tun|
0004c030  65 2c 20 61 6e 64 20 74  68 65 72 65 20 69 73 20  |e, and there is |
0004c040  6e 6f 20 6e 65 65 64 20  74 6f 20 63 6c 61 69 6d  |no need to claim|
0004c050  20 61 20 6c 61 72 67 65  20 61 6d 6f 75 6e 74 20  | a large amount |
0004c060  6f 66 20 52 4d 41 20 73  70 61 63 65 2e 20 4f 6e  |of RMA space. On|
0004c070  63 65 20 74 68 69 73 20  53 57 49 20 69 73 20 63  |ce this SWI is c|
0004c080  61 6c 6c 65 64 2c 20 74  68 65 20 6d 6f 64 75 6c  |alled, the modul|
0004c090  65 20 77 69 6c 6c 20 62  65 20 74 72 65 61 74 65  |e will be treate|
0004c0a0  64 20 61 73 20 69 66 20  69 74 20 77 61 73 20 6c  |d as if it was l|
0004c0b0  6f 61 64 65 64 20 69 6e  20 74 68 65 20 6d 6f 64  |oaded in the mod|
0004c0c0  75 6c 65 27 73 20 6f 77  6e 20 77 6f 72 6b 73 70  |ule's own worksp|
0004c0d0  61 63 65 2e 0a 57 68 65  6e 20 61 20 73 6f 75 6e  |ace..When a soun|
0004c0e0  64 74 72 61 63 6b 65 72  20 6d 6f 64 75 6c 65 20  |dtracker module |
0004c0f0  69 73 20 6c 6f 61 64 65  64 2c 20 74 68 65 20 70  |is loaded, the p|
0004c100  61 74 74 65 72 6e 20 64  61 74 61 20 69 73 20 63  |attern data is c|
0004c110  6f 6e 76 65 72 74 65 64  20 74 6f 20 54 72 61 63  |onverted to Trac|
0004c120  6b 65 72 20 66 6f 72 6d  61 74 20 64 61 74 61 20  |ker format data |
0004c130  28 65 78 63 65 70 74 20  66 6f 72 20 76 6f 6c 75  |(except for volu|
0004c140  6d 65 73 20 77 68 69 63  68 20 72 65 6d 61 69 6e  |mes which remain|
0004c150  20 30 2d 36 34 29 2c 20  73 6f 20 20 66 6f 72 20  | 0-64), so  for |
0004c160  74 68 65 20 70 75 72 70  6f 73 65 73 20 6f 66 20  |the purposes of |
0004c170  65 64 69 74 69 6e 67 2c  20 61 73 20 6c 6f 6e 67  |editing, as long|
0004c180  20 61 73 20 3c 54 72 61  63 6b 65 72 5f 52 65 61  | as <Tracker_Rea|
0004c190  64 50 6f 73 3e 2f 3c 54  72 61 63 6b 65 72 5f 57  |dPos>/<Tracker_W|
0004c1a0  72 69 74 65 53 61 6d 70  6c 65 54 61 62 6c 65 3e  |riteSampleTable>|
0004c1b0  20 61 72 65 20 75 73 65  64 2c 20 74 68 65 20 6d  | are used, the m|
0004c1c0  6f 64 75 6c 65 20 63 61  6e 20 62 65 20 63 6f 6e  |odule can be con|
0004c1d0  73 69 64 65 72 65 64 20  61 73 20 61 20 54 72 61  |sidered as a Tra|
0004c1e0  63 6b 65 72 20 6d 6f 64  75 6c 65 2e 20 57 68 65  |cker module. Whe|
0004c1f0  6e 20 3c 54 72 61 63 6b  65 72 5f 53 74 6f 70 3e  |n <Tracker_Stop>|
0004c200  2f 2a 50 6c 61 79 53 74  6f 70 20 69 73 20 63 61  |/*PlayStop is ca|
0004c210  6c 6c 65 64 2c 20 74 68  65 20 64 61 74 61 20 69  |lled, the data i|
0004c220  73 20 63 6f 6e 76 65 72  74 65 64 20 62 61 63 6b  |s converted back|
0004c230  2e 0a 0a 49 6d 70 6f 72  74 61 6e 74 3a 20 59 6f  |...Important: Yo|
0004c240  75 20 6d 75 73 74 20 74  65 6c 6c 20 74 68 65 20  |u must tell the |
0004c250  54 72 61 63 6b 65 72 4d  6f 64 75 6c 65 20 74 6f  |TrackerModule to|
0004c260  20 66 6f 72 67 65 74 20  74 68 65 20 6d 6f 64 75  | forget the modu|
0004c270  6c 65 20 69 66 20 74 68  65 20 6d 65 6d 6f 72 79  |le if the memory|
0004c280  20 77 69 6c 6c 20 62 65  20 6f 76 65 72 77 72 69  | will be overwri|
0004c290  74 74 65 6e 2c 20 6f 74  68 65 72 77 69 73 65 20  |tten, otherwise |
0004c2a0  74 68 65 20 6d 6f 64 75  6c 65 20 6d 61 79 20 63  |the module may c|
0004c2b0  72 61 73 68 2e 20 28 2a  50 6c 61 79 53 74 6f 70  |rash. (*PlayStop|
0004c2c0  20 6f 72 20 3c 54 72 61  63 6b 65 72 5f 53 74 6f  | or <Tracker_Sto|
0004c2d0  70 3e 29 0a 0a 4e 42 3a  20 54 68 69 73 20 63 61  |p>)..NB: This ca|
0004c2e0  6c 6c 20 77 69 6c 6c 20  6e 6f 74 20 77 6f 72 6b  |ll will not work|
0004c2f0  20 66 6f 72 20 70 72 6f  67 72 61 6d 73 20 72 75  | for programs ru|
0004c300  6e 6e 69 6e 67 20 75 6e  64 65 72 20 74 68 65 20  |nning under the |
0004c310  64 65 73 6b 74 6f 70 20  69 66 20 74 68 65 20 6d  |desktop if the m|
0004c320  6f 64 75 6c 65 20 69 73  20 6c 6f 61 64 65 64 20  |odule is loaded |
0004c330  69 6e 20 75 73 65 72 20  6d 65 6d 6f 72 79 2e 00  |in user memory..|
0004c340  44 41 54 41 a6 00 00 00  54 72 61 63 6b 65 72 5f  |DATA....Tracker_|
0004c350  50 6c 61 79 20 20 28 26  34 33 32 30 33 29 0a 23  |Play  (&43203).#|
0004c360  50 61 72 65 6e 74 20 54  72 61 63 6b 65 72 5f 0a  |Parent Tracker_.|
0004c370  54 68 69 73 20 63 61 6c  6c 20 77 69 6c 6c 20 72  |This call will r|
0004c380  65 73 74 61 72 74 20 61  20 74 75 6e 65 20 61 66  |estart a tune af|
0004c390  74 65 72 20 69 74 20 68  61 73 20 62 65 65 6e 20  |ter it has been |
0004c3a0  70 61 75 73 65 64 20 6f  72 20 6c 6f 61 64 65 64  |paused or loaded|
0004c3b0  20 77 69 74 68 20 74 68  65 20 3c 54 72 61 63 6b  | with the <Track|
0004c3c0  65 72 5f 4c 6f 61 64 3e  20 6f 72 20 3c 54 72 61  |er_Load> or <Tra|
0004c3d0  63 6b 65 72 5f 4d 65 6d  6f 72 79 4c 6f 61 64 3e  |cker_MemoryLoad>|
0004c3e0  20 53 57 49 2e 0a 00 00  44 41 54 41 d5 01 00 00  | SWI....DATA....|
0004c3f0  54 72 61 63 6b 65 72 5f  53 74 6f 70 20 20 28 26  |Tracker_Stop  (&|
0004c400  34 33 32 30 34 29 0a 23  50 61 72 65 6e 74 20 54  |43204).#Parent T|
0004c410  72 61 63 6b 65 72 5f 0a  54 68 69 73 20 70 65 72  |racker_.This per|
0004c420  66 6f 72 6d 73 20 74 68  65 20 73 61 6d 65 20 61  |forms the same a|
0004c430  63 74 69 6f 6e 73 20 61  73 20 2a 50 6c 61 79 53  |ctions as *PlayS|
0004c440  74 6f 70 2e 20 55 73 69  6e 67 20 2a 50 6c 61 79  |top. Using *Play|
0004c450  53 74 6f 70 20 6f 72 20  74 68 69 73 20 53 57 49  |Stop or this SWI|
0004c460  20 69 73 20 74 68 65 20  6f 6e 6c 79 20 77 61 79  | is the only way|
0004c470  20 74 6f 20 67 65 74 20  74 68 65 20 74 72 61 63  | to get the trac|
0004c480  6b 65 72 6d 6f 64 75 6c  65 20 74 6f 20 72 65 6c  |kermodule to rel|
0004c490  65 61 73 65 20 74 68 65  20 6d 65 6d 6f 72 79 20  |ease the memory |
0004c4a0  74 61 6b 65 6e 20 75 70  20 62 79 20 74 68 65 20  |taken up by the |
0004c4b0  74 75 6e 65 20 6d 6f 64  75 6c 65 2c 20 6f 72 20  |tune module, or |
0004c4c0  74 6f 20 66 6f 72 63 65  20 69 74 20 74 6f 20 66  |to force it to f|
0004c4d0  6f 72 67 65 74 20 74 68  65 20 61 64 64 72 65 73  |orget the addres|
0004c4e0  73 20 6f 66 20 61 20 6d  6f 64 75 6c 65 20 69 66  |s of a module if|
0004c4f0  20 69 74 20 68 61 73 20  62 65 65 6e 20 6c 6f 61  | it has been loa|
0004c500  64 65 64 20 77 69 74 68  20 3c 54 72 61 63 6b 65  |ded with <Tracke|
0004c510  72 5f 4d 65 6d 6f 72 79  4c 6f 61 64 3e 2e 20 49  |r_MemoryLoad>. I|
0004c520  66 20 74 68 65 20 6d 6f  64 75 6c 65 20 69 73 20  |f the module is |
0004c530  73 6f 75 6e 64 74 72 61  63 6b 65 72 20 61 6e 64  |soundtracker and|
0004c540  20 68 61 73 20 62 65 65  6e 20 6c 6f 61 64 65 64  | has been loaded|
0004c550  20 77 69 74 68 20 3c 54  72 61 63 6b 65 72 5f 4d  | with <Tracker_M|
0004c560  65 6d 6f 72 79 4c 6f 61  64 3e 2c 20 63 61 6c 6c  |emoryLoad>, call|
0004c570  69 6e 67 20 74 68 69 73  20 53 57 49 20 6f 72 20  |ing this SWI or |
0004c580  2a 50 6c 61 79 53 74 6f  70 20 77 69 6c 6c 20 63  |*PlayStop will c|
0004c590  6f 6e 76 65 72 74 20 74  68 65 20 64 61 74 61 20  |onvert the data |
0004c5a0  62 61 63 6b 20 74 6f 20  74 68 65 20 6f 72 69 67  |back to the orig|
0004c5b0  69 6e 61 6c 20 66 6f 72  6d 61 74 2e 0a 00 00 00  |inal format.....|
0004c5c0  44 41 54 41 5f 00 00 00  54 72 61 63 6b 65 72 5f  |DATA_...Tracker_|
0004c5d0  50 61 75 73 65 20 20 28  26 34 33 32 30 35 29 0a  |Pause  (&43205).|
0004c5e0  23 50 61 72 65 6e 74 20  54 72 61 63 6b 65 72 5f  |#Parent Tracker_|
0004c5f0  0a 54 68 69 73 20 70 65  72 66 6f 72 6d 73 20 74  |.This performs t|
0004c600  68 65 20 73 61 6d 65 20  61 63 74 69 6f 6e 73 20  |he same actions |
0004c610  61 73 20 2a 50 6c 61 79  50 61 75 73 65 2e 0a 00  |as *PlayPause...|
0004c620  44 41 54 41 b0 04 00 00  54 72 61 63 6b 65 72 5f  |DATA....Tracker_|
0004c630  53 74 65 72 65 6f 20 20  28 26 34 33 32 30 36 29  |Stereo  (&43206)|
0004c640  0a 23 50 61 72 65 6e 74  20 54 72 61 63 6b 65 72  |.#Parent Tracker|
0004c650  5f 0a 3d 3e 09 52 30 20  3d 20 53 74 65 72 65 6f  |_.=>.R0 = Stereo|
0004c660  20 73 65 74 74 69 6e 67  20 28 30 2d 34 29 20 6f  | setting (0-4) o|
0004c670  72 20 2d 31 20 74 6f 20  72 65 61 64 20 63 75 72  |r -1 to read cur|
0004c680  72 65 6e 74 20 73 65 74  74 69 6e 67 0a 0a 5c 3c  |rent setting..\<|
0004c690  3d 09 49 66 20 52 30 3e  3d 30 20 6f 6e 20 65 6e  |=.If R0>=0 on en|
0004c6a0  74 72 79 3a 0a 09 20 20  52 30 20 70 72 65 73 65  |try:..  R0 prese|
0004c6b0  72 76 65 64 0a 09 49 66  20 52 30 3d 2d 31 20 6f  |rved..If R0=-1 o|
0004c6c0  6e 20 65 6e 74 72 79 3a  0a 09 20 20 52 30 20 3d  |n entry:..  R0 =|
0004c6d0  20 63 75 72 72 65 6e 74  20 50 6c 61 79 53 74 65  | current PlaySte|
0004c6e0  72 65 6f 20 73 65 74 74  69 6e 67 0a 09 20 20 52  |reo setting..  R|
0004c6f0  31 20 3d 20 70 6f 69 6e  74 65 72 20 74 6f 20 38  |1 = pointer to 8|
0004c700  2d 62 79 74 65 20 73 74  65 72 65 6f 20 70 6f 73  |-byte stereo pos|
0004c710  69 74 69 6f 6e 20 74 61  62 6c 65 0a 0a 54 68 69  |ition table..Thi|
0004c720  73 20 70 65 72 66 6f 72  6d 73 20 74 68 65 20 73  |s performs the s|
0004c730  61 6d 65 20 61 63 74 69  6f 6e 73 20 61 73 20 2a  |ame actions as *|
0004c740  50 6c 61 79 53 74 65 72  65 6f 2c 20 77 69 74 68  |PlayStereo, with|
0004c750  20 52 30 20 70 61 73 73  65 64 20 61 73 20 61 20  | R0 passed as a |
0004c760  70 61 72 61 6d 65 74 65  72 2e 20 49 66 20 52 30  |parameter. If R0|
0004c770  20 69 73 20 73 65 74 20  74 6f 20 34 20 6f 6e 20  | is set to 4 on |
0004c780  65 6e 74 72 79 2c 20 74  68 65 6e 20 74 68 65 20  |entry, then the |
0004c790  73 74 65 72 65 6f 20 73  65 74 74 69 6e 67 73 20  |stereo settings |
0004c7a0  77 69 6c 6c 20 62 65 20  75 6e 61 6c 74 65 72 65  |will be unaltere|
0004c7b0  64 20 77 68 65 6e 65 76  65 72 20 61 20 6d 6f 64  |d whenever a mod|
0004c7c0  75 6c 65 20 69 73 20 6c  6f 61 64 65 64 20 6f 72  |ule is loaded or|
0004c7d0  20 6b 69 6c 6c 65 64 2c  20 61 6e 64 20 64 69 73  | killed, and dis|
0004c7e0  61 62 6c 65 73 20 61 6e  79 20 73 74 65 72 65 6f  |ables any stereo|
0004c7f0  20 63 6f 6d 6d 61 6e 64  73 20 69 6e 20 74 72 61  | commands in tra|
0004c800  63 6b 65 72 20 6d 6f 64  75 6c 65 73 2e 20 54 68  |cker modules. Th|
0004c810  69 73 20 69 73 20 74 6f  20 61 6c 6c 6f 77 20 69  |is is to allow i|
0004c820  6e 74 65 72 66 61 63 69  6e 67 20 70 72 6f 67 72  |nterfacing progr|
0004c830  61 6d 73 20 74 6f 20 70  72 6f 76 69 64 65 20 74  |ams to provide t|
0004c840  68 65 69 72 20 6f 77 6e  20 73 74 65 72 65 6f 20  |heir own stereo |
0004c850  6f 70 74 69 6f 6e 73 2c  20 6f 72 20 74 6f 20 61  |options, or to a|
0004c860  6c 6c 6f 77 20 61 64 6a  75 73 74 6d 65 6e 74 20  |llow adjustment |
0004c870  74 6f 20 74 68 65 20 73  74 65 72 65 6f 20 70 6f  |to the stereo po|
0004c880  73 69 74 69 6f 6e 73 20  77 68 69 6c 65 20 74 72  |sitions while tr|
0004c890  61 63 6b 65 72 20 74 75  6e 65 73 20 61 72 65 20  |acker tunes are |
0004c8a0  70 6c 61 79 69 6e 67 20  28 77 68 69 63 68 20 68  |playing (which h|
0004c8b0  61 76 65 20 64 65 66 61  75 6c 74 20 73 74 65 72  |ave default ster|
0004c8c0  65 6f 20 73 65 74 74 69  6e 67 73 20 73 74 6f 72  |eo settings stor|
0004c8d0  65 64 20 61 73 20 70 61  72 74 20 6f 66 20 74 68  |ed as part of th|
0004c8e0  65 20 74 75 6e 65 29 2e  0a 0a 41 6c 74 65 72 6e  |e tune)...Altern|
0004c8f0  61 74 69 76 65 6c 79 2c  20 69 66 20 52 30 3d 2d  |atively, if R0=-|
0004c900  31 20 6f 6e 20 65 6e 74  72 79 2c 20 52 30 20 77  |1 on entry, R0 w|
0004c910  69 6c 6c 20 62 65 20 74  68 65 20 6c 61 73 74 20  |ill be the last |
0004c920  70 61 72 61 6d 65 74 65  72 20 70 61 73 73 65 64  |parameter passed|
0004c930  20 74 6f 20 74 68 69 73  20 53 57 49 20 6f 72 20  | to this SWI or |
0004c940  74 68 65 20 2a 50 6c 61  79 53 74 65 72 65 6f 20  |the *PlayStereo |
0004c950  63 6f 6d 6d 61 6e 64 2c  20 61 6e 64 20 52 31 20  |command, and R1 |
0004c960  70 6f 69 6e 74 73 20 74  6f 20 61 6e 20 38 2d 62  |points to an 8-b|
0004c970  79 74 65 20 74 61 62 6c  65 20 28 6f 6e 65 20 62  |yte table (one b|
0004c980  79 74 65 20 70 65 72 20  63 68 61 6e 6e 65 6c 29  |yte per channel)|
0004c990  20 77 68 69 63 68 20 69  73 20 75 70 64 61 74 65  | which is update|
0004c9a0  64 20 65 76 65 72 79 20  74 69 6d 65 20 65 69 74  |d every time eit|
0004c9b0  68 65 72 20 61 20 74 75  6e 65 20 73 74 61 72 74  |her a tune start|
0004c9c0  73 3b 20 74 68 69 73 20  53 57 49 20 6f 72 20 2a  |s; this SWI or *|
0004c9d0  50 6c 61 79 53 74 65 72  65 6f 20 69 73 20 63 61  |PlayStereo is ca|
0004c9e0  6c 6c 65 64 20 77 69 74  68 20 61 20 70 61 72 61  |lled with a para|
0004c9f0  6d 65 74 65 72 20 6f 66  20 30 2d 33 3b 20 6f 72  |meter of 0-3; or|
0004ca00  20 69 66 20 61 20 73 74  65 72 65 6f 20 63 6f 6d  | if a stereo com|
0004ca10  6d 61 6e 64 20 69 73 20  65 78 65 63 75 74 65 64  |mand is executed|
0004ca20  20 69 6e 20 61 20 54 72  61 63 6b 65 72 20 74 75  | in a Tracker tu|
0004ca30  6e 65 2e 20 54 68 65 20  62 79 74 65 20 77 69 6c  |ne. The byte wil|
0004ca40  6c 20 62 65 20 69 6e 20  74 68 65 20 72 61 6e 67  |l be in the rang|
0004ca50  65 20 6f 66 20 31 2d 37  20 28 77 68 65 72 65 20  |e of 1-7 (where |
0004ca60  31 20 69 73 20 66 75 6c  6c 20 6c 65 66 74 2c 20  |1 is full left, |
0004ca70  37 20 69 73 20 66 75 6c  6c 20 72 69 67 68 74 2c  |7 is full right,|
0004ca80  20 61 6e 64 20 34 20 69  73 20 63 65 6e 74 72 65  | and 4 is centre|
0004ca90  29 2e 20 53 6f 6d 65 20  54 72 61 63 6b 65 72 20  |). Some Tracker |
0004caa0  74 75 6e 65 73 20 6d 61  79 20 63 6f 6e 74 61 69  |tunes may contai|
0004cab0  6e 20 73 74 65 72 65 6f  20 73 65 74 74 69 6e 67  |n stereo setting|
0004cac0  73 20 6f 75 74 20 6f 66  20 72 61 6e 67 65 2e 0a  |s out of range..|
0004cad0  44 41 54 41 b4 01 00 00  54 72 61 63 6b 65 72 5f  |DATA....Tracker_|
0004cae0  53 65 74 50 6f 73 20 20  28 26 34 33 32 30 37 29  |SetPos  (&43207)|
0004caf0  0a 23 50 61 72 65 6e 74  20 54 72 61 63 6b 65 72  |.#Parent Tracker|
0004cb00  5f 0a 3d 3e 09 52 30 20  3d 20 4e 65 77 20 73 65  |_.=>.R0 = New se|
0004cb10  71 75 65 6e 63 65 20 70  6f 73 69 74 69 6f 6e 20  |quence position |
0004cb20  28 30 2d 31 32 37 20 6d  61 78 29 0a 09 52 31 20  |(0-127 max)..R1 |
0004cb30  3d 20 45 76 65 6e 74 20  28 30 2d 36 33 20 6d 61  |= Event (0-63 ma|
0004cb40  78 29 0a 5c 3c 3d 09 52  30 20 70 72 65 73 65 72  |x).\<=.R0 preser|
0004cb50  76 65 64 0a 0a 54 68 69  73 20 70 65 72 66 6f 72  |ved..This perfor|
0004cb60  6d 73 20 74 68 65 20 73  61 6d 65 20 61 63 74 69  |ms the same acti|
0004cb70  6f 6e 73 20 61 73 20 2a  50 6c 61 79 50 6f 73 2c  |ons as *PlayPos,|
0004cb80  20 65 78 63 65 70 74 20  74 68 61 74 20 74 68 65  | except that the|
0004cb90  20 65 76 65 6e 74 20 77  69 74 68 20 74 68 65 20  | event with the |
0004cba0  70 61 74 74 65 72 6e 20  63 61 6e 20 62 65 20 73  |pattern can be s|
0004cbb0  70 65 63 69 66 69 65 64  20 28 30 2d 36 33 20 6e  |pecified (0-63 n|
0004cbc0  6f 72 6d 61 6c 6c 79 29  2e 20 49 66 20 61 6e 20  |ormally). If an |
0004cbd0  65 76 65 6e 74 20 6e 75  6d 62 65 72 20 68 69 67  |event number hig|
0004cbe0  68 65 72 20 74 68 61 6e  20 74 68 65 20 6e 75 6d  |her than the num|
0004cbf0  62 65 72 20 6f 66 20 65  76 65 6e 74 73 20 69 6e  |ber of events in|
0004cc00  20 74 68 65 20 63 75 72  72 65 6e 74 20 70 61 74  | the current pat|
0004cc10  74 65 72 6e 20 69 73 20  73 70 65 63 69 66 69 65  |tern is specifie|
0004cc20  64 2c 20 74 68 65 20 70  61 74 74 65 72 6e 20 77  |d, the pattern w|
0004cc30  69 6c 6c 20 62 65 67 69  6e 20 61 74 20 65 76 65  |ill begin at eve|
0004cc40  6e 74 20 30 2e 0a 0a 49  66 20 74 68 65 72 65 20  |nt 0...If there |
0004cc50  69 73 20 6e 6f 20 74 75  6e 65 20 63 75 72 72 65  |is no tune curre|
0004cc60  6e 74 6c 79 20 6c 6f 61  64 65 64 2c 20 61 6e 20  |ntly loaded, an |
0004cc70  65 72 72 6f 72 20 69 73  20 67 65 6e 65 72 61 74  |error is generat|
0004cc80  65 64 2e 0a 44 41 54 41  8f 01 00 00 54 72 61 63  |ed..DATA....Trac|
0004cc90  6b 65 72 5f 52 65 61 64  50 6f 73 20 20 28 26 34  |ker_ReadPos  (&4|
0004cca0  33 32 30 38 29 0a 23 50  61 72 65 6e 74 20 54 72  |3208).#Parent Tr|
0004ccb0  61 63 6b 65 72 5f 0a 3d  3e 09 52 30 20 3d 09 43  |acker_.=>.R0 =.C|
0004ccc0  75 72 72 65 6e 74 20 70  6f 73 69 74 69 6f 6e 20  |urrent position |
0004ccd0  69 6e 20 73 65 71 75 65  6e 63 65 20 74 61 62 6c  |in sequence tabl|
0004cce0  65 20 28 30 2d 31 32 37  20 6d 61 78 29 0a 09 52  |e (0-127 max)..R|
0004ccf0  31 20 3d 09 43 75 72 72  65 6e 74 20 70 6f 73 69  |1 =.Current posi|
0004cd00  74 69 6f 6e 20 69 6e 20  70 61 74 74 65 72 6e 20  |tion in pattern |
0004cd10  28 30 2d 36 33 20 6d 61  78 29 0a 09 52 32 20 3d  |(0-63 max)..R2 =|
0004cd20  09 4d 61 78 69 6d 75 6d  20 70 6f 73 69 74 69 6f  |.Maximum positio|
0004cd30  6e 20 69 6e 20 73 65 71  75 65 6e 63 65 20 74 61  |n in sequence ta|
0004cd40  62 6c 65 0a 0a 54 68 69  73 20 70 65 72 66 6f 72  |ble..This perfor|
0004cd50  6d 73 20 74 68 65 20 73  61 6d 65 20 61 63 74 69  |ms the same acti|
0004cd60  6f 6e 73 20 61 73 20 2a  50 6c 61 79 50 6f 73 20  |ons as *PlayPos |
0004cd70  77 69 74 68 20 6e 6f 20  70 61 72 61 6d 65 74 65  |with no paramete|
0004cd80  72 73 2c 20 62 75 74 20  61 6c 73 6f 20 72 65 74  |rs, but also ret|
0004cd90  75 72 6e 73 20 74 68 65  20 63 75 72 72 65 6e 74  |urns the current|
0004cda0  20 70 6f 73 69 74 69 6f  6e 20 69 6e 20 74 68 65  | position in the|
0004cdb0  20 63 75 72 72 65 6e 74  20 70 61 74 74 65 72 6e  | current pattern|
0004cdc0  20 28 69 6e 20 63 61 73  65 20 73 6f 6d 65 20 61  | (in case some a|
0004cdd0  70 70 6c 69 63 61 74 69  6f 6e 73 20 6e 65 65 64  |pplications need|
0004cde0  20 74 6f 20 73 79 6e 63  68 72 6f 6e 69 7a 65 20  | to synchronize |
0004cdf0  65 76 65 6e 74 73 20 77  69 74 68 20 74 68 65 20  |events with the |
0004ce00  74 75 6e 65 20 62 65 69  6e 67 20 70 6c 61 79 65  |tune being playe|
0004ce10  64 29 2e 00 44 41 54 41  bd 03 00 00 54 72 61 63  |d)..DATA....Trac|
0004ce20  6b 65 72 5f 50 6c 61 79  4e 6f 74 65 20 20 28 26  |ker_PlayNote  (&|
0004ce30  34 33 32 30 39 29 0a 23  50 61 72 65 6e 74 20 54  |43209).#Parent T|
0004ce40  72 61 63 6b 65 72 5f 0a  3d 3e 09 52 30 20 3d 09  |racker_.=>.R0 =.|
0004ce50  53 6f 75 6e 64 20 63 68  61 6e 6e 65 6c 20 74 6f  |Sound channel to|
0004ce60  20 73 6f 75 6e 64 20 6e  6f 74 65 20 6f 6e 20 28  | sound note on (|
0004ce70  31 2d 38 20 6d 61 78 29  0a 09 52 31 20 3d 09 54  |1-8 max)..R1 =.T|
0004ce80  72 61 63 6b 65 72 20 66  6f 72 6d 61 74 20 6e 6f  |racker format no|
0004ce90  74 65 20 6e 75 6d 62 65  72 20 28 31 2d 33 36 29  |te number (1-36)|
0004cea0  0a 09 52 32 20 3d 09 53  61 6d 70 6c 65 20 74 6f  |..R2 =.Sample to|
0004ceb0  20 70 6c 61 79 20 28 31  2d 33 36 29 0a 09 52 33  | play (1-36)..R3|
0004cec0  20 3d 09 56 6f 6c 75 6d  65 20 28 30 2d 32 35 35  | =.Volume (0-255|
0004ced0  29 20 5b 54 72 61 63 6b  65 72 20 76 6f 6c 75 6d  |) [Tracker volum|
0004cee0  65 20 65 76 65 6e 20 69  66 20 73 6f 75 6e 64 74  |e even if soundt|
0004cef0  72 61 63 6b 65 72 20 74  75 6e 65 20 6c 6f 61 64  |racker tune load|
0004cf00  65 64 5d 2e 0a 5c 3c 3d  09 52 30 2d 52 33 20 70  |ed]..\<=.R0-R3 p|
0004cf10  72 65 73 65 72 76 65 64  0a 09 49 66 20 74 75 6e  |reserved..If tun|
0004cf20  65 20 6e 6f 74 20 70 61  75 73 65 64 20 74 68 65  |e not paused the|
0004cf30  6e 20 43 20 66 6c 61 67  20 73 65 74 20 6f 74 68  |n C flag set oth|
0004cf40  65 72 77 69 73 65 20 43  20 66 6c 61 67 20 63 6c  |erwise C flag cl|
0004cf50  65 61 72 65 64 2e 0a 0a  49 66 20 74 68 65 72 65  |eared...If there|
0004cf60  20 69 73 20 6e 6f 20 74  75 6e 65 20 6c 6f 61 64  | is no tune load|
0004cf70  65 64 2c 20 61 6e 20 65  72 72 6f 72 20 77 69 6c  |ed, an error wil|
0004cf80  6c 20 62 65 20 67 65 6e  65 72 61 74 65 64 2e 0a  |l be generated..|
0004cf90  0a 49 74 20 70 6c 61 79  73 20 6f 6e 65 20 6f 66  |.It plays one of|
0004cfa0  20 74 68 65 20 73 61 6d  70 6c 65 73 20 77 68 69  | the samples whi|
0004cfb0  63 68 20 61 72 65 20 70  61 72 74 20 6f 66 20 74  |ch are part of t|
0004cfc0  68 65 20 70 61 75 73 65  64 20 74 75 6e 65 20 61  |he paused tune a|
0004cfd0  74 20 61 20 67 69 76 65  6e 20 70 69 74 63 68 20  |t a given pitch |
0004cfe0  28 31 3d 6c 6f 77 2c 20  33 36 3d 68 69 67 68 29  |(1=low, 36=high)|
0004cff0  20 61 6e 64 20 76 6f 6c  75 6d 65 20 28 30 3d 73  | and volume (0=s|
0004d000  69 6c 65 6e 74 2c 20 32  35 35 3d 6c 6f 75 64 29  |ilent, 255=loud)|
0004d010  2e 20 49 66 20 61 6e 79  20 6f 66 20 74 68 65 20  |. If any of the |
0004d020  76 61 6c 75 65 73 20 61  72 65 20 6f 75 74 20 6f  |values are out o|
0004d030  66 20 72 61 6e 67 65 2c  20 61 6e 20 65 72 72 6f  |f range, an erro|
0004d040  72 20 77 69 6c 6c 20 62  65 20 72 65 70 6f 72 74  |r will be report|
0004d050  65 64 2e 0a 54 68 65 20  6e 75 6d 62 65 72 20 6f  |ed..The number o|
0004d060  66 20 73 6f 75 6e 64 20  63 68 61 6e 6e 65 6c 73  |f sound channels|
0004d070  20 74 68 61 74 20 63 61  6e 20 62 65 20 75 73 65  | that can be use|
0004d080  64 20 64 65 70 65 6e 64  73 20 6f 6e 20 74 68 65  |d depends on the|
0004d090  20 6d 6f 64 75 6c 65 20  6c 6f 61 64 65 64 20 28  | module loaded (|
0004d0a0  73 6f 75 6e 64 74 72 61  63 6b 65 72 20 6d 6f 64  |soundtracker mod|
0004d0b0  75 6c 65 73 20 77 69 6c  6c 20 61 6c 77 61 79 73  |ules will always|
0004d0c0  20 75 73 65 20 34 20 76  6f 69 63 65 73 2c 20 77  | use 4 voices, w|
0004d0d0  68 65 72 65 61 73 20 54  72 61 63 6b 65 72 20 6d  |hereas Tracker m|
0004d0e0  6f 64 75 6c 65 73 20 63  61 6e 20 75 73 65 20 75  |odules can use u|
0004d0f0  70 20 74 6f 20 38 29 2e  20 55 73 65 20 3c 54 72  |p to 8). Use <Tr|
0004d100  61 63 6b 65 72 5f 54 75  6e 65 49 6e 66 6f 3e 20  |acker_TuneInfo> |
0004d110  74 6f 20 66 69 6e 64 20  6f 75 74 20 74 68 65 20  |to find out the |
0004d120  6d 61 78 69 6d 75 6d 20  6e 75 6d 62 65 72 20 6f  |maximum number o|
0004d130  66 20 76 6f 69 63 65 73  20 69 66 20 79 6f 75 20  |f voices if you |
0004d140  69 6e 74 65 6e 64 20 74  6f 20 70 6c 61 79 20 6d  |intend to play m|
0004d150  6f 72 65 20 74 68 61 6e  20 6f 6e 65 20 6e 6f 74  |ore than one not|
0004d160  65 20 61 74 20 61 20 74  69 6d 65 2e 0a 0a 4e 42  |e at a time...NB|
0004d170  3a 20 54 68 69 73 20 63  61 6c 6c 20 73 68 6f 75  |: This call shou|
0004d180  6c 64 20 62 65 20 61 76  6f 69 64 65 64 20 69 66  |ld be avoided if|
0004d190  20 70 6f 73 73 69 62 6c  65 2c 20 75 6e 6c 65 73  | possible, unles|
0004d1a0  73 20 74 68 65 20 70 75  72 70 6f 73 65 20 69 73  |s the purpose is|
0004d1b0  20 74 6f 20 68 65 61 72  20 65 61 63 68 20 73 61  | to hear each sa|
0004d1c0  6d 70 6c 65 20 73 65 70  65 72 61 74 65 6c 79 2e  |mple seperately.|
0004d1d0  0a 00 00 00 44 41 54 41  45 04 00 00 54 72 61 63  |....DATAE...Trac|
0004d1e0  6b 65 72 5f 54 75 6e 65  49 6e 66 6f 20 20 28 26  |ker_TuneInfo  (&|
0004d1f0  34 33 32 30 41 29 0a 23  50 61 72 65 6e 74 20 54  |4320A).#Parent T|
0004d200  72 61 63 6b 65 72 5f 0a  5c 3c 3d 09 52 30 20 3d  |racker_.\<=.R0 =|
0004d210  09 53 65 71 75 65 6e 63  65 20 74 61 62 6c 65 20  |.Sequence table |
0004d220  6c 65 6e 67 74 68 20 28  31 2d 31 32 38 29 0a 09  |length (1-128)..|
0004d230  52 31 20 3d 09 4e 75 6d  62 65 72 20 6f 66 20 76  |R1 =.Number of v|
0004d240  6f 69 63 65 73 20 28 31  2d 38 29 0a 09 52 32 20  |oices (1-8)..R2 |
0004d250  3d 09 43 75 72 72 65 6e  74 20 73 70 65 65 64 20  |=.Current speed |
0004d260  28 31 2d 31 35 29 0a 09  52 33 20 3d 09 50 6f 69  |(1-15)..R3 =.Poi|
0004d270  6e 74 65 72 20 74 6f 20  74 75 6e 65 20 6e 61 6d  |nter to tune nam|
0004d280  65 20 28 74 65 72 6d 69  6e 61 74 65 64 20 62 79  |e (terminated by|
0004d290  20 30 2c 20 6d 61 78 20  6c 65 6e 67 74 68 20 33  | 0, max length 3|
0004d2a0  32 20 63 68 61 72 73 29  0a 09 52 34 20 3d 09 50  |2 chars)..R4 =.P|
0004d2b0  6f 69 6e 74 65 72 20 74  6f 20 61 75 74 68 6f 72  |ointer to author|
0004d2c0  27 73 20 6e 61 6d 65 20  28 30 20 74 65 72 6d 69  |'s name (0 termi|
0004d2d0  6e 61 74 65 64 2c 20 6d  61 78 20 6c 65 6e 67 74  |nated, max lengt|
0004d2e0  68 20 33 32 20 63 68 61  72 73 29 20 6f 72 20 7a  |h 32 chars) or z|
0004d2f0  65 72 6f 20 69 66 20 73  6f 75 6e 64 74 72 61 63  |ero if soundtrac|
0004d300  6b 65 72 20 66 6f 72 6d  61 74 20 6d 6f 64 75 6c  |ker format modul|
0004d310  65 20 28 6e 6f 74 20 61  70 70 6c 69 63 61 62 6c  |e (not applicabl|
0004d320  65 29 0a 09 52 35 20 3d  09 41 64 64 72 65 73 73  |e)..R5 =.Address|
0004d330  20 6f 66 20 63 75 72 72  65 6e 74 6c 79 20 6c 6f  | of currently lo|
0004d340  61 64 65 64 20 74 75 6e  65 20 6d 6f 64 75 6c 65  |aded tune module|
0004d350  0a 20 20 20 20 20 20 20  20 20 20 20 0a 49 66 20  |.           .If |
0004d360  74 68 65 20 74 75 6e 65  20 69 73 20 70 61 75 73  |the tune is paus|
0004d370  65 64 2c 20 74 68 65 20  43 20 66 6c 61 67 20 69  |ed, the C flag i|
0004d380  73 20 73 65 74 2c 20 6f  74 68 65 72 77 69 73 65  |s set, otherwise|
0004d390  20 74 68 65 20 43 20 66  6c 61 67 20 69 73 20 63  | the C flag is c|
0004d3a0  6c 65 61 72 65 64 2e 20  49 66 20 74 68 65 72 65  |leared. If there|
0004d3b0  20 69 73 20 6e 6f 20 74  75 6e 65 20 6c 6f 61 64  | is no tune load|
0004d3c0  65 64 2c 20 52 30 20 69  73 20 73 65 74 20 74 6f  |ed, R0 is set to|
0004d3d0  20 7a 65 72 6f 2c 20 61  6e 64 20 52 31 2d 52 35  | zero, and R1-R5|
0004d3e0  20 61 72 65 20 70 72 65  73 65 72 76 65 64 2e 0a  | are preserved..|
0004d3f0  0a 54 68 69 73 20 63 61  6c 6c 20 70 72 6f 76 69  |.This call provi|
0004d400  64 65 73 20 6d 69 73 63  65 6c 6c 61 6e 65 6f 75  |des miscellaneou|
0004d410  73 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 61 62  |s information ab|
0004d420  6f 75 74 20 74 68 65 20  74 75 6e 65 20 63 75 72  |out the tune cur|
0004d430  72 65 6e 74 6c 79 20 6c  6f 61 64 65 64 2e 0a 0a  |rently loaded...|
0004d440  59 6f 75 20 73 68 6f 75  6c 64 20 6e 6f 74 20 6e  |You should not n|
0004d450  65 65 64 20 74 6f 20 64  69 72 65 63 74 6c 79 20  |eed to directly |
0004d460  61 63 63 65 73 73 20 74  68 65 20 74 75 6e 65 20  |access the tune |
0004d470  6d 6f 64 75 6c 65 20 28  75 73 69 6e 67 20 74 68  |module (using th|
0004d480  65 20 61 64 64 72 65 73  73 20 70 61 73 73 65 64  |e address passed|
0004d490  20 69 6e 20 52 35 29 2c  20 62 65 63 61 75 73 65  | in R5), because|
0004d4a0  20 61 6c 6c 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  | all information|
0004d4b0  20 69 73 20 61 76 61 69  6c 61 62 6c 65 20 76 69  | is available vi|
0004d4c0  61 20 74 68 65 20 76 61  72 69 6f 75 73 20 53 57  |a the various SW|
0004d4d0  49 27 73 2c 20 61 6e 64  20 73 6f 75 6e 64 74 72  |I's, and soundtr|
0004d4e0  61 63 6b 65 72 20 66 6f  72 6d 61 74 20 6d 6f 64  |acker format mod|
0004d4f0  75 6c 65 73 20 77 69 6c  6c 20 68 61 76 65 20 62  |ules will have b|
0004d500  65 65 6e 20 63 6f 6e 76  65 72 74 65 64 20 70 61  |een converted pa|
0004d510  72 74 69 61 6c 6c 79 20  74 6f 20 54 72 61 63 6b  |rtially to Track|
0004d520  65 72 20 66 6f 72 6d 61  74 20 77 68 65 6e 20 6c  |er format when l|
0004d530  6f 61 64 65 64 20 28 61  6e 64 20 74 68 65 72 65  |oaded (and there|
0004d540  66 6f 72 65 20 69 6e 20  61 6e 20 75 6e 6b 6e 6f  |fore in an unkno|
0004d550  77 6e 20 66 6f 72 6d 61  74 29 2e 20 54 68 69 73  |wn format). This|
0004d560  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 69 73 20  | information is |
0004d570  70 72 6f 76 69 64 65 64  20 69 66 2c 20 66 6f 72  |provided if, for|
0004d580  20 65 78 61 6d 70 6c 65  2c 20 6d 75 6c 74 69 2d  | example, multi-|
0004d590  74 61 73 6b 69 6e 67 20  70 6c 61 79 65 72 73 2f  |tasking players/|
0004d5a0  65 64 69 74 6f 72 73 20  6e 65 65 64 20 74 6f 20  |editors need to |
0004d5b0  6b 6e 6f 77 20 69 66 20  74 68 65 20 74 75 6e 65  |know if the tune|
0004d5c0  20 63 75 72 72 65 6e 74  6c 79 20 70 6c 61 79 69  | currently playi|
0004d5d0  6e 67 20 69 73 20 72 75  6e 6e 69 6e 67 20 66 72  |ng is running fr|
0004d5e0  6f 6d 20 6f 72 64 69 6e  61 72 79 20 52 4d 41 2c  |om ordinary RMA,|
0004d5f0  20 6f 72 20 74 68 65 20  70 6c 61 79 65 72 27 73  | or the player's|
0004d600  2f 65 64 69 74 6f 72 27  73 20 6f 77 6e 20 77 6f  |/editor's own wo|
0004d610  72 6b 73 70 61 63 65 2e  0a 00 00 00 44 41 54 41  |rkspace.....DATA|
0004d620  3c 04 00 00 54 72 61 63  6b 65 72 5f 53 6f 75 6e  |<...Tracker_Soun|
0004d630  64 49 6e 66 6f 20 20 28  26 34 33 32 30 42 29 0a  |dInfo  (&4320B).|
0004d640  23 50 61 72 65 6e 74 20  54 72 61 63 6b 65 72 5f  |#Parent Tracker_|
0004d650  0a 3d 3e 09 52 30 20 3d  09 50 6f 69 6e 74 65 72  |.=>.R0 =.Pointer|
0004d660  20 74 6f 20 77 6f 72 64  2d 61 6c 69 67 6e 65 64  | to word-aligned|
0004d670  20 32 35 36 20 62 79 74  65 20 62 6c 6f 63 6b 20  | 256 byte block |
0004d680  74 6f 20 68 6f 6c 64 20  3c 73 6f 75 6e 64 20 64  |to hold <sound d|
0004d690  61 74 61 3d 3e 54 72 61  63 6b 65 72 5f 53 6f 75  |ata=>Tracker_Sou|
0004d6a0  6e 64 62 6c 6f 63 6b 3e  0a 5c 3c 3d 09 52 30 20  |ndblock>.\<=.R0 |
0004d6b0  70 72 65 73 65 72 76 65  64 0a 0a 09 49 66 20 74  |preserved...If t|
0004d6c0  68 65 20 74 75 6e 65 20  69 73 20 70 61 75 73 65  |he tune is pause|
0004d6d0  64 2c 20 74 68 65 20 43  20 66 6c 61 67 20 77 69  |d, the C flag wi|
0004d6e0  6c 6c 20 62 65 20 73 65  74 2c 20 6f 74 68 65 72  |ll be set, other|
0004d6f0  77 69 73 65 20 74 68 65  20 43 20 66 6c 61 67 20  |wise the C flag |
0004d700  77 69 6c 6c 20 62 65 20  63 6c 65 61 72 65 64 2e  |will be cleared.|
0004d710  0a 0a 49 66 20 74 68 65  72 65 20 69 73 20 6e 6f  |..If there is no|
0004d720  20 74 75 6e 65 20 6c 6f  61 64 65 64 20 61 6e 20  | tune loaded an |
0004d730  65 72 72 6f 72 20 77 69  6c 6c 20 62 65 20 67 65  |error will be ge|
0004d740  6e 65 72 61 74 65 64 2e  0a 0a 54 68 69 73 20 63  |nerated...This c|
0004d750  61 6c 6c 20 69 73 20 6f  6e 6c 79 20 70 72 6f 76  |all is only prov|
0004d760  69 64 65 64 20 66 6f 72  20 61 64 76 61 6e 63 65  |ided for advance|
0004d770  64 20 75 73 65 73 20 6f  66 20 74 68 65 20 74 72  |d uses of the tr|
0004d780  61 63 6b 65 72 6d 6f 64  75 6c 65 2c 20 61 6e 64  |ackermodule, and|
0004d790  20 69 6e 76 6f 6c 76 65  73 20 69 6e 66 6f 72 6d  | involves inform|
0004d7a0  61 74 69 6f 6e 20 6f 66  20 61 20 68 69 67 68 6c  |ation of a highl|
0004d7b0  79 20 74 65 63 68 6e 69  63 61 6c 20 6e 61 74 75  |y technical natu|
0004d7c0  72 65 2e 20 49 74 20 69  73 20 61 64 76 69 73 65  |re. It is advise|
0004d7d0  64 20 74 68 61 74 20 79  6f 75 20 64 6f 20 6e 6f  |d that you do no|
0004d7e0  74 20 75 73 65 20 74 68  69 73 20 63 61 6c 6c 20  |t use this call |
0004d7f0  69 66 20 79 6f 75 20 63  61 6e 20 61 76 6f 69 64  |if you can avoid|
0004d800  20 69 74 2e 0a 0a 54 68  65 20 63 61 6c 6c 20 77  | it...The call w|
0004d810  69 6c 6c 20 74 72 61 6e  73 66 65 72 20 74 68 65  |ill transfer the|
0004d820  20 63 75 72 72 65 6e 74  20 63 6f 6e 74 65 6e 74  | current content|
0004d830  73 20 6f 66 20 74 68 65  20 73 6f 75 6e 64 20 76  |s of the sound v|
0004d840  6f 69 63 65 20 69 6e 66  6f 20 74 61 62 6c 65 20  |oice info table |
0004d850  74 6f 20 74 68 65 20 6c  6f 63 61 74 69 6f 6e 20  |to the location |
0004d860  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 52 30  |pointed to by R0|
0004d870  2e 20 32 35 36 20 62 79  74 65 73 20 28 36 34 20  |. 256 bytes (64 |
0004d880  77 6f 72 64 73 29 20 77  69 6c 6c 20 62 65 20 74  |words) will be t|
0004d890  72 61 6e 73 66 65 72 72  65 64 20 69 6e 20 74 6f  |ransferred in to|
0004d8a0  74 61 6c 20 28 38 20 77  6f 72 64 73 20 70 65 72  |tal (8 words per|
0004d8b0  20 73 6f 75 6e 64 20 63  68 61 6e 6e 65 6c 29 2c  | sound channel),|
0004d8c0  20 72 65 67 61 72 64 6c  65 73 73 20 6f 66 20 74  | regardless of t|
0004d8d0  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 76 6f 69  |he number of voi|
0004d8e0  63 65 73 20 61 63 74 75  61 6c 6c 79 20 61 63 74  |ces actually act|
0004d8f0  69 76 65 2e 0a 0a 57 68  65 6e 20 61 20 6e 6f 74  |ive...When a not|
0004d900  65 20 69 73 20 70 6c 61  79 65 64 20 61 6e 64 20  |e is played and |
0004d910  74 68 65 6e 20 65 6e 64  73 2c 20 77 6f 72 64 20  |then ends, word |
0004d920  36 20 6f 66 20 74 68 65  20 61 70 70 72 6f 70 72  |6 of the appropr|
0004d930  69 61 74 65 20 63 68 61  6e 6e 65 6c 20 69 73 20  |iate channel is |
0004d940  7a 65 72 6f 65 64 2e 20  54 68 65 20 73 6f 75 6e  |zeroed. The soun|
0004d950  64 20 72 6f 75 74 69 6e  65 73 20 77 69 6c 6c 20  |d routines will |
0004d960  6f 6e 6c 79 20 74 72 79  20 61 6e 64 20 70 6c 61  |only try and pla|
0004d970  79 20 74 68 65 20 73 61  6d 70 6c 65 20 69 66 20  |y the sample if |
0004d980  74 68 69 73 20 77 6f 72  64 20 69 73 20 6e 6f 6e  |this word is non|
0004d990  2d 7a 65 72 6f 2e 0a 0a  57 68 65 6e 20 61 20 74  |-zero...When a t|
0004d9a0  75 6e 65 20 69 73 20 70  61 75 73 65 64 2c 20 74  |une is paused, t|
0004d9b0  68 65 20 62 6c 6f 63 6b  20 69 73 20 73 61 76 65  |he block is save|
0004d9c0  64 20 61 6e 64 20 6f 76  65 72 77 72 69 74 74 65  |d and overwritte|
0004d9d0  6e 20 77 69 74 68 20 7a  65 72 6f 73 2e 20 57 68  |n with zeros. Wh|
0004d9e0  65 6e 20 74 68 65 20 74  75 6e 65 20 69 73 20 72  |en the tune is r|
0004d9f0  65 73 74 61 72 74 65 64  2c 20 74 68 65 20 6f 6c  |estarted, the ol|
0004da00  64 20 63 6f 6e 74 65 6e  74 73 20 61 72 65 20 72  |d contents are r|
0004da10  65 73 74 6f 72 65 64 2c  20 73 6f 20 74 68 61 74  |estored, so that|
0004da20  20 74 68 65 20 73 61 6d  70 6c 65 73 20 77 69 6c  | the samples wil|
0004da30  6c 20 63 6f 6e 74 69 6e  75 65 20 74 6f 20 70 6c  |l continue to pl|
0004da40  61 79 20 66 72 6f 6d 20  74 68 65 20 73 61 6d 65  |ay from the same|
0004da50  20 70 6f 69 6e 74 2e 0a  44 41 54 41 aa 02 00 00  | point..DATA....|
0004da60  54 72 61 63 6b 65 72 5f  52 65 61 64 53 61 6d 70  |Tracker_ReadSamp|
0004da70  6c 65 54 61 62 6c 65 20  20 28 26 34 33 32 30 43  |leTable  (&4320C|
0004da80  29 0a 23 50 61 72 65 6e  74 20 54 72 61 63 6b 65  |).#Parent Tracke|
0004da90  72 5f 0a 3d 3e 09 52 30  20 3d 09 53 61 6d 70 6c  |r_.=>.R0 =.Sampl|
0004daa0  65 20 6e 75 6d 62 65 72  20 28 31 2d 33 36 29 0a  |e number (1-36).|
0004dab0  5c 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |\<=.R0 preserved|
0004dac0  0a 09 52 31 20 3d 09 50  6f 69 6e 74 65 72 20 74  |..R1 =.Pointer t|
0004dad0  6f 20 73 61 6d 70 6c 65  20 6e 61 6d 65 20 28 30  |o sample name (0|
0004dae0  2d 74 65 72 6d 69 6e 61  74 65 64 2c 20 6d 61 78  |-terminated, max|
0004daf0  20 6c 65 6e 67 74 68 20  32 32 20 63 68 61 72 73  | length 22 chars|
0004db00  29 20 0a 09 52 32 20 3d  09 53 61 6d 70 6c 65 20  |) ..R2 =.Sample |
0004db10  76 6f 6c 75 6d 65 20 28  30 2d 32 35 35 2c 20 32  |volume (0-255, 2|
0004db20  35 35 3d 6d 61 78 69 6d  75 6d 20 76 6f 6c 75 6d  |55=maximum volum|
0004db30  65 2c 20 30 3d 73 69 6c  65 6e 74 29 20 28 6f 72  |e, 0=silent) (or|
0004db40  20 66 6f 72 20 73 6f 75  6e 64 20 74 72 61 63 6b  | for sound track|
0004db50  65 72 20 30 2d 36 34 2c  20 36 34 3d 6d 61 78 20  |er 0-64, 64=max |
0004db60  76 6f 6c 2e 29 20 0a 09  52 33 20 3d 09 53 61 6d  |vol.) ..R3 =.Sam|
0004db70  70 6c 65 20 6c 65 6e 67  74 68 20 28 62 79 74 65  |ple length (byte|
0004db80  73 29 0a 09 52 34 20 3d  09 52 65 70 65 61 74 20  |s)..R4 =.Repeat |
0004db90  6f 66 66 73 65 74 20 28  62 79 74 65 73 29 0a 09  |offset (bytes)..|
0004dba0  52 35 20 3d 09 52 65 70  65 61 74 20 6c 65 6e 67  |R5 =.Repeat leng|
0004dbb0  74 68 20 28 62 79 74 65  73 29 0a 09 52 36 20 3d  |th (bytes)..R6 =|
0004dbc0  09 41 64 64 72 65 73 73  20 6f 66 20 72 61 77 20  |.Address of raw |
0004dbd0  73 61 6d 70 6c 65 20 64  61 74 61 0a 0a 54 68 69  |sample data..Thi|
0004dbe0  73 20 63 61 6c 6c 20 72  65 74 75 72 6e 73 20 61  |s call returns a|
0004dbf0  6c 6c 20 72 65 6c 65 76  61 6e 74 20 69 6e 66 6f  |ll relevant info|
0004dc00  72 6d 61 74 69 6f 6e 20  61 62 6f 75 74 20 74 68  |rmation about th|
0004dc10  65 20 73 70 65 63 69 66  69 65 64 20 73 61 6d 70  |e specified samp|
0004dc20  6c 65 2e 20 0a 0a 49 66  20 74 68 65 72 65 20 69  |le. ..If there i|
0004dc30  73 20 6e 6f 20 74 75 6e  65 20 6c 6f 61 64 65 64  |s no tune loaded|
0004dc40  2c 20 61 6e 20 65 72 72  6f 72 20 77 69 6c 6c 20  |, an error will |
0004dc50  62 65 20 67 65 6e 65 72  61 74 65 64 2e 0a 0a 49  |be generated...I|
0004dc60  66 20 74 68 65 20 73 61  6d 70 6c 65 20 6e 75 6d  |f the sample num|
0004dc70  62 65 72 20 69 73 20 6f  75 74 20 6f 66 20 72 61  |ber is out of ra|
0004dc80  6e 67 65 20 28 66 6f 72  20 65 78 61 6d 70 6c 65  |nge (for example|
0004dc90  2c 20 69 66 20 72 65 61  64 69 6e 67 20 73 61 6d  |, if reading sam|
0004dca0  70 6c 65 20 31 36 20 6f  6e 20 61 20 31 35 2d 69  |ple 16 on a 15-i|
0004dcb0  6e 73 74 72 75 6d 65 6e  74 20 6d 6f 64 75 6c 65  |nstrument module|
0004dcc0  29 2c 20 52 31 20 61 6e  64 20 52 36 20 77 69 6c  |), R1 and R6 wil|
0004dcd0  6c 20 70 6f 69 6e 74 20  74 6f 20 61 20 7a 65 72  |l point to a zer|
0004dce0  6f 2c 20 61 6e 64 20 52  32 2d 52 35 20 77 69 6c  |o, and R2-R5 wil|
0004dcf0  6c 20 63 6f 6e 74 61 69  6e 20 61 20 7a 65 72 6f  |l contain a zero|
0004dd00  2e 0a 00 00 44 41 54 41  63 05 00 00 54 72 61 63  |....DATAc...Trac|
0004dd10  6b 65 72 5f 57 72 69 74  65 53 61 6d 70 6c 65 54  |ker_WriteSampleT|
0004dd20  61 62 6c 65 20 20 28 26  34 33 32 31 33 29 0a 23  |able  (&43213).#|
0004dd30  50 61 72 65 6e 74 20 54  72 61 63 6b 65 72 5f 0a  |Parent Tracker_.|
0004dd40  3d 3e 09 52 30 20 3d 09  53 61 6d 70 6c 65 20 6e  |=>.R0 =.Sample n|
0004dd50  75 6d 62 65 72 20 28 31  2d 33 36 29 0a 09 52 31  |umber (1-36)..R1|
0004dd60  20 3d 09 4e 65 77 20 73  61 6d 70 6c 65 20 76 6f  | =.New sample vo|
0004dd70  6c 75 6d 65 20 28 30 2d  32 35 35 2f 30 2d 36 34  |lume (0-255/0-64|
0004dd80  29 20 6f 72 20 2d 31 20  74 6f 20 6c 65 61 76 65  |) or -1 to leave|
0004dd90  20 75 6e 63 68 61 6e 67  65 64 2e 0a 09 52 32 20  | unchanged...R2 |
0004dda0  3d 09 52 65 70 65 61 74  20 6f 66 66 73 65 74 20  |=.Repeat offset |
0004ddb0  28 62 79 74 65 73 29 20  6f 72 20 2d 31 20 74 6f  |(bytes) or -1 to|
0004ddc0  20 6c 65 61 76 65 20 75  6e 63 68 61 6e 67 65 64  | leave unchanged|
0004ddd0  2e 0a 09 52 33 20 3d 09  52 65 70 65 61 74 20 6c  |...R3 =.Repeat l|
0004dde0  65 6e 67 74 68 20 28 62  79 74 65 73 29 20 6f 72  |ength (bytes) or|
0004ddf0  20 2d 31 20 74 6f 20 6c  65 61 76 65 20 75 6e 63  | -1 to leave unc|
0004de00  68 61 6e 67 65 64 2e 0a  0a 59 6f 75 20 73 68 6f  |hanged...You sho|
0004de10  75 6c 64 20 75 73 65 20  74 68 69 73 20 53 57 49  |uld use this SWI|
0004de20  20 69 66 20 79 6f 75 20  77 69 73 68 20 74 6f 20  | if you wish to |
0004de30  61 6c 74 65 72 20 74 68  65 20 73 61 6d 70 6c 65  |alter the sample|
0004de40  20 64 61 74 61 20 77 69  74 68 6f 75 74 20 6e 65  | data without ne|
0004de50  65 64 69 6e 67 20 74 6f  20 6b 6e 6f 77 20 74 68  |eding to know th|
0004de60  65 20 72 65 6c 65 76 61  6e 74 20 6d 6f 64 75 6c  |e relevant modul|
0004de70  65 20 66 6f 72 6d 61 74  2e 20 53 61 6d 70 6c 65  |e format. Sample|
0004de80  20 6c 65 6e 67 74 68 20  69 73 20 6e 6f 74 20 61  | length is not a|
0004de90  6c 74 65 72 61 62 6c 65  2c 20 62 65 63 61 75 73  |lterable, becaus|
0004dea0  65 20 74 68 65 20 6f 63  63 61 73 69 6f 6e 73 20  |e the occasions |
0004deb0  77 68 65 6e 20 74 68 69  73 20 69 73 20 6e 65 63  |when this is nec|
0004dec0  65 73 73 61 72 79 20 28  65 67 2e 20 6c 6f 61 64  |essary (eg. load|
0004ded0  69 6e 67 20 6e 65 77 20  73 61 6d 70 6c 65 20 69  |ing new sample i|
0004dee0  6e 29 20 6e 65 65 64 20  64 69 72 65 63 74 20 6d  |n) need direct m|
0004def0  61 6e 69 70 75 6c 61 74  69 6f 6e 20 6f 66 20 74  |anipulation of t|
0004df00  68 65 20 6d 6f 64 75 6c  65 20 69 6e 20 6d 65 6d  |he module in mem|
0004df10  6f 72 79 20 61 6e 79 77  61 79 2c 20 61 6e 64 20  |ory anyway, and |
0004df20  70 72 6f 62 6c 65 6d 73  20 6f 63 63 75 72 20 77  |problems occur w|
0004df30  68 65 6e 20 74 68 65 20  73 61 6d 70 6c 65 20 6c  |hen the sample l|
0004df40  65 6e 67 74 68 20 69 73  20 73 65 74 20 61 62 6f  |ength is set abo|
0004df50  76 65 20 74 68 65 20 61  63 74 75 61 6c 20 6c 65  |ve the actual le|
0004df60  6e 67 74 68 2e 0a 0a 56  65 72 73 69 6f 6e 73 20  |ngth...Versions |
0004df70  62 65 74 77 65 65 6e 20  33 2e 30 30 20 61 6e 64  |between 3.00 and|
0004df80  20 34 2e 30 35 20 63 6f  70 69 65 64 20 74 68 65  | 4.05 copied the|
0004df90  20 73 61 6d 70 6c 65 20  69 6e 66 6f 72 6d 61 74  | sample informat|
0004dfa0  69 6f 6e 20 69 6e 74 6f  20 61 20 6d 6f 72 65 20  |ion into a more |
0004dfb0  63 6f 6e 76 65 6e 69 65  6e 74 20 66 6f 72 6d 61  |convenient forma|
0004dfc0  74 20 77 68 65 6e 20 74  68 65 20 6d 6f 64 75 6c  |t when the modul|
0004dfd0  65 20 77 61 73 20 69 6e  69 74 69 61 6c 69 73 65  |e was initialise|
0004dfe0  64 2c 20 61 6e 64 20 73  6f 20 61 6c 74 65 72 69  |d, and so alteri|
0004dff0  6e 67 20 74 68 65 20 64  61 74 61 20 64 69 72 65  |ng the data dire|
0004e000  63 74 6c 79 20 77 6f 75  6c 64 20 68 61 76 65 20  |ctly would have |
0004e010  68 61 64 20 6e 6f 20 65  66 66 65 63 74 20 28 63  |had no effect (c|
0004e020  61 75 73 69 6e 67 20 70  72 6f 62 6c 65 6d 73 20  |ausing problems |
0004e030  66 6f 72 20 65 64 69 74  6f 72 73 20 77 68 69 63  |for editors whic|
0004e040  68 20 6e 65 65 64 65 64  20 74 6f 20 64 6f 20 74  |h needed to do t|
0004e050  68 69 73 2e 2e 29 2e 0a  0a 53 68 6f 75 6c 64 20  |his..)...Should |
0004e060  79 6f 75 20 77 69 73 68  20 74 6f 20 61 6c 74 65  |you wish to alte|
0004e070  72 20 61 6e 79 20 6f 74  68 65 72 20 61 73 70 65  |r any other aspe|
0004e080  63 74 20 6f 66 20 74 68  65 20 6d 6f 64 75 6c 65  |ct of the module|
0004e090  20 64 69 72 65 63 74 6c  79 20 77 68 69 63 68 20  | directly which |
0004e0a0  6d 69 67 68 74 20 61 66  66 65 63 74 20 74 68 65  |might affect the|
0004e0b0  20 70 6c 61 79 72 6f 75  74 69 6e 65 20 28 69 65  | playroutine (ie|
0004e0c0  2e 20 6e 75 6d 62 65 72  20 6f 66 20 76 6f 69 63  |. number of voic|
0004e0d0  65 73 29 2c 20 79 6f 75  20 73 68 6f 75 6c 64 20  |es), you should |
0004e0e0  63 61 6c 6c 20 3c 54 72  61 63 6b 65 72 5f 55 70  |call <Tracker_Up|
0004e0f0  64 61 74 65 44 61 74 61  3e 2e 0a 0a 41 6e 20 65  |dateData>...An e|
0004e100  72 72 6f 72 20 69 73 20  67 65 6e 65 72 61 74 65  |rror is generate|
0004e110  64 20 69 66 3a 0a 23 49  6e 64 65 6e 74 20 32 0a  |d if:.#Indent 2.|
0004e120  23 54 61 62 0a 8f 09 4e  6f 20 6d 6f 64 75 6c 65  |#Tab...No module|
0004e130  20 69 73 20 6c 6f 61 64  65 64 0a 8f 09 54 68 65  | is loaded...The|
0004e140  20 73 61 6d 70 6c 65 20  6e 75 6d 62 65 72 20 74  | sample number t|
0004e150  6f 20 63 68 61 6e 67 65  20 65 78 63 65 65 64 73  |o change exceeds|
0004e160  20 74 68 65 20 6d 61 78  2e 20 6f 66 20 74 68 65  | the max. of the|
0004e170  20 66 6f 72 6d 61 74 20  28 69 65 2e 20 31 35 2f  | format (ie. 15/|
0004e180  33 31 2f 33 36 29 0a 8f  09 54 68 65 20 72 65 6c  |31/36)...The rel|
0004e190  65 76 61 6e 74 20 69 6e  66 6f 72 6d 61 74 69 6f  |evant informatio|
0004e1a0  6e 20 69 73 20 6f 75 74  20 6f 66 20 72 61 6e 67  |n is out of rang|
0004e1b0  65 20 28 69 65 2e 20 76  6f 6c 20 3e 20 5b 36 34  |e (ie. vol > [64|
0004e1c0  20 6f 72 20 32 35 35 5d  29 0a 8f 09 41 20 63 6f  | or 255])...A co|
0004e1d0  6d 62 69 6e 61 74 69 6f  6e 20 6f 66 20 72 65 70  |mbination of rep|
0004e1e0  65 61 74 20 6f 66 66 73  65 74 20 61 6e 64 20 72  |eat offset and r|
0004e1f0  65 70 65 61 74 20 6c 65  6e 67 74 68 20 77 6f 75  |epeat length wou|
0004e200  6c 64 20 63 61 75 73 65  20 74 68 65 20 70 6c 61  |ld cause the pla|
0004e210  79 65 72 20 74 6f 20 6c  6f 6f 70 20 6f 75 74 73  |yer to loop outs|
0004e220  69 64 65 20 74 68 65 20  73 61 6d 70 6c 65 20 6c  |ide the sample l|
0004e230  69 6d 69 74 2e 0a 23 49  6e 64 65 6e 74 0a 0a 54  |imit..#Indent..T|
0004e240  68 69 73 20 53 57 49 20  69 73 20 70 61 72 74 20  |his SWI is part |
0004e250  6f 66 20 74 68 65 20 6c  6f 63 6b 69 6e 67 20 73  |of the locking s|
0004e260  79 73 74 65 6d 2e 0a 00  44 41 54 41 1a 06 00 00  |ystem...DATA....|
0004e270  54 72 61 63 6b 65 72 5f  4c 6f 63 6b 20 20 28 26  |Tracker_Lock  (&|
0004e280  34 33 32 30 44 29 0a 23  50 61 72 65 6e 74 20 54  |4320D).#Parent T|
0004e290  72 61 63 6b 65 72 5f 0a  3d 3e 09 52 30 20 3d 09  |racker_.=>.R0 =.|
0004e2a0  6c 6f 63 6b 69 6e 67 20  63 6f 64 65 20 28 70 61  |locking code (pa|
0004e2b0  73 73 65 64 20 69 6e 20  52 34 20 74 6f 20 53 57  |ssed in R4 to SW|
0004e2c0  49 27 73 29 0a 0a 54 68  69 73 20 53 57 49 20 61  |I's)..This SWI a|
0004e2d0  6e 64 20 74 68 65 20 63  6f 72 72 65 73 70 6f 6e  |nd the correspon|
0004e2e0  64 69 6e 67 20 3c 54 72  61 63 6b 65 72 5f 55 6e  |ding <Tracker_Un|
0004e2f0  6c 6f 63 6b 3e 20 53 57  49 20 61 72 65 20 70 72  |lock> SWI are pr|
0004e300  6f 76 69 64 65 64 20 74  6f 20 70 72 65 76 65 6e  |ovided to preven|
0004e310  74 20 75 73 65 72 20 69  6e 74 65 72 76 65 6e 74  |t user intervent|
0004e320  69 6f 6e 20 77 69 74 68  20 61 6e 79 20 6f 66 20  |ion with any of |
0004e330  74 68 65 20 66 65 61 74  75 72 65 73 20 6f 66 20  |the features of |
0004e340  74 68 65 20 6d 6f 64 75  6c 65 20 77 68 65 6e 20  |the module when |
0004e350  74 68 69 73 20 77 6f 75  6c 64 20 62 65 20 75 6e  |this would be un|
0004e360  64 65 73 69 72 61 62 6c  65 20 66 6f 72 20 61 6e  |desirable for an|
0004e370  79 20 6d 75 6c 74 69 2d  74 61 73 6b 69 6e 67 20  |y multi-tasking |
0004e380  61 70 70 6c 69 63 61 74  69 6f 6e 73 20 75 73 69  |applications usi|
0004e390  6e 67 20 74 68 65 20 6d  6f 64 75 6c 65 20 28 66  |ng the module (f|
0004e3a0  6f 72 20 65 78 61 6d 70  6c 65 20 69 73 73 75 69  |or example issui|
0004e3b0  6e 67 20 61 20 2a 50 6c  61 79 53 74 6f 70 20 63  |ng a *PlayStop c|
0004e3c0  6f 6d 6d 61 6e 64 29 2e  20 42 79 20 63 61 6c 6c  |ommand). By call|
0004e3d0  69 6e 67 20 74 68 69 73  20 53 57 49 2c 20 61 6e  |ing this SWI, an|
0004e3e0  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 63 61 6e  | application can|
0004e3f0  20 67 61 69 6e 20 63 6f  6d 70 6c 65 74 65 20 63  | gain complete c|
0004e400  6f 6e 74 72 6f 6c 20 6f  66 20 74 68 65 20 6d 6f  |ontrol of the mo|
0004e410  64 75 6c 65 2c 20 62 75  74 20 61 73 20 61 20 72  |dule, but as a r|
0004e420  65 73 75 6c 74 2c 20 74  68 69 73 20 66 65 61 74  |esult, this feat|
0004e430  75 72 65 20 6d 75 73 74  20 62 65 20 75 73 65 64  |ure must be used|
0004e440  20 63 61 72 65 66 75 6c  6c 79 2c 20 62 65 63 61  | carefully, beca|
0004e450  75 73 65 20 74 68 65 20  6d 6f 64 75 6c 65 20 63  |use the module c|
0004e460  61 6e 6e 6f 74 20 74 68  65 6e 20 62 65 20 75 6e  |annot then be un|
0004e470  6c 6f 63 6b 65 64 20 75  6e 6c 65 73 73 20 74 68  |locked unless th|
0004e480  65 20 63 6f 64 65 20 73  70 65 63 69 66 69 65 64  |e code specified|
0004e490  20 69 6e 20 74 68 65 20  6c 6f 63 6b 20 53 57 49  | in the lock SWI|
0004e4a0  20 69 73 20 6b 6e 6f 77  6e 20 28 61 6e 64 20 69  | is known (and i|
0004e4b0  66 20 6e 6f 74 2c 20 74  68 65 20 6d 6f 64 75 6c  |f not, the modul|
0004e4c0  65 20 6d 75 73 74 20 62  65 20 72 65 2d 69 6e 69  |e must be re-ini|
0004e4d0  74 69 61 6c 69 73 65 64  29 2e 0a 0a 57 68 65 6e  |tialised)...When|
0004e4e0  20 74 68 65 20 6d 6f 64  75 6c 65 20 69 73 20 6c  | the module is l|
0004e4f0  6f 63 6b 65 64 2c 20 63  61 6c 6c 69 6e 67 20 61  |ocked, calling a|
0004e500  6e 79 20 63 6f 6d 6d 61  6e 64 73 20 6f 72 20 53  |ny commands or S|
0004e510  57 49 27 73 20 77 68 69  63 68 20 61 6c 74 65 72  |WI's which alter|
0004e520  20 61 6e 79 74 68 69 6e  67 20 28 73 75 63 68 20  | anything (such |
0004e530  61 73 20 63 68 61 6e 67  69 6e 67 20 74 68 65 20  |as changing the |
0004e540  63 75 72 72 65 6e 74 20  70 6c 61 79 20 70 6f 73  |current play pos|
0004e550  69 74 69 6f 6e 2c 20 6c  6f 61 64 69 6e 67 20 6f  |ition, loading o|
0004e560  72 20 6b 69 6c 6c 69 6e  67 20 74 75 6e 65 73 2c  |r killing tunes,|
0004e570  20 70 6c 61 79 69 6e 67  20 6e 6f 74 65 73 29 20  | playing notes) |
0004e580  77 69 6c 6c 20 63 61 75  73 65 20 61 6e 20 65 72  |will cause an er|
0004e590  72 6f 72 2c 20 62 75 74  20 53 57 49 27 73 20 72  |ror, but SWI's r|
0004e5a0  65 74 75 72 6e 69 6e 67  20 69 6e 66 6f 72 6d 61  |eturning informa|
0004e5b0  74 69 6f 6e 20 77 69 6c  6c 20 66 75 6e 63 74 69  |tion will functi|
0004e5c0  6f 6e 20 61 73 20 6e 6f  72 6d 61 6c 2e 20 46 6f  |on as normal. Fo|
0004e5d0  72 20 74 68 65 20 61 70  70 6c 69 63 61 74 69 6f  |r the applicatio|
0004e5e0  6e 20 77 68 69 63 68 20  69 73 20 72 65 73 70 6f  |n which is respo|
0004e5f0  6e 73 69 62 6c 65 20 66  6f 72 20 74 68 65 20 6c  |nsible for the l|
0004e600  6f 63 6b 69 6e 67 20 74  6f 20 62 65 20 61 62 6c  |ocking to be abl|
0004e610  65 20 74 6f 20 75 73 65  20 74 68 65 20 61 66 66  |e to use the aff|
0004e620  65 63 74 65 64 20 53 57  49 27 73 2c 20 52 34 20  |ected SWI's, R4 |
0004e630  6d 75 73 74 20 62 65 20  73 65 74 20 74 6f 20 74  |must be set to t|
0004e640  68 65 20 6c 6f 63 6b 69  6e 67 20 63 6f 64 65 20  |he locking code |
0004e650  28 70 61 73 73 65 64 20  69 6e 20 52 30 29 20 62  |(passed in R0) b|
0004e660  65 66 6f 72 65 20 61 6e  79 20 6f 66 20 74 68 65  |efore any of the|
0004e670  20 61 66 66 65 63 74 65  64 20 53 57 49 27 73 20  | affected SWI's |
0004e680  69 73 20 63 61 6c 6c 65  64 20 28 6e 6f 20 63 6f  |is called (no co|
0004e690  6d 6d 61 6e 64 73 20 77  69 6c 6c 20 77 6f 72 6b  |mmands will work|
0004e6a0  20 65 76 65 6e 20 69 66  20 74 68 65 20 6c 6f 63  | even if the loc|
0004e6b0  6b 69 6e 67 20 63 6f 64  65 20 69 73 20 6b 6e 6f  |king code is kno|
0004e6c0  77 6e 29 2e 0a 0a 49 66  20 74 68 65 20 54 72 61  |wn)...If the Tra|
0004e6d0  63 6b 65 72 4d 6f 64 75  6c 65 20 69 73 20 61 6c  |ckerModule is al|
0004e6e0  72 65 61 64 79 20 27 6c  6f 63 6b 65 64 27 20 77  |ready 'locked' w|
0004e6f0  68 65 6e 20 74 68 69 73  20 53 57 49 20 69 73 20  |hen this SWI is |
0004e700  63 61 6c 6c 65 64 2c 20  61 6e 20 65 72 72 6f 72  |called, an error|
0004e710  20 77 69 6c 6c 20 62 65  20 67 65 6e 65 72 61 74  | will be generat|
0004e720  65 64 2e 20 49 74 20 69  73 20 61 64 76 69 73 61  |ed. It is advisa|
0004e730  62 6c 65 20 74 6f 20 61  76 6f 69 64 20 75 73 69  |ble to avoid usi|
0004e740  6e 67 20 74 68 69 73 20  63 61 6c 6c 20 75 6e 6c  |ng this call unl|
0004e750  65 73 73 20 61 62 73 6f  6c 75 74 65 6c 79 20 6e  |ess absolutely n|
0004e760  65 63 63 65 73 73 61 72  79 2e 0a 0a 54 68 65 20  |eccessary...The |
0004e770  72 65 73 74 72 69 63 74  65 64 20 63 6f 6d 6d 61  |restricted comma|
0004e780  6e 64 73 20 61 72 65 3a  0a 2a 50 6c 61 79 4d 6f  |nds are:.*PlayMo|
0004e790  64 2c 20 2a 50 6c 61 79  50 61 75 73 65 2c 20 2a  |d, *PlayPause, *|
0004e7a0  50 6c 61 79 53 74 61 72  74 2c 20 2a 50 6c 61 79  |PlayStart, *Play|
0004e7b0  50 6f 73 2c 20 2a 50 6c  61 79 53 74 65 72 65 6f  |Pos, *PlayStereo|
0004e7c0  2c 20 2a 50 6c 61 79 53  74 6f 70 2c 20 2a 50 6c  |, *PlayStop, *Pl|
0004e7d0  61 79 56 6f 6c 75 6d 65  2e 0a 0a 54 68 65 20 72  |ayVolume...The r|
0004e7e0  65 73 74 72 69 63 74 65  64 20 53 57 49 27 73 20  |estricted SWI's |
0004e7f0  3a 0a 3c 54 72 61 63 6b  65 72 5f 4c 6f 61 64 3e  |:.<Tracker_Load>|
0004e800  2c 20 3c 54 72 61 63 6b  65 72 5f 4d 65 6d 6f 72  |, <Tracker_Memor|
0004e810  79 4c 6f 61 64 3e 2c 20  3c 54 72 61 63 6b 65 72  |yLoad>, <Tracker|
0004e820  5f 50 6c 61 79 3e 2c 20  3c 54 72 61 63 6b 65 72  |_Play>, <Tracker|
0004e830  5f 53 74 6f 70 3e 2c 20  3c 54 72 61 63 6b 65 72  |_Stop>, <Tracker|
0004e840  5f 53 74 65 72 65 6f 3e  2c 20 3c 54 72 61 63 6b  |_Stereo>, <Track|
0004e850  65 72 5f 53 65 74 50 6f  73 3e 2c 20 3c 54 72 61  |er_SetPos>, <Tra|
0004e860  63 6b 65 72 5f 50 6c 61  79 4e 6f 74 65 3e 2c 20  |cker_PlayNote>, |
0004e870  3c 54 72 61 63 6b 65 72  5f 56 6f 6c 75 6d 65 3e  |<Tracker_Volume>|
0004e880  2e 0a 00 00 44 41 54 41  4c 01 00 00 54 72 61 63  |....DATAL...Trac|
0004e890  6b 65 72 5f 55 6e 6c 6f  63 6b 20 20 28 26 34 33  |ker_Unlock  (&43|
0004e8a0  32 30 45 29 0a 23 50 61  72 65 6e 74 20 54 72 61  |20E).#Parent Tra|
0004e8b0  63 6b 65 72 5f 0a 3d 3e  09 52 30 20 3d 09 6c 6f  |cker_.=>.R0 =.lo|
0004e8c0  63 6b 69 6e 67 20 63 6f  64 65 20 28 73 70 65 63  |cking code (spec|
0004e8d0  69 66 69 65 64 20 69 6e  20 54 72 61 63 6b 65 72  |ified in Tracker|
0004e8e0  5f 4c 6f 63 6b 29 0a 0a  54 68 69 73 20 53 57 49  |_Lock)..This SWI|
0004e8f0  20 73 68 6f 75 6c 64 20  62 65 20 63 61 6c 6c 65  | should be calle|
0004e900  64 20 74 6f 20 75 6e 6c  6f 63 6b 20 74 68 65 20  |d to unlock the |
0004e910  6d 6f 64 75 6c 65 20 61  66 74 65 72 20 69 74 20  |module after it |
0004e920  68 61 73 20 62 65 65 6e  20 6c 6f 63 6b 65 64 20  |has been locked |
0004e930  77 69 74 68 20 3c 54 72  61 63 6b 65 72 5f 4c 6f  |with <Tracker_Lo|
0004e940  63 6b 3e 2e 20 49 66 20  74 68 65 20 76 61 6c 75  |ck>. If the valu|
0004e950  65 20 70 61 73 73 65 64  20 69 6e 20 52 30 20 69  |e passed in R0 i|
0004e960  73 20 64 69 66 66 65 72  65 6e 74 20 74 6f 20 74  |s different to t|
0004e970  68 65 20 6c 6f 63 6b 69  6e 67 20 63 6f 64 65 20  |he locking code |
0004e980  67 69 76 65 6e 20 69 6e  20 74 68 65 20 6c 6f 63  |given in the loc|
0004e990  6b 20 53 57 49 2c 20 6f  72 20 74 68 65 20 6d 6f  |k SWI, or the mo|
0004e9a0  64 75 6c 65 20 68 61 73  20 6e 6f 74 20 62 65 65  |dule has not bee|
0004e9b0  6e 20 6c 6f 63 6b 65 64  2c 20 61 6e 20 65 72 72  |n locked, an err|
0004e9c0  6f 72 20 69 73 20 67 65  6e 65 72 61 74 65 64 2e  |or is generated.|
0004e9d0  44 41 54 41 83 01 00 00  54 72 61 63 6b 65 72 5f  |DATA....Tracker_|
0004e9e0  4d 75 74 65 43 68 61 6e  6e 65 6c 20 20 28 26 34  |MuteChannel  (&4|
0004e9f0  33 32 30 46 29 0a 23 50  61 72 65 6e 74 20 54 72  |320F).#Parent Tr|
0004ea00  61 63 6b 65 72 5f 0a 3d  3e 09 52 30 20 3d 09 63  |acker_.=>.R0 =.c|
0004ea10  68 61 6e 6e 65 6c 20 74  6f 20 6d 75 74 65 20 28  |hannel to mute (|
0004ea20  31 2d 38 29 0a 0a 54 68  69 73 20 53 57 49 20 61  |1-8)..This SWI a|
0004ea30  6c 6c 6f 77 73 20 79 6f  75 20 74 6f 20 74 75 72  |llows you to tur|
0004ea40  6e 20 6f 66 66 20 73 65  6c 65 63 74 65 64 20 63  |n off selected c|
0004ea50  68 61 6e 6e 65 6c 73 20  77 68 69 6c 65 20 6c 65  |hannels while le|
0004ea60  61 76 69 6e 67 20 61 6c  6c 20 74 68 65 20 6f 74  |aving all the ot|
0004ea70  68 65 72 20 63 68 61 6e  6e 65 6c 73 20 75 6e 61  |her channels una|
0004ea80  66 66 65 63 74 65 64 2e  20 54 68 65 20 63 68 61  |ffected. The cha|
0004ea90  6e 6e 65 6c 73 20 63 61  6e 20 62 65 20 74 75 72  |nnels can be tur|
0004eaa0  6e 65 64 20 62 61 63 6b  20 6f 6e 20 62 79 20 75  |ned back on by u|
0004eab0  73 69 6e 67 20 74 68 65  20 3c 54 72 61 63 6b 65  |sing the <Tracke|
0004eac0  72 5f 52 65 73 74 6f 72  65 43 68 61 6e 6e 65 6c  |r_RestoreChannel|
0004ead0  3e 20 53 57 49 2e 0a 0a  4e 6f 20 65 72 72 6f 72  |> SWI...No error|
0004eae0  20 69 73 20 67 65 6e 65  72 61 74 65 64 20 69 66  | is generated if|
0004eaf0  20 74 68 65 20 63 68 61  6e 6e 65 6c 20 6e 75 6d  | the channel num|
0004eb00  62 65 72 20 69 73 20 68  69 67 68 65 72 20 74 68  |ber is higher th|
0004eb10  61 6e 20 74 68 65 20 6e  75 6d 62 65 72 20 6f 66  |an the number of|
0004eb20  20 63 68 61 6e 6e 65 6c  73 20 61 63 74 75 61 6c  | channels actual|
0004eb30  6c 79 20 62 65 69 6e 67  20 75 73 65 64 20 62 79  |ly being used by|
0004eb40  20 74 68 65 20 54 72 61  63 6b 65 72 4d 6f 64 75  | the TrackerModu|
0004eb50  6c 65 2e 00 44 41 54 41  2f 01 00 00 54 72 61 63  |le..DATA/...Trac|
0004eb60  6b 65 72 5f 52 65 73 74  6f 72 65 43 68 61 6e 6e  |ker_RestoreChann|
0004eb70  65 6c 20 20 28 26 34 33  32 31 30 29 0a 3d 3e 09  |el  (&43210).=>.|
0004eb80  52 30 20 3d 20 63 68 61  6e 6e 65 6c 20 74 6f 20  |R0 = channel to |
0004eb90  74 75 72 6e 20 6f 6e 20  28 31 2d 38 29 0a 0a 54  |turn on (1-8)..T|
0004eba0  68 69 73 20 53 57 49 20  77 69 6c 6c 20 72 65 76  |his SWI will rev|
0004ebb0  65 72 73 65 20 74 68 65  20 65 66 66 65 63 74 20  |erse the effect |
0004ebc0  6f 66 20 61 20 3c 54 72  61 63 6b 65 72 5f 4d 75  |of a <Tracker_Mu|
0004ebd0  74 65 43 68 61 6e 6e 65  6c 3e 20 53 57 49 2c 20  |teChannel> SWI, |
0004ebe0  61 6e 64 20 74 75 72 6e  20 74 68 65 20 73 65 6c  |and turn the sel|
0004ebf0  65 63 74 65 64 20 63 68  61 6e 6e 65 6c 20 62 61  |ected channel ba|
0004ec00  63 6b 20 6f 6e 2e 0a 0a  4e 6f 20 65 72 72 6f 72  |ck on...No error|
0004ec10  20 69 73 20 67 65 6e 65  72 61 74 65 64 20 69 66  | is generated if|
0004ec20  20 74 68 65 20 63 68 61  6e 6e 65 6c 20 6e 75 6d  | the channel num|
0004ec30  62 65 72 20 69 73 20 68  69 67 68 65 72 20 74 68  |ber is higher th|
0004ec40  61 6e 20 74 68 65 20 6e  75 6d 62 65 72 20 6f 66  |an the number of|
0004ec50  20 63 68 61 6e 6e 65 6c  73 20 61 63 74 75 61 6c  | channels actual|
0004ec60  6c 79 20 62 65 69 6e 67  20 75 73 65 64 20 62 79  |ly being used by|
0004ec70  20 74 68 65 20 54 72 61  63 6b 65 72 4d 6f 64 75  | the TrackerModu|
0004ec80  6c 65 2e 00 44 41 54 41  17 02 00 00 54 72 61 63  |le..DATA....Trac|
0004ec90  6b 65 72 5f 53 70 65 65  64 20 20 28 26 34 33 32  |ker_Speed  (&432|
0004eca0  31 31 29 0a 23 50 61 72  65 6e 74 20 54 72 61 63  |11).#Parent Trac|
0004ecb0  6b 65 72 5f 0a 3d 3e 09  52 30 20 3d 09 6e 65 77  |ker_.=>.R0 =.new|
0004ecc0  20 73 70 65 65 64 20 73  65 74 74 69 6e 67 20 28  | speed setting (|
0004ecd0  30 2d 33 29 0a 0a 54 68  69 73 20 53 57 49 20 77  |0-3)..This SWI w|
0004ece0  69 6c 6c 20 73 65 6c 65  63 74 20 74 68 65 20 66  |ill select the f|
0004ecf0  75 74 75 72 65 20 73 61  6d 70 6c 65 20 72 61 74  |uture sample rat|
0004ed00  65 20 61 6e 64 20 6f 76  65 72 61 6c 6c 20 70 69  |e and overall pi|
0004ed10  74 63 68 20 74 6f 20 63  61 74 65 72 20 66 6f 72  |tch to cater for|
0004ed20  20 56 49 44 43 20 65 6e  68 61 6e 63 65 72 73 20  | VIDC enhancers |
0004ed30  61 6e 64 20 38 2d 63 68  61 6e 6e 65 6c 20 74 75  |and 8-channel tu|
0004ed40  6e 65 73 2c 20 74 61 6b  69 6e 67 20 65 66 66 65  |nes, taking effe|
0004ed50  63 74 20 69 6d 6d 65 64  69 61 74 65 6c 79 20 69  |ct immediately i|
0004ed60  66 20 61 20 74 75 6e 65  20 69 73 20 63 75 72 72  |f a tune is curr|
0004ed70  65 6e 74 6c 79 20 70 6c  61 79 69 6e 67 2e 0a 0a  |ently playing...|
0004ed80  46 6f 72 20 64 65 74 61  69 6c 73 20 6f 66 20 74  |For details of t|
0004ed90  68 65 20 64 69 66 66 65  72 65 6e 74 20 6f 70 74  |he different opt|
0004eda0  69 6f 6e 73 20 73 65 65  20 74 68 65 20 63 6f 6d  |ions see the com|
0004edb0  6d 61 6e 64 20 2a 50 6c  61 79 53 70 65 65 64 2e  |mand *PlaySpeed.|
0004edc0  20 54 68 69 73 20 53 57  49 20 69 73 20 6e 6f 74  | This SWI is not|
0004edd0  20 69 6e 63 6c 75 64 65  64 20 69 6e 20 74 68 65  | included in the|
0004ede0  20 6c 6f 63 6b 69 6e 67  20 73 79 73 74 65 6d 20  | locking system |
0004edf0  62 65 63 61 75 73 65 20  69 74 20 77 61 73 20 6f  |because it was o|
0004ee00  6e 6c 79 20 69 6e 74 72  6f 64 75 63 65 64 20 69  |nly introduced i|
0004ee10  6e 20 76 65 72 73 69 6f  6e 20 34 2e 30 34 2c 20  |n version 4.04, |
0004ee20  61 6e 64 20 73 6f 6d 65  20 70 72 6f 67 72 61 6d  |and some program|
0004ee30  73 20 6d 61 79 20 68 61  76 65 20 61 6c 72 65 61  |s may have alrea|
0004ee40  64 79 20 62 65 65 6e 20  77 72 69 74 74 65 6e 20  |dy been written |
0004ee50  77 68 69 63 68 20 75 73  65 20 74 68 65 20 6c 6f  |which use the lo|
0004ee60  63 6b 69 6e 67 20 73 79  73 74 65 6d 20 62 75 74  |cking system but|
0004ee70  20 64 6f 6e 27 74 20 63  6f 6e 74 72 6f 6c 20 74  | don't control t|
0004ee80  68 65 20 73 61 6d 70 6c  65 20 73 70 65 65 64 2f  |he sample speed/|
0004ee90  70 69 74 63 68 20 65 74  63 2e 20 00 44 41 54 41  |pitch etc. .DATA|
0004eea0  03 02 00 00 54 72 61 63  6b 65 72 5f 56 6f 6c 75  |....Tracker_Volu|
0004eeb0  6d 65 20 20 28 26 34 33  32 31 32 29 0a 23 50 61  |me  (&43212).#Pa|
0004eec0  72 65 6e 74 20 54 72 61  63 6b 65 72 5f 0a 3d 3e  |rent Tracker_.=>|
0004eed0  09 52 30 20 3d 09 6e 65  77 20 6f 76 65 72 61 6c  |.R0 =.new overal|
0004eee0  6c 20 76 6f 6c 75 6d 65  20 28 30 2d 31 32 37 29  |l volume (0-127)|
0004eef0  20 6f 72 20 2d 31 20 74  6f 20 72 65 61 64 20 76  | or -1 to read v|
0004ef00  6f 6c 75 6d 65 0a 3c 3d  09 52 30 20 3d 09 6f 6c  |olume.<=.R0 =.ol|
0004ef10  64 20 76 6f 6c 75 6d 65  0a 0a 54 68 69 73 20 53  |d volume..This S|
0004ef20  57 49 20 77 69 6c 6c 20  73 65 74 20 74 68 65 20  |WI will set the |
0004ef30  6f 76 65 72 61 6c 6c 20  76 6f 6c 75 6d 65 20 6f  |overall volume o|
0004ef40  66 20 61 6e 79 20 74 75  6e 65 73 20 70 6c 61 79  |f any tunes play|
0004ef50  69 6e 67 20 62 79 20 73  75 62 74 72 61 63 74 69  |ing by subtracti|
0004ef60  6e 67 20 28 32 35 34 2d  76 6f 6c 75 6d 65 2a 32  |ng (254-volume*2|
0004ef70  29 20 66 72 6f 6d 20 74  68 65 20 76 6f 6c 75 6d  |) from the volum|
0004ef80  65 20 6f 66 20 61 6e 79  20 73 61 6d 70 6c 65 20  |e of any sample |
0004ef90  70 6c 61 79 69 6e 67 2e  20 54 68 69 73 20 74 61  |playing. This ta|
0004efa0  6b 65 73 20 65 66 66 65  63 74 20 69 6d 6d 65 64  |kes effect immed|
0004efb0  69 61 74 65 6c 79 2c 20  61 6e 64 20 61 6c 73 6f  |iately, and also|
0004efc0  20 61 66 66 65 63 74 73  20 73 61 6d 70 6c 65 73  | affects samples|
0004efd0  20 77 68 69 63 68 20 61  72 65 20 69 6e 20 6d 69  | which are in mi|
0004efe0  64 2d 70 6c 61 79 2e 20  20 43 61 6c 6c 69 6e 67  |d-play.  Calling|
0004eff0  20 74 68 65 20 53 57 49  20 77 69 74 68 20 52 30  | the SWI with R0|
0004f000  3d 2d 31 20 77 69 6c 6c  20 72 65 74 75 72 6e 20  |=-1 will return |
0004f010  74 68 65 20 63 75 72 72  65 6e 74 20 76 6f 6c 75  |the current volu|
0004f020  6d 65 20 69 6e 20 52 30  2e 20 59 6f 75 20 63 61  |me in R0. You ca|
0004f030  6e 20 75 73 65 20 74 68  69 73 20 53 57 49 20 74  |n use this SWI t|
0004f040  6f 20 70 72 6f 76 69 64  65 20 73 6d 6f 6f 74 68  |o provide smooth|
0004f050  20 66 61 64 65 2d 6f 75  74 73 20 61 6e 64 20 66  | fade-outs and f|
0004f060  61 64 65 2d 69 6e 73 2c  20 66 6f 72 20 65 78 61  |ade-ins, for exa|
0004f070  6d 70 6c 65 2e 0a 0a 54  68 69 73 20 53 57 49 20  |mple...This SWI |
0004f080  69 73 20 70 61 72 74 20  6f 66 20 74 68 65 20 6c  |is part of the l|
0004f090  6f 63 6b 69 6e 67 20 73  79 73 74 65 6d 2e 0a 00  |ocking system...|
0004f0a0  44 41 54 41 44 01 00 00  54 72 61 63 6b 65 72 5f  |DATAD...Tracker_|
0004f0b0  54 72 61 6e 73 6c 61 74  65 56 6f 6c 75 6d 65 20  |TranslateVolume |
0004f0c0  20 28 26 34 33 32 31 34  29 0a 23 50 61 72 65 6e  | (&43214).#Paren|
0004f0d0  74 20 54 72 61 63 6b 65  72 5f 0a 3d 3e 09 52 30  |t Tracker_.=>.R0|
0004f0e0  20 3d 09 53 6f 75 6e 64  74 72 61 63 6b 65 72 20  | =.Soundtracker |
0004f0f0  76 6f 6c 75 6d 65 20 74  6f 20 63 6f 6e 76 65 72  |volume to conver|
0004f100  74 20 28 30 2d 36 34 29  0a 3c 3d 09 52 30 20 3d  |t (0-64).<=.R0 =|
0004f110  09 4c 6f 67 61 72 69 74  68 6d 69 63 20 76 6f 6c  |.Logarithmic vol|
0004f120  75 6d 65 20 28 30 2d 32  35 35 29 2c 20 32 35 35  |ume (0-255), 255|
0004f130  3d 6d 61 78 2e 0a 0a 54  68 69 73 20 53 57 49 20  |=max...This SWI |
0004f140  77 69 6c 6c 20 63 6f 6e  76 65 72 74 20 61 20 73  |will convert a s|
0004f150  6f 75 6e 64 74 72 61 63  6b 65 72 20 76 6f 6c 75  |oundtracker volu|
0004f160  6d 65 20 28 61 73 20 72  65 74 75 72 6e 65 64 20  |me (as returned |
0004f170  62 79 20 3c 54 72 61 63  6b 65 72 5f 52 65 61 64  |by <Tracker_Read|
0004f180  53 61 6d 70 6c 65 54 61  62 6c 65 3e 20 77 68 65  |SampleTable> whe|
0004f190  6e 20 61 20 73 6f 75 6e  64 74 72 61 63 6b 65 72  |n a soundtracker|
0004f1a0  20 74 75 6e 65 20 69 73  20 70 6c 61 79 69 6e 67  | tune is playing|
0004f1b0  29 20 69 6e 74 6f 20 61  20 54 72 61 63 6b 65 72  |) into a Tracker|
0004f1c0  20 66 6f 72 6d 61 74 20  6c 6f 67 61 72 69 74 68  | format logarith|
0004f1d0  6d 69 63 20 76 6f 6c 75  6d 65 20 28 30 2d 32 35  |mic volume (0-25|
0004f1e0  35 29 2e 0a 44 41 54 41  42 01 00 00 54 72 61 63  |5)..DATAB...Trac|
0004f1f0  6b 65 72 5f 55 70 64 61  74 65 44 61 74 61 20 20  |ker_UpdateData  |
0004f200  28 26 34 33 32 31 35 29  0a 23 50 61 72 65 6e 74  |(&43215).#Parent|
0004f210  20 54 72 61 63 6b 65 72  5f 0a 54 68 69 73 20 69  | Tracker_.This i|
0004f220  73 20 72 65 61 6c 6c 79  20 61 6e 20 65 64 69 74  |s really an edit|
0004f230  6f 72 20 53 57 49 20 77  68 69 63 68 20 79 6f 75  |or SWI which you|
0004f240  20 73 68 6f 75 6c 64 20  63 61 6c 6c 20 77 68 65  | should call whe|
0004f250  6e 65 76 65 72 20 79 6f  75 20 61 6c 74 65 72 20  |never you alter |
0004f260  6f 6e 65 20 6f 66 20 74  68 65 20 66 6f 6c 6c 6f  |one of the follo|
0004f270  77 69 6e 67 2c 20 73 6f  20 74 68 61 74 20 74 68  |wing, so that th|
0004f280  65 20 6d 6f 64 75 6c 65  20 63 61 6e 20 75 70 64  |e module can upd|
0004f290  61 74 65 20 69 74 73 20  64 61 74 61 3a 2d 0a 23  |ate its data:-.#|
0004f2a0  49 6e 64 65 6e 74 20 32  0a 8f 09 4e 75 6d 62 65  |Indent 2...Numbe|
0004f2b0  72 20 6f 66 20 76 6f 69  63 65 73 20 28 61 6e 64  |r of voices (and|
0004f2c0  20 74 68 65 72 65 66 6f  72 65 20 70 61 74 74 65  | therefore patte|
0004f2d0  72 6e 20 6c 65 6e 67 74  68 29 0a 8f 09 53 61 6d  |rn length)...Sam|
0004f2e0  70 6c 65 20 6c 65 6e 67  74 68 2f 6c 6f 61 64 20  |ple length/load |
0004f2f0  6e 65 77 20 73 61 6d 70  6c 65 0a 8f 09 4d 75 73  |new sample...Mus|
0004f300  69 63 20 6c 65 6e 67 74  68 0a 8f 09 53 74 65 72  |ic length...Ster|
0004f310  65 6f 20 73 65 74 74 69  6e 67 73 20 28 54 72 61  |eo settings (Tra|
0004f320  63 6b 65 72 29 0a 00 00  44 41 54 41 f7 01 00 00  |cker)...DATA....|
0004f330  4e 6f 74 65 20 74 72 61  6e 73 6c 61 74 69 6f 6e  |Note translation|
0004f340  20 74 61 62 6c 65 0a 5c  23 09 4e 6f 74 65 09 53  | table.\#.Note.S|
0004f350  61 6d 70 6c 65 20 70 65  72 69 6f 64 0a 23 4c 49  |ample period.#LI|
0004f360  4e 45 0a 31 09 43 20 2d  31 09 26 33 35 38 0a 32  |NE.1.C -1.&358.2|
0004f370  09 43 23 2d 31 09 26 33  32 38 0a 33 09 44 20 2d  |.C#-1.&328.3.D -|
0004f380  31 09 26 32 46 41 0a 34  09 44 23 2d 31 09 26 32  |1.&2FA.4.D#-1.&2|
0004f390  44 30 0a 35 09 45 20 2d  31 09 26 32 41 36 0a 36  |D0.5.E -1.&2A6.6|
0004f3a0  09 46 20 2d 31 09 26 32  38 30 0a 37 09 46 23 2d  |.F -1.&280.7.F#-|
0004f3b0  31 09 26 32 35 43 0a 38  09 47 20 2d 31 09 26 32  |1.&25C.8.G -1.&2|
0004f3c0  33 41 0a 39 09 47 23 2d  31 09 26 32 31 41 0a 31  |3A.9.G#-1.&21A.1|
0004f3d0  30 09 41 20 2d 31 09 26  31 46 43 0a 31 31 09 41  |0.A -1.&1FC.11.A|
0004f3e0  23 2d 31 09 26 31 45 30  0a 31 32 09 42 20 2d 31  |#-1.&1E0.12.B -1|
0004f3f0  09 26 31 43 35 0a 31 33  09 43 20 2d 32 09 26 31  |.&1C5.13.C -2.&1|
0004f400  41 43 0a 31 34 09 43 23  2d 32 09 26 31 39 34 0a  |AC.14.C#-2.&194.|
0004f410  31 35 09 44 20 2d 32 09  26 31 37 44 0a 31 36 09  |15.D -2.&17D.16.|
0004f420  44 23 2d 32 09 26 31 36  38 0a 31 37 09 45 20 2d  |D#-2.&168.17.E -|
0004f430  32 09 26 31 35 33 0a 31  38 09 46 20 2d 32 09 26  |2.&153.18.F -2.&|
0004f440  31 34 30 0a 31 39 09 46  23 2d 32 09 26 31 32 45  |140.19.F#-2.&12E|
0004f450  0a 32 30 09 47 20 2d 32  09 26 31 31 44 0a 32 31  |.20.G -2.&11D.21|
0004f460  09 47 23 2d 32 09 26 31  30 44 0a 32 32 09 41 20  |.G#-2.&10D.22.A |
0004f470  2d 32 09 26 46 45 0a 32  33 09 41 23 2d 32 09 26  |-2.&FE.23.A#-2.&|
0004f480  46 30 0a 32 34 09 42 20  2d 32 09 26 45 32 0a 32  |F0.24.B -2.&E2.2|
0004f490  35 09 43 20 2d 33 09 26  44 36 0a 32 36 09 43 23  |5.C -3.&D6.26.C#|
0004f4a0  2d 33 09 26 43 41 0a 32  37 09 44 20 2d 33 09 26  |-3.&CA.27.D -3.&|
0004f4b0  42 45 0a 32 38 09 44 23  2d 33 09 26 42 34 0a 32  |BE.28.D#-3.&B4.2|
0004f4c0  39 09 45 20 2d 33 09 26  41 41 0a 33 30 09 46 20  |9.E -3.&AA.30.F |
0004f4d0  2d 33 09 26 41 30 0a 33  31 09 46 23 2d 33 09 26  |-3.&A0.31.F#-3.&|
0004f4e0  39 37 0a 33 32 09 47 20  2d 33 09 26 38 46 0a 33  |97.32.G -3.&8F.3|
0004f4f0  33 09 47 23 2d 33 09 26  38 37 0a 33 34 09 41 20  |3.G#-3.&87.34.A |
0004f500  2d 33 09 26 37 46 0a 33  35 09 41 23 2d 33 09 26  |-3.&7F.35.A#-3.&|
0004f510  37 38 0a 33 36 09 42 20  2d 33 09 26 37 31 0a 00  |78.36.B -3.&71..|
0004f520  44 41 54 41 d9 0b 00 00  54 72 61 63 6b 65 72 20  |DATA....Tracker |
0004f530  61 6e 64 20 53 6f 75 6e  64 74 72 61 63 6b 65 72  |and Soundtracker|
0004f540  20 63 6f 6d 6d 61 6e 64  73 0a 49 6e 20 61 6c 6c  | commands.In all|
0004f550  20 74 75 6e 65 73 2c 20  74 68 65 72 65 20 61 72  | tunes, there ar|
0004f560  65 20 73 70 65 63 69 61  6c 20 63 6f 6d 6d 61 6e  |e special comman|
0004f570  64 73 20 77 68 69 63 68  20 68 61 76 65 20 61 20  |ds which have a |
0004f580  74 79 70 65 20 28 30 2d  26 46 20 66 6f 72 20 61  |type (0-&F for a|
0004f590  6d 69 67 61 2c 20 30 2d  39 20 26 20 41 2d 5a 20  |miga, 0-9 & A-Z |
0004f5a0  66 6f 72 20 54 72 61 63  6b 65 72 29 20 61 6e 64  |for Tracker) and|
0004f5b0  20 64 61 74 61 20 28 75  73 75 61 6c 6c 79 20 70  | data (usually p|
0004f5c0  72 65 73 65 6e 74 65 64  20 61 73 20 61 20 68 65  |resented as a he|
0004f5d0  78 20 62 79 74 65 2c 20  69 65 2e 20 26 58 58 29  |x byte, ie. &XX)|
0004f5e0  2c 20 77 68 69 63 68 20  69 73 20 73 6f 6d 65 74  |, which is somet|
0004f5f0  69 6d 65 73 20 74 72 65  61 74 65 64 20 61 73 20  |imes treated as |
0004f600  74 77 6f 20 73 65 70 65  72 61 74 65 20 6e 69 62  |two seperate nib|
0004f610  62 6c 65 73 20 28 69 65  2e 20 61 72 70 65 67 67  |bles (ie. arpegg|
0004f620  69 6f 29 2e 0a 41 20 6c  69 73 74 20 6f 66 20 74  |io)..A list of t|
0004f630  68 65 20 63 6f 6d 6d 61  6e 64 73 20 66 6f 75 6e  |he commands foun|
0004f640  64 20 69 6e 20 54 72 61  63 6b 65 72 2f 53 54 72  |d in Tracker/STr|
0004f650  61 63 6b 65 72 20 74 75  6e 65 73 20 69 73 20 61  |acker tunes is a|
0004f660  73 20 66 6f 6c 6c 6f 77  73 3a 0a 0a 43 6f 6d 6d  |s follows:..Comm|
0004f670  61 6e 64 09 20 45 66 66  65 63 74 0a 23 4c 49 4e  |and. Effect.#LIN|
0004f680  45 0a 30 20 28 62 6f 74  68 29 09 41 72 70 65 67  |E.0 (both).Arpeg|
0004f690  67 69 6f 20 2d 0a 09 09  6e 6f 74 65 32 3d 3c 62  |gio -...note2=<b|
0004f6a0  61 73 65 20 6e 6f 74 65  3d 3e 54 72 61 63 6b 65  |ase note=>Tracke|
0004f6b0  72 5f 4e 6f 74 65 54 61  62 6c 65 3e 2b 28 66 69  |r_NoteTable>+(fi|
0004f6c0  72 73 74 20 64 69 67 69  74 20 6f 66 20 64 61 74  |rst digit of dat|
0004f6d0  61 29 20 73 65 6d 69 74  6f 6e 65 73 0a 09 09 6e  |a) semitones...n|
0004f6e0  6f 74 65 33 3d 20 22 20  22 20 2b 28 73 65 63 6f  |ote3= " " +(seco|
0004f6f0  6e 64 20 22 22 09 20 22  29 20 22 0a 09 50 6c 61  |nd "". ") "..Pla|
0004f700  79 20 6e 6f 74 65 33 20  66 6f 72 20 6f 6e 65 20  |y note3 for one |
0004f710  76 73 79 6e 63 2c 20 74  68 65 6e 20 6e 6f 74 65  |vsync, then note|
0004f720  32 2c 20 62 61 73 65 20  6e 6f 74 65 2c 20 6e 6f  |2, base note, no|
0004f730  74 65 33 2c 20 6e 6f 74  65 32 20 61 6e 64 20 74  |te3, note2 and t|
0004f740  68 65 6e 20 74 68 65 20  62 61 73 65 20 6e 6f 74  |hen the base not|
0004f750  65 20 74 6f 20 61 63 68  69 65 76 65 20 61 20 63  |e to achieve a c|
0004f760  68 6f 72 64 20 65 66 66  65 63 74 20 28 69 65 2e  |hord effect (ie.|
0004f770  20 43 2d 32 20 77 69 74  68 20 63 6f 6d 6d 61 6e  | C-2 with comman|
0004f780  64 20 30 20 64 61 74 61  20 27 26 34 37 27 20 28  |d 0 data '&47' (|
0004f790  68 65 78 29 20 77 6f 75  6c 64 20 70 6c 61 79 20  |hex) would play |
0004f7a0  61 20 6d 61 6a 6f 72 20  61 72 70 65 67 67 69 6f  |a major arpeggio|
0004f7b0  20 6f 66 20 43 2d 32 2c  20 45 2d 32 2c 20 47 2d  | of C-2, E-2, G-|
0004f7c0  32 2e 49 66 20 74 68 65  20 73 70 65 65 64 20 69  |2.If the speed i|
0004f7d0  73 20 6c 65 73 73 20 74  68 61 6e 20 36 2c 20 74  |s less than 6, t|
0004f7e0  68 65 20 61 72 70 65 67  67 69 6f 20 77 69 6c 6c  |he arpeggio will|
0004f7f0  20 62 65 20 63 75 74 20  73 68 6f 72 74 2e 0a 0a  | be cut short...|
0004f800  31 20 28 62 6f 74 68 29  09 50 69 74 63 68 20 73  |1 (both).Pitch s|
0004f810  6c 69 64 65 20 28 70 6f  72 74 61 6d 65 6e 74 6f  |lide (portamento|
0004f820  20 75 70 29 20 2d 0a 09  57 68 69 6c 65 20 74 68  | up) -..While th|
0004f830  65 20 63 6f 6d 6d 61 6e  64 20 69 73 20 70 6c 61  |e command is pla|
0004f840  79 69 6e 67 2c 20 44 45  43 52 45 4d 45 4e 54 20  |ying, DECREMENT |
0004f850  74 68 65 20 73 61 6d 70  6c 65 20 70 65 72 69 6f  |the sample perio|
0004f860  64 20 62 79 20 5c 3c 70  61 72 61 6d 65 74 65 72  |d by \<parameter|
0004f870  3e 20 28 30 2d 31 35 20  75 73 75 61 6c 6c 79 29  |> (0-15 usually)|
0004f880  2e 20 54 68 69 73 20 68  61 73 20 74 68 65 20 65  |. This has the e|
0004f890  66 66 65 63 74 20 6f 66  20 49 4e 43 52 45 41 53  |ffect of INCREAS|
0004f8a0  49 4e 47 20 74 68 65 20  70 69 74 63 68 20 73 6d  |ING the pitch sm|
0004f8b0  6f 6f 74 68 6c 79 20 77  69 74 68 6f 75 74 20 72  |oothly without r|
0004f8c0  65 73 74 61 72 74 69 6e  67 20 74 68 65 20 73 61  |estarting the sa|
0004f8d0  6d 70 6c 65 2e 20 4e 6f  74 65 20 74 68 61 74 20  |mple. Note that |
0004f8e0  74 68 65 20 70 69 74 63  68 20 67 61 69 6e 65 64  |the pitch gained|
0004f8f0  20 62 79 20 61 20 66 69  78 65 64 20 63 68 61 6e  | by a fixed chan|
0004f900  67 65 20 74 6f 20 74 68  65 20 73 61 6d 70 6c 65  |ge to the sample|
0004f910  20 70 65 72 69 6f 64 20  69 73 20 6e 6f 74 20 63  | period is not c|
0004f920  6f 6e 73 74 61 6e 74 20  6f 76 65 72 20 74 68 65  |onstant over the|
0004f930  20 33 20 6f 63 74 61 76  65 73 2e 0a 0a 32 20 28  | 3 octaves...2 (|
0004f940  62 6f 74 68 29 09 50 69  74 63 68 20 73 6c 69 64  |both).Pitch slid|
0004f950  65 20 28 70 6f 72 74 61  6d 65 6e 74 6f 20 64 6f  |e (portamento do|
0004f960  77 6e 29 20 2d 0a 09 4c  69 6b 65 20 63 6f 6d 6d  |wn) -..Like comm|
0004f970  61 6e 64 20 31 20 62 75  74 20 73 6c 69 64 65 73  |and 1 but slides|
0004f980  20 74 68 65 20 70 69 74  63 68 20 64 6f 77 6e 2e  | the pitch down.|
0004f990  0a 0a 33 20 28 61 6d 69  67 61 20 6f 6e 6c 79 29  |..3 (amiga only)|
0004f9a0  09 50 6f 72 74 61 6d 65  6e 74 6f 20 2d 0a 09 53  |.Portamento -..S|
0004f9b0  6f 75 6e 64 73 20 73 69  6d 69 6c 61 72 20 74 6f  |ounds similar to|
0004f9c0  20 63 6f 6d 6d 61 6e 64  73 20 31 20 26 20 32 2c  | commands 1 & 2,|
0004f9d0  20 62 75 74 20 62 65 68  61 76 65 73 20 64 69 66  | but behaves dif|
0004f9e0  66 65 72 65 6e 74 6c 79  2e 20 57 68 65 6e 20 79  |ferently. When y|
0004f9f0  6f 75 20 75 73 65 20 63  6f 6d 6d 61 6e 64 20 33  |ou use command 3|
0004fa00  20 77 69 74 68 20 61 20  6e 6f 74 65 20 73 70 65  | with a note spe|
0004fa10  63 69 66 69 65 64 2c 20  74 68 65 20 6e 6f 74 65  |cified, the note|
0004fa20  20 69 73 20 6e 6f 74 20  70 6c 61 79 65 64 2c 20  | is not played, |
0004fa30  62 75 74 20 74 68 65 20  70 69 74 63 68 20 6f 66  |but the pitch of|
0004fa40  20 74 68 65 20 6e 6f 74  65 20 69 73 20 73 65 74  | the note is set|
0004fa50  20 61 73 20 74 68 65 20  27 67 6f 61 6c 27 20 6f  | as the 'goal' o|
0004fa60  66 20 74 68 65 20 70 6f  72 74 61 6d 65 6e 74 6f  |f the portamento|
0004fa70  2e 20 54 68 65 6e 2c 20  77 68 65 6e 65 76 65 72  |. Then, whenever|
0004fa80  20 61 20 63 6f 6d 6d 61  6e 64 20 33 20 63 6f 6d  | a command 3 com|
0004fa90  65 73 20 75 70 2c 20 74  68 65 20 70 69 74 63 68  |es up, the pitch|
0004faa0  20 69 73 20 61 75 74 6f  6d 61 74 69 63 61 6c 6c  | is automaticall|
0004fab0  79 20 73 6c 69 64 65 64  20 69 6e 20 74 68 65 20  |y slided in the |
0004fac0  61 70 70 72 6f 70 72 69  61 74 65 20 64 69 72 65  |appropriate dire|
0004fad0  63 74 69 6f 6e 20 62 79  20 74 68 65 20 76 61 6c  |ction by the val|
0004fae0  75 65 20 6c 61 73 74 20  67 69 76 65 6e 20 61 73  |ue last given as|
0004faf0  20 61 20 70 61 72 61 6d  65 74 65 72 20 66 6f 72  | a parameter for|
0004fb00  20 63 6f 6d 6d 61 6e 64  20 33 2c 20 75 6e 74 69  | command 3, unti|
0004fb10  6c 20 74 68 65 20 27 67  6f 61 6c 27 20 69 73 20  |l the 'goal' is |
0004fb20  6d 65 74 2c 20 61 6e 64  20 66 75 72 74 68 65 72  |met, and further|
0004fb30  20 63 6f 6d 6d 61 6e 64  20 33 27 73 20 77 69 6c  | command 3's wil|
0004fb40  6c 20 68 61 76 65 20 6e  6f 20 65 66 66 65 63 74  |l have no effect|
0004fb50  2e 0a 0a 34 20 28 61 6d  69 67 61 20 6f 6e 6c 79  |...4 (amiga only|
0004fb60  29 09 56 69 62 72 61 74  6f 20 2d 0a 09 54 68 69  |).Vibrato -..Thi|
0004fb70  73 20 63 61 75 73 65 73  20 74 68 65 20 76 6f 6c  |s causes the vol|
0004fb80  75 6d 65 20 74 6f 20 72  69 73 65 20 61 6e 64 20  |ume to rise and |
0004fb90  66 61 6c 6c 20 69 6e 20  61 20 77 61 72 62 6c 69  |fall in a warbli|
0004fba0  6e 67 20 65 66 66 65 63  74 2e 20 54 68 65 20 66  |ng effect. The f|
0004fbb0  69 72 73 74 20 64 69 67  69 74 20 67 69 76 65 73  |irst digit gives|
0004fbc0  20 74 68 65 20 73 70 65  65 64 20 6f 66 20 74 68  | the speed of th|
0004fbd0  65 20 76 6f 6c 75 6d 65  20 63 68 61 6e 67 65 20  |e volume change |
0004fbe0  28 31 3d 73 6c 6f 77 2c  20 26 46 3d 66 61 73 74  |(1=slow, &F=fast|
0004fbf0  29 2c 20 61 6e 64 20 74  68 65 20 73 65 63 6f 6e  |), and the secon|
0004fc00  64 20 64 69 67 69 74 20  67 69 76 65 73 20 74 68  |d digit gives th|
0004fc10  65 20 6d 61 67 6e 69 74  75 64 65 20 6f 66 20 74  |e magnitude of t|
0004fc20  68 65 20 76 69 62 72 61  74 6f 2e 20 54 68 65 20  |he vibrato. The |
0004fc30  76 69 62 72 61 74 6f 20  69 73 20 63 72 65 61 74  |vibrato is creat|
0004fc40  65 64 20 62 79 20 73 75  62 74 72 61 63 74 69 6e  |ed by subtractin|
0004fc50  67 20 61 20 73 69 6e 75  73 6f 69 64 61 6c 6c 79  |g a sinusoidally|
0004fc60  20 76 61 72 79 69 6e 67  20 61 6d 6f 75 6e 74 20  | varying amount |
0004fc70  66 72 6f 6d 20 74 68 65  20 76 6f 6c 75 6d 65 20  |from the volume |
0004fc80  6f 66 20 74 68 65 20 63  68 61 6e 6e 65 6c 2e 0a  |of the channel..|
0004fc90  0a 35 2c 36 2c 37 20 28  61 6d 69 67 61 29 09 43  |.5,6,7 (amiga).C|
0004fca0  6f 6d 62 69 6e 61 74 69  6f 6e 73 20 6f 66 20 74  |ombinations of t|
0004fcb0  68 65 20 76 6f 6c 75 6d  65 20 61 6e 64 20 70 69  |he volume and pi|
0004fcc0  74 63 68 20 73 6c 69 64  65 73 20 28 4e 6f 74 20  |tch slides (Not |
0004fcd0  69 6d 70 6c 65 6d 65 6e  74 65 64 29 0a 0a 39 20  |implemented)..9 |
0004fce0  28 61 6d 69 67 61 20 6f  6e 6c 79 29 09 53 65 74  |(amiga only).Set|
0004fcf0  20 73 61 6d 70 6c 65 20  6f 66 66 73 65 74 20 28  | sample offset (|
0004fd00  4e 6f 74 20 69 6d 70 6c  65 6d 65 6e 74 65 64 29  |Not implemented)|
0004fd10  2e 0a 0a 41 20 28 61 6d  69 67 61 29 09 56 6f 6c  |...A (amiga).Vol|
0004fd20  75 6d 65 20 73 6c 69 64  65 20 2d 0a 09 49 66 20  |ume slide -..If |
0004fd30  74 68 65 20 66 69 72 73  74 20 6e 69 62 62 6c 65  |the first nibble|
0004fd40  20 69 73 20 6e 6f 6e 2d  7a 65 72 6f 2c 20 61 64  | is non-zero, ad|
0004fd50  64 20 74 68 69 73 20 76  61 6c 75 65 20 74 6f 20  |d this value to |
0004fd60  74 68 65 20 63 75 72 72  65 6e 74 20 76 6f 6c 75  |the current volu|
0004fd70  6d 65 20 65 76 65 72 79  20 76 73 79 6e 63 2c 20  |me every vsync, |
0004fd80  65 6c 73 65 20 73 75 62  74 72 61 63 74 20 74 68  |else subtract th|
0004fd90  65 20 73 65 63 6f 6e 64  20 6e 69 62 62 6c 65 20  |e second nibble |
0004fda0  69 6e 20 61 20 73 69 6d  69 6c 61 72 20 66 61 73  |in a similar fas|
0004fdb0  68 69 6f 6e 2e 0a 0a 47  2c 20 48 20 28 54 72 61  |hion...G, H (Tra|
0004fdc0  63 6b 65 72 29 09 56 6f  6c 75 6d 65 20 73 6c 69  |cker).Volume sli|
0004fdd0  64 65 20 75 70 2c 20 64  6f 77 6e 20 2d 0a 09 54  |de up, down -..T|
0004fde0  68 65 73 65 20 63 6f 6d  6d 61 6e 64 73 20 61 72  |hese commands ar|
0004fdf0  65 20 74 68 65 20 73 61  6d 65 20 61 73 20 74 68  |e the same as th|
0004fe00  65 20 41 20 63 6f 6d 6d  61 6e 64 20 6f 6e 20 74  |e A command on t|
0004fe10  68 65 20 61 6d 69 67 61  2c 20 62 75 74 20 74 61  |he amiga, but ta|
0004fe20  6b 65 20 61 20 62 79 74  65 20 70 61 72 61 6d 65  |ke a byte parame|
0004fe30  74 65 72 2e 0a 0a 42 20  28 61 6d 69 67 61 29 09  |ter...B (amiga).|
0004fe40  50 6f 73 69 74 69 6f 6e  20 6a 75 6d 70 20 2d 0a  |Position jump -.|
0004fe50  4a 20 28 54 72 61 63 6b  65 72 29 09 57 68 65 6e  |J (Tracker).When|
0004fe60  20 74 68 69 73 20 63 6f  6d 6d 61 6e 64 20 69 73  | this command is|
0004fe70  20 6d 65 74 2c 20 6a 75  6d 70 20 74 6f 20 70 6f  | met, jump to po|
0004fe80  73 69 74 69 6f 6e 20 5c  3c 70 61 72 61 6d 65 74  |sition \<paramet|
0004fe90  65 72 3e 20 69 6e 20 73  6f 6e 67 2e 0a 0a 42 20  |er> in song...B |
0004fea0  28 54 72 61 63 6b 65 72  29 09 42 72 65 61 6b 20  |(Tracker).Break |
0004feb0  70 61 74 74 65 72 6e 20  2d 0a 09 45 71 75 69 76  |pattern -..Equiv|
0004fec0  61 6c 65 6e 74 20 74 6f  20 61 6d 69 67 61 20 63  |alent to amiga c|
0004fed0  6f 6d 6d 61 6e 64 20 44  0a 0a 43 20 28 61 6d 69  |ommand D..C (ami|
0004fee0  67 61 29 09 53 65 74 20  76 6f 6c 75 6d 65 20 2d  |ga).Set volume -|
0004fef0  0a 56 20 28 54 72 61 63  6b 65 72 29 09 41 6c 74  |.V (Tracker).Alt|
0004ff00  65 72 73 20 74 68 65 20  63 75 72 72 65 6e 74 20  |ers the current |
0004ff10  76 6f 6c 75 6d 65 20 6f  66 20 74 68 65 20 63 68  |volume of the ch|
0004ff20  61 6e 6e 65 6c 20 74 6f  20 74 68 65 20 76 61 6c  |annel to the val|
0004ff30  75 65 20 73 70 65 63 69  66 69 65 64 20 28 30 2d  |ue specified (0-|
0004ff40  36 34 20 61 6d 69 67 61  2c 20 30 2d 32 35 35 20  |64 amiga, 0-255 |
0004ff50  61 72 63 29 2e 20 56 6f  6c 75 6d 65 20 30 20 6d  |arc). Volume 0 m|
0004ff60  65 61 6e 73 20 6d 75 74  65 20 73 6f 75 6e 64 2e  |eans mute sound.|
0004ff70  0a 0a 44 20 28 61 6d 69  67 61 29 09 42 72 65 61  |..D (amiga).Brea|
0004ff80  6b 20 70 61 74 74 65 72  6e 20 2d 0a 42 20 28 54  |k pattern -.B (T|
0004ff90  72 61 63 6b 65 72 29 09  57 68 65 6e 20 74 68 69  |racker).When thi|
0004ffa0  73 20 63 6f 6d 6d 61 6e  64 20 69 73 20 65 6e 63  |s command is enc|
0004ffb0  6f 75 6e 74 65 72 65 64  2c 20 74 68 65 20 70 61  |ountered, the pa|
0004ffc0  74 74 65 72 6e 20 69 73  20 65 6e 64 65 64 2c 20  |ttern is ended, |
0004ffd0  61 6e 64 20 74 68 65 20  6e 65 78 74 20 70 61 74  |and the next pat|
0004ffe0  74 65 72 6e 20 6a 75 6d  70 65 64 20 74 6f 2e 0a  |tern jumped to..|
0004fff0  0a 45 20 28 61 6d 69 67  61 29 09 56 61 72 69 6f  |.E (amiga).Vario|
00050000  75 73 20 63 6f 6d 6d 61  6e 64 73 20 28 69 65 2e  |us commands (ie.|
00050010  20 68 2f 77 20 66 69 6c  74 65 72 20 63 6f 6d 6d  | h/w filter comm|
00050020  61 6e 64 73 29 20 5b 4e  6f 74 20 69 6d 70 6c 65  |ands) [Not imple|
00050030  6d 65 6e 74 65 64 5d 2e  0a 0a 45 20 28 54 72 61  |mented]...E (Tra|
00050040  63 6b 65 72 29 09 53 65  74 20 73 74 65 72 65 6f  |cker).Set stereo|
00050050  20 2d 0a 09 53 65 74 20  74 68 65 20 73 74 65 72  | -..Set the ster|
00050060  65 6f 20 70 6f 73 69 74  69 6f 6e 20 28 31 2d 37  |eo position (1-7|
00050070  29 20 6f 66 20 74 68 65  20 63 75 72 72 65 6e 74  |) of the current|
00050080  20 73 6f 75 6e 64 20 63  68 61 6e 6e 65 6c 0a 09  | sound channel..|
00050090  28 31 2d 38 29 2e 0a 0a  46 20 28 61 6d 69 67 61  |(1-8)...F (amiga|
000500a0  29 09 53 65 74 20 73 70  65 65 64 20 2d 0a 53 20  |).Set speed -.S |
000500b0  28 54 72 61 63 6b 65 72  29 09 53 65 74 73 20 74  |(Tracker).Sets t|
000500c0  68 65 20 73 70 65 65 64  20 28 6e 75 6d 62 65 72  |he speed (number|
000500d0  20 6f 66 20 76 73 79 6e  63 73 20 62 65 74 77 65  | of vsyncs betwe|
000500e0  65 6e 20 65 76 65 6e 74  73 29 20 74 6f 20 70 61  |en events) to pa|
000500f0  72 61 6d 65 74 65 72 2e  0a 00 00 00 44 41 54 41  |rameter.....DATA|
00050100  b6 06 00 00 45 72 72 6f  72 73 20 67 65 6e 65 72  |....Errors gener|
00050110  61 74 65 64 20 62 79 20  54 72 61 63 6b 65 72 4d  |ated by TrackerM|
00050120  6f 64 75 6c 65 0a 45 72  72 6f 72 09 4e 61 6d 65  |odule.Error.Name|
00050130  09 4d 65 61 6e 69 6e 67  0a 23 4c 49 4e 45 0a 26  |.Meaning.#LINE.&|
00050140  34 33 32 30 30 09 4e 6f  20 74 75 6e 65 20 6c 6f  |43200.No tune lo|
00050150  61 64 65 64 20 20 20 20  20 20 20 20 09 41 6e 20  |aded        .An |
00050160  6f 70 65 72 61 74 69 6f  6e 20 77 61 73 20 61 74  |operation was at|
00050170  74 65 6d 70 74 65 64 20  77 68 69 63 68 20 72 65  |tempted which re|
00050180  71 75 69 72 65 73 20 61  20 74 75 6e 65 20 74 6f  |quires a tune to|
00050190  20 62 65 20 6c 6f 61 64  65 64 20 69 6e 74 6f 20  | be loaded into |
000501a0  6d 65 6d 6f 72 79 20 62  65 66 6f 72 65 20 68 61  |memory before ha|
000501b0  6e 64 20 75 73 69 6e 67  20 2a 50 6c 61 79 4d 6f  |nd using *PlayMo|
000501c0  64 20 6f 72 20 3c 54 72  61 63 6b 65 72 5f 4c 6f  |d or <Tracker_Lo|
000501d0  61 64 3e 2e 0a 26 34 33  32 30 31 09 53 65 71 75  |ad>..&43201.Sequ|
000501e0  65 6e 63 65 20 70 6f 73  69 74 69 6f 6e 20 6f 75  |ence position ou|
000501f0  74 20 6f 66 20 72 61 6e  67 65 09 54 68 65 20 73  |t of range.The s|
00050200  65 71 75 65 6e 63 65 20  70 6f 73 69 74 69 6f 6e  |equence position|
00050210  20 67 69 76 65 6e 20 77  69 74 68 20 2a 50 6c 61  | given with *Pla|
00050220  79 50 6f 73 20 6f 72 20  53 57 49 20 3c 54 72 61  |yPos or SWI <Tra|
00050230  63 6b 65 72 5f 53 65 74  50 6f 73 3e 20 77 61 73  |cker_SetPos> was|
00050240  20 68 69 67 68 65 72 20  74 68 61 6e 20 74 68 65  | higher than the|
00050250  20 61 63 74 75 61 6c 20  6e 75 6d 62 65 72 20 6f  | actual number o|
00050260  66 20 70 61 74 74 65 72  6e 73 20 69 6e 20 74 68  |f patterns in th|
00050270  65 20 73 6f 6e 67 2e 0a  26 34 33 32 30 32 09 4e  |e song..&43202.N|
00050280  6f 20 72 6f 6f 6d 20 66  6f 72 20 6d 6f 64 75 6c  |o room for modul|
00050290  65 20 20 20 20 09 54 68  65 20 74 72 61 63 6b 65  |e    .The tracke|
000502a0  72 6d 6f 64 75 6c 65 20  63 6f 75 6c 64 20 6e 6f  |rmodule could no|
000502b0  74 20 63 6c 61 69 6d 20  65 6e 6f 75 67 68 20 52  |t claim enough R|
000502c0  4d 41 20 77 6f 72 6b 73  70 61 63 65 20 74 6f 20  |MA workspace to |
000502d0  6c 6f 61 64 20 74 68 65  20 6d 6f 64 75 6c 65 2e  |load the module.|
000502e0  20 54 6f 20 67 65 74 20  6d 6f 72 65 20 6d 65 6d  | To get more mem|
000502f0  6f 72 79 2c 20 71 75 69  74 20 62 61 73 69 63 20  |ory, quit basic |
00050300  74 6f 20 74 68 65 20 73  75 70 65 72 76 69 73 6f  |to the superviso|
00050310  72 20 70 72 6f 6d 70 74  2c 20 61 6e 64 20 72 65  |r prompt, and re|
00050320  74 72 79 2e 20 49 66 20  79 6f 75 20 61 72 65 20  |try. If you are |
00050330  75 73 69 6e 67 20 74 68  65 20 64 65 73 6b 74 6f  |using the deskto|
00050340  70 20 69 6e 73 74 65 61  64 2c 20 72 65 6d 6f 76  |p instead, remov|
00050350  65 20 61 6e 20 61 70 70  6c 69 63 61 74 69 6f 6e  |e an application|
00050360  20 61 6e 64 20 72 65 74  72 79 2e 0a 26 34 33 32  | and retry..&432|
00050370  30 33 09 43 68 61 6e 6e  65 6c 20 6e 75 6d 62 65  |03.Channel numbe|
00050380  72 20 6f 75 74 20 6f 66  20 72 61 6e 67 65 09 54  |r out of range.T|
00050390  68 65 20 73 6f 75 6e 64  20 63 68 61 6e 6e 65 6c  |he sound channel|
000503a0  20 6e 75 6d 62 65 72 20  77 61 73 20 6e 6f 74 20  | number was not |
000503b0  61 20 76 61 6c 75 65 20  62 65 74 77 65 65 6e 20  |a value between |
000503c0  31 20 61 6e 64 20 74 68  65 20 6e 75 6d 62 65 72  |1 and the number|
000503d0  20 6f 66 20 73 6f 75 6e  64 20 63 68 61 6e 6e 65  | of sound channe|
000503e0  6c 73 20 75 73 65 64 20  66 6f 72 20 74 68 61 74  |ls used for that|
000503f0  20 70 61 72 74 69 63 75  6c 61 72 20 74 75 6e 65  | particular tune|
00050400  2e 0a 26 34 33 32 30 34  09 53 61 6d 70 6c 65 20  |..&43204.Sample |
00050410  6e 75 6d 62 65 72 20 6f  75 74 20 6f 66 20 72 61  |number out of ra|
00050420  6e 67 65 09 54 68 65 20  73 61 6d 70 6c 65 20 6e  |nge.The sample n|
00050430  75 6d 62 65 72 20 77 61  73 20 6e 6f 74 20 77 69  |umber was not wi|
00050440  74 68 69 6e 20 74 68 65  20 72 61 6e 67 65 20 6f  |thin the range o|
00050450  66 20 31 2d 33 36 2e 0a  26 34 33 32 30 35 09 4e  |f 1-36..&43205.N|
00050460  6f 74 65 20 6e 75 6d 62  65 72 20 6f 75 74 20 6f  |ote number out o|
00050470  66 20 72 61 6e 67 65 09  54 68 65 20 6e 6f 74 65  |f range.The note|
00050480  20 6e 75 6d 62 65 72 20  77 61 73 20 6e 6f 74 20  | number was not |
00050490  77 69 74 68 69 6e 20 74  68 65 20 72 61 6e 67 65  |within the range|
000504a0  20 6f 66 20 31 2d 33 36  2e 0a 26 34 33 32 30 36  | of 1-36..&43206|
000504b0  09 56 6f 6c 75 6d 65 20  6f 75 74 20 6f 66 20 72  |.Volume out of r|
000504c0  61 6e 67 65 09 54 68 65  20 76 6f 6c 75 6d 65 20  |ange.The volume |
000504d0  77 61 73 20 6e 6f 74 20  77 69 74 68 69 6e 20 74  |was not within t|
000504e0  68 65 20 72 61 6e 67 65  20 6f 66 20 30 2d 32 35  |he range of 0-25|
000504f0  35 0a 26 34 33 32 30 37  09 4d 6f 64 75 6c 65 20  |5.&43207.Module |
00050500  61 6c 72 65 61 64 79 20  6c 6f 63 6b 65 64 09 3c  |already locked.<|
00050510  54 72 61 63 6b 65 72 5f  4c 6f 63 6b 3e 20 77 61  |Tracker_Lock> wa|
00050520  73 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 74 68  |s called when th|
00050530  65 20 6d 6f 64 75 6c 65  20 77 61 73 20 61 6c 72  |e module was alr|
00050540  65 61 64 79 20 6c 6f 63  6b 65 64 2e 20 54 68 65  |eady locked. The|
00050550  20 6d 6f 64 75 6c 65 20  63 61 6e 20 6f 6e 6c 79  | module can only|
00050560  20 62 65 20 75 6e 6c 6f  63 6b 65 64 20 77 68 65  | be unlocked whe|
00050570  6e 20 74 68 65 20 61 70  70 6c 69 63 61 74 69 6f  |n the applicatio|
00050580  6e 20 69 6e 20 63 6f 6e  74 72 6f 6c 20 6f 66 20  |n in control of |
00050590  74 68 65 20 6d 6f 64 75  6c 65 20 69 73 73 75 65  |the module issue|
000505a0  73 20 3c 54 72 61 63 6b  65 72 5f 55 6e 6c 6f 63  |s <Tracker_Unloc|
000505b0  6b 3e 2e 0a 26 34 33 32  30 38 09 55 6e 6c 6f 63  |k>..&43208.Unloc|
000505c0  6b 20 66 61 69 6c 65 64  09 3c 54 72 61 63 6b 65  |k failed.<Tracke|
000505d0  72 5f 55 6e 6c 6f 63 6b  3e 20 77 61 73 20 63 61  |r_Unlock> was ca|
000505e0  6c 6c 65 64 20 62 75 74  20 65 69 74 68 65 72 20  |lled but either |
000505f0  74 68 65 20 77 72 6f 6e  67 20 6c 6f 63 6b 69 6e  |the wrong lockin|
00050600  67 20 63 6f 64 65 20 77  61 73 20 73 70 65 63 69  |g code was speci|
00050610  66 69 65 64 2c 20 6f 72  20 74 68 65 20 6d 6f 64  |fied, or the mod|
00050620  75 6c 65 20 77 61 73 20  6e 6f 74 20 6c 6f 63 6b  |ule was not lock|
00050630  65 64 20 61 74 20 74 68  65 20 74 69 6d 65 2e 0a  |ed at the time..|
00050640  26 34 33 32 30 39 09 54  72 61 63 6b 65 72 4d 6f  |&43209.TrackerMo|
00050650  64 75 6c 65 20 69 6e 20  75 73 65 09 41 6e 20 61  |dule in use.An a|
00050660  74 74 65 6d 70 74 20 77  61 73 20 6d 61 64 65 20  |ttempt was made |
00050670  74 6f 20 65 78 65 63 75  74 65 20 6f 6e 65 20 6f  |to execute one o|
00050680  66 20 74 68 65 20 72 65  73 74 72 69 63 74 65 64  |f the restricted|
00050690  20 63 6f 6d 6d 61 6e 64  73 20 6f 72 20 53 57 49  | commands or SWI|
000506a0  27 73 20 77 68 69 6c 65  20 74 68 65 20 6d 6f 64  |'s while the mod|
000506b0  75 6c 65 20 77 61 73 20  6c 6f 63 6b 65 64 20 28  |ule was locked (|
000506c0  73 65 65 20 3c 54 72 61  63 6b 65 72 5f 4c 6f 63  |see <Tracker_Loc|
000506d0  6b 3e 29 0a 26 34 33 32  30 41 09 53 70 65 65 64  |k>).&4320A.Speed|
000506e0  20 6e 6f 74 20 69 6d 70  6c 65 6d 65 6e 74 65 64  | not implemented|
000506f0  09 3c 54 72 61 63 6b 65  72 5f 53 70 65 65 64 3e  |.<Tracker_Speed>|
00050700  20 77 61 73 20 63 61 6c  6c 65 64 20 77 69 74 68  | was called with|
00050710  20 52 30 20 6f 75 74 73  69 64 65 20 74 68 65 20  | R0 outside the |
00050720  72 61 6e 67 65 20 6f 66  20 76 61 6c 75 65 73 20  |range of values |
00050730  63 75 72 72 65 6e 74 6c  79 20 61 63 63 65 70 74  |currently accept|
00050740  65 64 2e 0a 26 34 33 32  30 42 09 42 61 64 20 73  |ed..&4320B.Bad s|
00050750  61 6d 70 6c 65 20 6c 6f  6f 70 69 6e 67 09 56 61  |ample looping.Va|
00050760  6c 75 65 73 20 6f 66 20  72 65 70 65 61 74 20 6f  |lues of repeat o|
00050770  66 66 73 65 74 2f 72 65  70 65 61 74 20 6c 65 6e  |ffset/repeat len|
00050780  67 74 68 20 77 6f 75 6c  64 20 63 61 75 73 65 20  |gth would cause |
00050790  73 61 6d 70 6c 65 20 74  6f 20 6c 6f 6f 70 20 6f  |sample to loop o|
000507a0  75 74 73 69 64 65 20 69  74 73 20 6c 69 6d 69 74  |utside its limit|
000507b0  2e 0a 00 00 44 41 54 41  0b 06 00 00 54 72 61 63  |....DATA....Trac|
000507c0  6b 65 72 4d 6f 64 75 6c  65 20 73 6f 75 6e 64 20  |kerModule sound |
000507d0  64 61 74 61 20 62 6c 6f  63 6b 0a 4f 66 66 73 65  |data block.Offse|
000507e0  74 09 44 61 74 61 0a 23  4c 49 4e 45 0a 30 09 54  |t.Data.#LINE.0.T|
000507f0  68 65 20 63 75 72 72 65  6e 74 20 70 69 74 63 68  |he current pitch|
00050800  20 61 63 63 75 6d 75 6c  61 74 6f 72 2e 20 28 73  | accumulator. (s|
00050810  68 69 66 74 20 72 69 67  68 74 20 31 36 20 62 69  |hift right 16 bi|
00050820  74 73 20 74 6f 20 67 65  74 20 74 68 65 20 61 63  |ts to get the ac|
00050830  74 75 61 6c 20 62 79 74  65 20 6f 66 66 73 65 74  |tual byte offset|
00050840  20 69 6e 74 6f 20 74 68  65 20 73 61 6d 70 6c 65  | into the sample|
00050850  20 62 65 69 6e 67 20 70  6c 61 79 65 64 29 2e 0a  | being played)..|
00050860  34 09 54 68 65 20 63 75  72 72 65 6e 74 20 70 69  |4.The current pi|
00050870  74 63 68 20 69 6e 63 72  65 6d 65 6e 74 20 28 61  |tch increment (a|
00050880  64 64 65 64 20 74 6f 20  61 63 63 75 6d 75 6c 61  |dded to accumula|
00050890  74 6f 72 20 61 66 74 65  72 20 65 76 65 72 79 20  |tor after every |
000508a0  62 79 74 65 20 66 69 6c  6c 65 64 29 2e 20 54 68  |byte filled). Th|
000508b0  69 73 20 69 73 20 6f 62  74 61 69 6e 65 64 20 75  |is is obtained u|
000508c0  73 69 6e 67 20 69 6e 74  65 72 6e 61 6c 20 74 61  |sing internal ta|
000508d0  62 6c 65 73 20 67 69 76  65 6e 20 74 68 65 20 73  |bles given the s|
000508e0  61 6d 70 6c 65 20 70 65  72 69 6f 64 20 28 77 6f  |ample period (wo|
000508f0  72 64 20 37 29 0a 38 09  54 68 65 20 73 61 6d 70  |rd 7).8.The samp|
00050900  6c 65 20 6c 6f 6f 70 20  6f 66 66 73 65 74 20 28  |le loop offset (|
00050910  67 69 76 65 6e 20 69 6e  20 62 79 74 65 73 29 2e  |given in bytes).|
00050920  20 57 68 65 6e 20 74 68  65 20 72 6f 75 74 69 6e  | When the routin|
00050930  65 20 72 65 61 63 68 65  73 20 74 68 65 20 65 6e  |e reaches the en|
00050940  64 20 6f 66 20 61 20 73  61 6d 70 6c 65 20 6f 72  |d of a sample or|
00050950  20 74 68 65 20 73 61 6d  70 6c 65 20 6c 65 6e 67  | the sample leng|
00050960  74 68 2c 20 74 68 65 20  61 63 63 75 6d 75 6c 2d  |th, the accumul-|
00050970  20 61 74 6f 72 20 69 73  20 6c 6f 61 64 65 64 20  | ator is loaded |
00050980  77 69 74 68 20 74 68 69  73 20 76 61 6c 75 65 20  |with this value |
00050990  73 68 69 66 74 65 64 20  6c 65 66 74 20 31 36 20  |shifted left 16 |
000509a0  62 69 74 73 20 28 69 65  2e 20 74 6f 20 67 69 76  |bits (ie. to giv|
000509b0  65 20 61 20 62 79 74 65  20 6f 66 66 73 65 74 29  |e a byte offset)|
000509c0  2e 20 49 66 20 74 68 69  73 20 69 73 20 61 20 7a  |. If this is a z|
000509d0  65 72 6f 20 76 61 6c 75  65 2c 20 74 68 65 20 73  |ero value, the s|
000509e0  61 6d 70 6c 65 20 77 69  6c 6c 20 73 74 6f 70 20  |ample will stop |
000509f0  69 6e 73 74 65 61 64 20  6f 66 20 6c 6f 6f 70 69  |instead of loopi|
00050a00  6e 67 2e 0a 31 32 09 54  68 65 20 73 61 6d 70 6c  |ng..12.The sampl|
00050a10  65 20 6c 65 6e 67 74 68  20 2f 20 72 65 70 65 61  |e length / repea|
00050a20  74 20 6c 65 6e 67 74 68  20 28 69 6e 20 62 79 74  |t length (in byt|
00050a30  65 73 29 2e 20 54 68 65  20 72 6f 75 74 69 6e 65  |es). The routine|
00050a40  20 63 68 65 63 6b 73 20  65 76 65 72 79 20 34 20  | checks every 4 |
00050a50  62 79 74 65 73 20 66 69  6c 6c 65 64 20 74 6f 20  |bytes filled to |
00050a60  73 65 65 20 69 66 20 74  68 65 20 63 75 72 72 65  |see if the curre|
00050a70  6e 74 20 61 63 63 75 6d  75 6c 61 74 6f 72 20 65  |nt accumulator e|
00050a80  78 63 65 65 64 73 20 74  68 69 73 20 76 61 6c 75  |xceeds this valu|
00050a90  65 20 77 68 65 6e 20 73  68 69 66 74 65 64 20 72  |e when shifted r|
00050aa0  69 67 68 74 20 31 36 20  62 69 74 73 2e 20 28 53  |ight 16 bits. (S|
00050ab0  65 65 20 61 62 6f 76 65  29 0a 31 36 09 54 68 65  |ee above).16.The|
00050ac0  20 73 61 6d 70 6c 65 20  6e 75 6d 62 65 72 20 28  | sample number (|
00050ad0  31 2d 33 36 29 2e 0a 32  30 09 54 68 65 20 63 75  |1-36)..20.The cu|
00050ae0  72 72 65 6e 74 20 76 6f  6c 75 6d 65 20 28 30 2d  |rrent volume (0-|
00050af0  32 35 35 29 2e 20 54 68  69 73 20 76 61 6c 75 65  |255). This value|
00050b00  20 69 73 20 73 75 62 74  72 61 63 74 65 64 20 66  | is subtracted f|
00050b10  72 6f 6d 20 65 76 65 72  79 20 62 79 74 65 20 66  |rom every byte f|
00050b20  69 6c 6c 65 64 2c 20 74  68 65 72 65 66 6f 72 65  |illed, therefore|
00050b30  20 30 20 3d 20 6d 61 78  69 6d 75 6d 20 76 6f 6c  | 0 = maximum vol|
00050b40  75 6d 65 20 61 6e 64 20  32 35 35 20 3d 20 73 69  |ume and 255 = si|
00050b50  6c 65 6e 74 2e 20 4e 42  20 54 68 69 73 20 69 73  |lent. NB This is|
00050b60  20 74 68 65 20 72 65 76  65 72 73 65 20 6f 66 20  | the reverse of |
00050b70  74 68 65 20 6e 6f 72 6d  61 6c 20 76 6f 6c 75 6d  |the normal volum|
00050b80  65 20 63 6f 6d 6d 61 6e  64 2e 0a 32 34 09 54 68  |e command..24.Th|
00050b90  69 73 20 69 73 20 74 68  65 20 74 72 61 63 6b 65  |is is the tracke|
00050ba0  72 20 66 6f 72 6d 61 74  20 6e 6f 74 65 20 6e 75  |r format note nu|
00050bb0  6d 62 65 72 20 6f 66 20  74 68 65 20 73 61 6d 70  |mber of the samp|
00050bc0  6c 65 20 62 65 69 6e 67  20 70 6c 61 79 65 64 20  |le being played |
00050bd0  28 31 2d 33 36 2c 20 31  3d 43 20 6f 63 74 61 76  |(1-36, 1=C octav|
00050be0  65 20 31 20 33 36 3d 42  20 6f 63 74 61 76 65 20  |e 1 36=B octave |
00050bf0  33 29 2e 20 54 68 65 20  61 72 70 65 67 67 69 6f  |3). The arpeggio|
00050c00  20 63 6f 6d 6d 61 6e 64  20 6d 61 6b 65 73 20 75  | command makes u|
00050c10  73 65 20 6f 66 20 74 68  69 73 20 77 6f 72 64 2e  |se of this word.|
00050c20  20 49 66 20 74 68 69 73  20 77 6f 72 64 20 69 73  | If this word is|
00050c30  20 7a 65 72 6f 2c 20 6e  6f 20 73 6f 75 6e 64 20  | zero, no sound |
00050c40  77 69 6c 6c 20 62 65 20  70 6c 61 79 65 64 2e 0a  |will be played..|
00050c50  32 38 09 54 68 69 73 20  69 73 20 61 20 63 6f 70  |28.This is a cop|
00050c60  79 20 6f 66 20 74 68 65  20 73 61 6d 70 6c 65 20  |y of the sample |
00050c70  70 65 72 69 6f 64 20 28  66 72 6f 6d 20 77 68 69  |period (from whi|
00050c80  63 68 20 74 68 65 20 70  69 74 63 68 20 69 6e 63  |ch the pitch inc|
00050c90  72 65 6d 65 6e 74 20 76  61 6c 75 65 20 69 73 20  |rement value is |
00050ca0  63 61 6c 63 75 6c 61 74  65 64 29 2c 20 61 6e 64  |calculated), and|
00050cb0  20 69 73 20 75 73 65 64  20 62 79 20 74 68 65 20  | is used by the |
00050cc0  70 6f 72 74 61 6d 65 6e  74 6f 20 63 6f 6d 6d 61  |portamento comma|
00050cd0  6e 64 73 2e 20 54 68 65  20 72 61 6e 67 65 20 6f  |nds. The range o|
00050ce0  66 20 74 68 65 20 73 61  6d 70 6c 65 20 70 65 72  |f the sample per|
00050cf0  69 6f 64 20 69 73 20 66  72 6f 6d 20 31 20 74 6f  |iod is from 1 to|
00050d00  20 68 65 78 20 26 34 30  30 20 28 61 6c 74 68 6f  | hex &400 (altho|
00050d10  75 67 68 20 74 68 65 20  70 6f 72 74 61 6d 65 6e  |ugh the portamen|
00050d20  74 6f 20 63 6f 6d 6d 61  6e 64 73 20 68 61 76 65  |to commands have|
00050d30  20 73 6d 61 6c 6c 65 72  20 6c 69 6d 69 74 73 20  | smaller limits |
00050d40  69 6e 20 70 72 61 63 74  69 63 65 29 2e 0a 33 32  |in practice)..32|
00050d50  09 57 6f 72 64 20 30 20  6f 66 20 73 6f 75 6e 64  |.Word 0 of sound|
00050d60  20 63 68 61 6e 6e 65 6c  20 32 2e 2e 2e 0a 33 36  | channel 2....36|
00050d70  09 57 6f 72 64 20 31 20  6f 66 20 73 6f 75 6e 64  |.Word 1 of sound|
00050d80  20 63 68 61 6e 6e 65 6c  20 32 2e 2e 2e 20 20 65  | channel 2...  e|
00050d90  74 63 2e 20 0a 20 20 20  20 20 0a 65 74 63 20 75  |tc. .     .etc u|
00050da0  6e 74 69 6c 20 77 6f 72  64 20 38 20 6f 66 20 73  |ntil word 8 of s|
00050db0  6f 75 6e 64 20 63 68 61  6e 6e 65 6c 20 38 0a 00  |ound channel 8..|
00050dc0  44 49 52 24 0c 08 00 00  0c 08 00 00 cc 15 05 00  |DIR$............|
00050dd0  47 fd ff ff e3 a6 18 0a  67 04 00 00 13 00 00 00  |G.......g.......|
00050de0  00 00 00 00 21 52 6f 6f  74 00 00 00 34 1a 05 00  |....!Root...4...|
00050df0  45 ff ff ff d7 1d ef ff  f2 01 00 00 13 00 00 00  |E...............|
00050e00  00 00 00 00 42 61 73 65  4f 66 53 70 72 69 74 65  |....BaseOfSprite|
00050e10  73 00 00 00 28 1c 05 00  46 ff ff ff ac 76 af 22  |s...(...F....v."|
00050e20  22 01 00 00 13 00 00 00  00 00 00 00 42 6c 6f 63  |"...........Bloc|
00050e30  6b 43 6f 70 79 00 00 00  4c 1d 05 00 45 fd ff ff  |kCopy...L...E...|
00050e40  77 57 f3 ff 46 01 00 00  13 00 00 00 00 00 00 00  |wW..F...........|
00050e50  63 61 72 65 74 68 66 00  94 1e 05 00 45 ff ff ff  |carethf.....E...|
00050e60  0d 16 ef ff 6f 01 00 00  13 00 00 00 00 00 00 00  |....o...........|
00050e70  43 6c 61 69 6d 46 72 65  65 4d 65 6d 6f 72 79 00  |ClaimFreeMemory.|
00050e80  04 20 05 00 46 ff ff ff  c6 88 fa 2a c9 00 00 00  |. ..F......*....|
00050e90  13 00 00 00 00 00 00 00  43 6c 6f 73 65 44 6f 77  |........CloseDow|
00050ea0  6e 00 00 00 d0 20 05 00  45 ff ff ff d8 06 ef ff  |n.... ..E.......|
00050eb0  8f 00 00 00 13 00 00 00  00 00 00 00 43 6c 6f 73  |............Clos|
00050ec0  65 54 65 6d 70 6c 61 74  65 00 00 00 60 21 05 00  |eTemplate...`!..|
00050ed0  45 ff ff ff aa 04 ef ff  d1 00 00 00 13 00 00 00  |E...............|
00050ee0  00 00 00 00 43 6c 6f 73  65 57 69 6e 64 6f 77 00  |....CloseWindow.|
00050ef0  34 22 05 00 45 ff ff ff  86 00 ef ff 5e 02 00 00  |4"..E.......^...|
00050f00  13 00 00 00 00 00 00 00  43 6f 6d 6d 61 6e 64 57  |........CommandW|
00050f10  69 6e 64 6f 77 00 00 00  94 24 05 00 47 ff ff ff  |indow....$..G...|
00050f20  d4 c3 08 0a aa 02 00 00  13 00 00 00 00 00 00 00  |................|
00050f30  43 72 65 61 74 65 49 63  6f 6e 00 00 40 27 05 00  |CreateIcon..@'..|
00050f40  46 ff ff ff 86 de d5 bf  80 05 00 00 13 00 00 00  |F...............|
00050f50  00 00 00 00 43 72 65 61  74 65 4d 65 6e 75 00 00  |....CreateMenu..|
00050f60  c0 2c 05 00 45 ff ff ff  34 e2 ee ff 54 01 00 00  |.,..E...4...T...|
00050f70  13 00 00 00 00 00 00 00  43 72 65 61 74 65 53 75  |........CreateSu|
00050f80  62 4d 65 6e 75 00 00 00  14 2e 05 00 45 ff ff ff  |bMenu.......E...|
00050f90  88 da ee ff 07 01 00 00  13 00 00 00 00 00 00 00  |................|
00050fa0  43 72 65 61 74 65 57 69  6e 64 6f 77 00 00 00 00  |CreateWindow....|
00050fb0  1c 2f 05 00 45 ff ff ff  9b d7 ee ff fb 01 00 00  |./..E...........|
00050fc0  13 00 00 00 00 00 00 00  44 65 63 6f 64 65 4d 65  |........DecodeMe|
00050fd0  6e 75 00 00 18 31 05 00  45 ff ff ff 3c d1 ee ff  |nu...1..E...<...|
00050fe0  57 01 00 00 13 00 00 00  00 00 00 00 44 65 6c 65  |W...........Dele|
00050ff0  74 65 49 63 6f 6e 00 00  70 32 05 00 45 ff ff ff  |teIcon..p2..E...|
00051000  8d cc ee ff 08 01 00 00  13 00 00 00 00 00 00 00  |................|
00051010  44 65 6c 65 74 65 57 69  6e 64 6f 77 00 00 00 00  |DeleteWindow....|
00051020  78 33 05 00 45 ff ff ff  e4 c3 ee ff b3 01 00 00  |x3..E...........|
00051030  13 00 00 00 00 00 00 00  46 6f 72 63 65 52 65 64  |........ForceRed|
00051040  72 61 77 00 2c 35 05 00  45 fd ff ff 0b fc f2 ff  |raw.,5..E.......|
00051050  ba 00 00 00 13 00 00 00  00 00 00 00 69 63 6f 6e  |............icon|
00051060  62 6c 6f 63 6b 00 00 00  e8 35 05 00 45 fd ff ff  |block....5..E...|
00051070  f3 f7 f2 ff 65 02 00 00  13 00 00 00 00 00 00 00  |....e...........|
00051080  69 63 6f 6e 62 75 74 74  6f 6e 00 00 50 38 05 00  |iconbutton..P8..|
00051090  45 fd ff ff cf e7 f2 ff  b8 02 00 00 13 00 00 00  |E...............|
000510a0  00 00 00 00 69 63 6f 6e  64 61 74 61 00 00 00 00  |....icondata....|
000510b0  08 3b 05 00 46 fd ff ff  7f b1 78 4e c3 02 00 00  |.;..F.....xN....|
000510c0  13 00 00 00 00 00 00 00  69 63 6f 6e 66 6c 61 67  |........iconflag|
000510d0  73 00 00 00 cc 3d 05 00  45 fd ff ff e6 ba f2 ff  |s....=..E.......|
000510e0  ce 02 00 00 13 00 00 00  00 00 00 00 69 63 6f 6e  |............icon|
000510f0  70 6f 73 69 74 69 6f 6e  73 00 00 00 9c 40 05 00  |positions....@..|
00051100  46 ff ff ff 90 84 fa 2a  5c 01 00 00 13 00 00 00  |F......*\.......|
00051110  00 00 00 00 49 6e 69 74  69 61 6c 69 73 65 00 00  |....Initialise..|
00051120  f8 41 05 00 46 ff ff ff  53 44 c9 25 22 02 00 00  |.A..F...SD.%"...|
00051130  13 00 00 00 00 00 00 00  4c 6f 61 64 54 65 6d 70  |........LoadTemp|
00051140  6c 61 74 65 00 00 00 00  1c 44 05 00 46 ff ff ff  |late.....D..F...|
00051150  43 dc 42 de dc 00 00 00  13 00 00 00 00 00 00 00  |C.B.............|
00051160  4f 70 65 6e 54 65 6d 70  6c 61 74 65 00 00 00 00  |OpenTemplate....|
00051170  f8 44 05 00 46 ff ff ff  1c 0c 79 4c 38 02 00 00  |.D..F.....yL8...|
00051180  13 00 00 00 00 00 00 00  4f 70 65 6e 57 69 6e 64  |........OpenWind|
00051190  6f 77 00 00 30 47 05 00  45 ff ff ff 59 2f ee ff  |ow..0G..E...Y/..|
000511a0  a5 00 00 00 13 00 00 00  00 00 00 00 50 6c 6f 74  |............Plot|
000511b0  49 63 6f 6e 00 00 00 00  d8 47 05 00 46 ff ff ff  |Icon.....G..F...|
000511c0  f0 a4 0f 50 fb 01 00 00  13 00 00 00 00 00 00 00  |...P............|
000511d0  50 72 6f 63 65 73 73 4b  65 79 00 00 d4 49 05 00  |ProcessKey...I..|
000511e0  45 ff ff ff 27 eb ed ff  f8 00 00 00 13 00 00 00  |E...'...........|
000511f0  00 00 00 00 52 65 64 72  61 77 57 69 6e 64 6f 77  |....RedrawWindow|
00051200  00 00 00 00 cc 4a 05 00  46 ff ff ff 26 97 da 96  |.....J..F...&...|
00051210  dc 02 00 00 13 00 00 00  00 00 00 00 52 65 70 6f  |............Repo|
00051220  72 74 45 72 72 6f 72 00  a8 4d 05 00 46 fd ff ff  |rtError..M..F...|
00051230  4b 5b da 96 01 03 00 00  13 00 00 00 00 00 00 00  |K[..............|
00051240  72 65 70 6f 72 74 65 72  72 6f 72 30 00 00 00 00  |reporterror0....|
00051250  ac 50 05 00 46 ff ff ff  68 90 18 20 e3 00 00 00  |.P..F...h.. ....|
00051260  13 00 00 00 00 00 00 00  53 6c 6f 74 53 69 7a 65  |........SlotSize|
00051270  00 00 00 00 90 51 05 00  46 ff ff ff 62 d6 f3 25  |.....Q..F...b..%|
00051280  27 01 00 00 13 00 00 00  00 00 00 00 53 70 72 69  |'...........Spri|
00051290  74 65 4f 70 00 00 00 00  b8 52 05 00 45 ff ff ff  |teOp.....R..E...|
000512a0  2d 72 ed ff c8 00 00 00  13 00 00 00 00 00 00 00  |-r..............|
000512b0  53 74 61 72 74 54 61 73  6b 00 00 00 80 53 05 00  |StartTask....S..|
000512c0  45 ff ff ff f3 6e ed ff  a3 00 00 00 13 00 00 00  |E....n..........|
000512d0  00 00 00 00 54 65 78 74  43 6f 6c 6f 75 72 00 00  |....TextColour..|
000512e0  24 54 05 00 45 ff ff ff  11 62 ed ff 42 01 00 00  |$T..E....b..B...|
000512f0  13 00 00 00 00 00 00 00  54 72 61 6e 73 66 65 72  |........Transfer|
00051300  42 6c 6f 63 6b 00 00 00  68 55 05 00 45 ff ff ff  |Block...hU..E...|
00051310  43 a6 ef ff 91 02 00 00  13 00 00 00 00 00 00 00  |C...............|
00051320  55 70 64 61 74 65 57 69  6e 64 6f 77 00 00 00 00  |UpdateWindow....|
00051330  fc 57 05 00 47 fd ff ff  ed ca 20 0a f0 0c 00 00  |.W..G..... .....|
00051340  13 00 00 00 00 00 00 00  76 61 6c 69 64 61 74 69  |........validati|
00051350  6f 6e 73 74 72 69 6e 67  00 00 00 00 ec 64 05 00  |onstring.....d..|
00051360  46 ff ff ff b7 67 fa 2a  14 01 00 00 13 00 00 00  |F....g.*........|
00051370  00 00 00 00 57 68 69 63  68 49 63 6f 6e 00 00 00  |....WhichIcon...|
00051380  00 66 05 00 46 fd ff ff  f1 81 ce 59 54 04 00 00  |.f..F......YT...|
00051390  13 00 00 00 00 00 00 00  77 69 6e 64 6f 77 62 6c  |........windowbl|
000513a0  6f 63 6b 00 54 6a 05 00  46 fd ff ff 68 9c 13 4d  |ock.Tj..F...h..M|
000513b0  14 04 00 00 13 00 00 00  00 00 00 00 77 69 6e 64  |............wind|
000513c0  6f 77 66 6c 61 67 73 00  68 6e 05 00 46 fd ff ff  |owflags.hn..F...|
000513d0  d0 4f 2d 44 c9 01 00 00  13 00 00 00 00 00 00 00  |.O-D............|
000513e0  77 6f 72 6b 61 72 65 61  62 75 74 74 6f 6e 66 6c  |workareabuttonfl|
000513f0  61 67 73 00 34 70 05 00  47 fd ff ff c9 2f 2d 0a  |ags.4p..G..../-.|
00051400  a0 0a 00 00 13 01 00 00  00 00 00 00 55 4d 00 00  |............UM..|
00051410  f8 3a 06 00 46 ff ff ff  2a 7f c3 0c f9 00 00 00  |.:..F...*.......|
00051420  13 00 00 00 00 00 00 00  41 64 64 4d 65 73 73 61  |........AddMessa|
00051430  67 65 73 00 f4 3b 06 00  46 ff ff ff 2b a0 bd 88  |ges..;..F...+...|
00051440  98 00 00 00 13 00 00 00  00 00 00 00 52 65 67 69  |............Regi|
00051450  73 74 65 72 46 69 6c 74  65 72 00 00 8c 3c 06 00  |sterFilter...<..|
00051460  46 ff ff ff 42 7a c3 0c  ee 00 00 00 13 00 00 00  |F...Bz..........|
00051470  00 00 00 00 52 65 6d 6f  76 65 4d 65 73 73 61 67  |....RemoveMessag|
00051480  65 73 00 00 7c 3d 06 00  46 ff ff ff 85 5f 97 1c  |es..|=..F...._..|
00051490  ba 03 00 00 13 00 00 00  00 00 00 00 54 65 78 74  |............Text|
000514a0  4f 70 00 00 38 41 06 00  46 ff ff ff b1 45 02 e0  |Op..8A..F....E..|
000514b0  3f 04 00 00 13 00 00 00  00 00 00 00 44 72 61 67  |?...........Drag|
000514c0  42 6f 78 00 78 45 06 00  47 fd ff ff 30 32 2d 0a  |Box.xE..G...02-.|
000514d0  ac 01 00 00 13 01 00 00  00 00 00 00 47 65 74 00  |............Get.|
000514e0  3c 55 06 00 47 fd ff ff  61 32 2d 0a 4c 01 00 00  |<U..G...a2-.L...|
000514f0  13 01 00 00 00 00 00 00  53 65 74 00 b4 61 06 00  |........Set..a..|
00051500  47 fd ff ff 89 32 2d 0a  d8 01 00 00 13 01 00 00  |G....2-.........|
00051510  00 00 00 00 50 6f 6c 6c  00 00 00 00 bc 7e 06 00  |....Poll.....~..|
00051520  47 fd ff ff ca 32 2d 0a  9c 00 00 00 13 01 00 00  |G....2-.........|
00051530  00 00 00 00 53 65 6e 64  6d 65 73 73 61 67 65 00  |....Sendmessage.|
00051540  48 92 06 00 47 fd ff ff  e4 32 2d 0a 0c 01 00 00  |H...G....2-.....|
00051550  13 01 00 00 00 00 00 00  52 65 61 64 00 00 00 00  |........Read....|
00051560  0c 9b 06 00 47 fd ff ff  4c 48 18 0a db 01 00 00  |....G...LH......|
00051570  13 00 00 00 00 00 00 00  4d 6f 64 65 53 65 6c 65  |........ModeSele|
00051580  63 74 00 00 e8 9c 06 00  47 fd ff ff f1 64 18 0a  |ct......G....d..|
00051590  0b 02 00 00 13 00 00 00  00 00 00 00 4d 6f 64 65  |............Mode|
000515a0  53 74 72 69 6e 67 00 00  f4 9e 06 00 47 ff ff ff  |String......G...|
000515b0  c2 89 18 0a 13 01 00 00  13 00 00 00 00 00 00 00  |................|
000515c0  52 65 73 69 7a 65 49 63  6f 6e 00 00 44 41 54 41  |ResizeIcon..DATA|
000515d0  67 04 00 00 57 49 4d 50  0a 23 50 61 72 65 6e 74  |g...WIMP.#Parent|
000515e0  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 57  | !Root.#Prefix W|
000515f0  69 6d 70 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |imp_.#Table Colu|
00051600  6d 6e 73 20 33 0a 3c 41  64 64 4d 65 73 73 61 67  |mns 3.<AddMessag|
00051610  65 73 3e 0a 3c 42 61 73  65 4f 66 53 70 72 69 74  |es>.<BaseOfSprit|
00051620  65 73 3e 0a 3c 42 6c 6f  63 6b 43 6f 70 79 3e 0a  |es>.<BlockCopy>.|
00051630  3c 43 6c 61 69 6d 46 72  65 65 4d 65 6d 6f 72 79  |<ClaimFreeMemory|
00051640  3e 0a 3c 43 6c 6f 73 65  44 6f 77 6e 3e 0a 3c 43  |>.<CloseDown>.<C|
00051650  6c 6f 73 65 54 65 6d 70  6c 61 74 65 3e 0a 3c 43  |loseTemplate>.<C|
00051660  6c 6f 73 65 57 69 6e 64  6f 77 3e 0a 3c 43 6f 6d  |loseWindow>.<Com|
00051670  6d 61 6e 64 57 69 6e 64  6f 77 3e 0a 3c 43 72 65  |mandWindow>.<Cre|
00051680  61 74 65 49 63 6f 6e 3e  0a 3c 43 72 65 61 74 65  |ateIcon>.<Create|
00051690  4d 65 6e 75 3e 0a 3c 43  72 65 61 74 65 53 75 62  |Menu>.<CreateSub|
000516a0  4d 65 6e 75 3e 0a 3c 43  72 65 61 74 65 57 69 6e  |Menu>.<CreateWin|
000516b0  64 6f 77 3e 0a 3c 44 65  63 6f 64 65 4d 65 6e 75  |dow>.<DecodeMenu|
000516c0  3e 0a 3c 44 65 6c 65 74  65 49 63 6f 6e 3e 0a 3c  |>.<DeleteIcon>.<|
000516d0  44 65 6c 65 74 65 57 69  6e 64 6f 77 3e 0a 3c 44  |DeleteWindow>.<D|
000516e0  72 61 67 42 6f 78 3e 0a  3c 46 6f 72 63 65 52 65  |ragBox>.<ForceRe|
000516f0  64 72 61 77 3e 0a 3c 47  65 74 43 61 72 65 74 50  |draw>.<GetCaretP|
00051700  6f 73 69 74 69 6f 6e 3e  0a 3c 47 65 74 49 63 6f  |osition>.<GetIco|
00051710  6e 53 74 61 74 65 3e 0a  3c 47 65 74 4d 65 6e 75  |nState>.<GetMenu|
00051720  53 74 61 74 65 3e 0a 3c  47 65 74 50 6f 69 6e 74  |State>.<GetPoint|
00051730  65 72 49 6e 66 6f 3e 0a  3c 47 65 74 52 65 63 74  |erInfo>.<GetRect|
00051740  61 6e 67 6c 65 3e 0a 3c  47 65 74 57 69 6e 64 6f  |angle>.<GetWindo|
00051750  77 49 6e 66 6f 3e 0a 3c  47 65 74 57 69 6e 64 6f  |wInfo>.<GetWindo|
00051760  77 4f 75 74 6c 69 6e 65  3e 0a 3c 47 65 74 57 69  |wOutline>.<GetWi|
00051770  6e 64 6f 77 53 74 61 74  65 3e 0a 3c 49 6e 69 74  |ndowState>.<Init|
00051780  69 61 6c 69 73 65 3e 0a  3c 4c 6f 61 64 54 65 6d  |ialise>.<LoadTem|
00051790  70 6c 61 74 65 3e 0a 3c  4f 70 65 6e 54 65 6d 70  |plate>.<OpenTemp|
000517a0  6c 61 74 65 3e 0a 3c 4f  70 65 6e 57 69 6e 64 6f  |late>.<OpenWindo|
000517b0  77 3e 0a 3c 50 6c 6f 74  49 63 6f 6e 3e 0a 3c 50  |w>.<PlotIcon>.<P|
000517c0  6f 6c 6c 3e 0a 3c 50 6f  6c 6c 49 64 6c 65 3e 0a  |oll>.<PollIdle>.|
000517d0  3c 50 72 6f 63 65 73 73  4b 65 79 3e 0a 3c 52 65  |<ProcessKey>.<Re|
000517e0  61 64 50 61 6c 65 74 74  65 3e 0a 3c 52 65 61 64  |adPalette>.<Read|
000517f0  50 69 78 54 72 61 6e 73  3e 0a 3c 52 65 61 64 53  |PixTrans>.<ReadS|
00051800  79 73 49 6e 66 6f 3e 0a  3c 52 65 64 72 61 77 57  |ysInfo>.<RedrawW|
00051810  69 6e 64 6f 77 3e 0a 3c  52 65 67 69 73 74 65 72  |indow>.<Register|
00051820  46 69 6c 74 65 72 3e 0a  3c 52 65 6d 6f 76 65 4d  |Filter>.<RemoveM|
00051830  65 73 73 61 67 65 73 3e  0a 3c 52 65 70 6f 72 74  |essages>.<Report|
00051840  45 72 72 6f 72 3e 0a 3c  52 65 73 69 7a 65 49 63  |Error>.<ResizeIc|
00051850  6f 6e 3e 0a 3c 53 65 6e  64 4d 65 73 73 61 67 65  |on>.<SendMessage|
00051860  3e 0a 3c 53 65 74 43 61  72 65 74 50 6f 73 69 74  |>.<SetCaretPosit|
00051870  69 6f 6e 3e 0a 3c 53 65  74 43 6f 6c 6f 75 72 3e  |ion>.<SetColour>|
00051880  0a 53 65 74 43 6f 6c 6f  75 72 4d 61 70 70 69 6e  |.SetColourMappin|
00051890  67 0a 3c 53 65 74 45 78  74 65 6e 74 3e 0a 3c 53  |g.<SetExtent>.<S|
000518a0  65 74 46 6f 6e 74 43 6f  6c 6f 75 72 73 3e 0a 3c  |etFontColours>.<|
000518b0  53 65 74 49 63 6f 6e 53  74 61 74 65 3e 0a 3c 53  |SetIconState>.<S|
000518c0  65 74 4d 6f 64 65 3e 0a  3c 53 65 74 50 61 6c 65  |etMode>.<SetPale|
000518d0  74 74 65 3e 0a 3c 53 65  74 50 6f 69 6e 74 65 72  |tte>.<SetPointer|
000518e0  53 68 61 70 65 3e 0a 3c  53 65 74 57 61 74 63 68  |Shape>.<SetWatch|
000518f0  64 6f 67 53 74 61 74 65  3e 0a 3c 53 6c 6f 74 53  |dogState>.<SlotS|
00051900  69 7a 65 3e 0a 3c 53 70  72 69 74 65 4f 70 3e 0a  |ize>.<SpriteOp>.|
00051910  3c 53 74 61 72 74 54 61  73 6b 3e 0a 3c 54 65 78  |<StartTask>.<Tex|
00051920  74 43 6f 6c 6f 75 72 3e  0a 3c 54 65 78 74 4f 70  |tColour>.<TextOp|
00051930  3e 0a 3c 54 72 61 6e 73  66 65 72 42 6c 6f 63 6b  |>.<TransferBlock|
00051940  3e 0a 3c 55 70 64 61 74  65 57 69 6e 64 6f 77 3e  |>.<UpdateWindow>|
00051950  0a 3c 57 68 69 63 68 49  63 6f 6e 3e 0a 23 45 6e  |.<WhichIcon>.#En|
00051960  64 54 61 62 6c 65 0a 0a  52 65 6c 61 74 65 64 20  |dTable..Related |
00051970  74 6f 70 69 63 73 20 3a  0a 23 49 4e 44 45 4e 54  |topics :.#INDENT|
00051980  20 34 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  | 4.#Table Column|
00051990  73 20 33 0a 3c 4d 65 73  73 61 67 65 73 3d 3e 57  |s 3.<Messages=>W|
000519a0  69 6d 70 5f 73 65 6e 64  6d 65 73 73 61 67 65 30  |imp_sendmessage0|
000519b0  3e 0a 3c 50 6f 6c 6c 20  63 6f 64 65 73 3d 3e 57  |>.<Poll codes=>W|
000519c0  69 6d 70 5f 50 6f 6c 6c  3e 0a 3c 57 69 6e 64 6f  |imp_Poll>.<Windo|
000519d0  77 20 66 6c 61 67 73 3d  3e 57 69 6d 70 5f 77 69  |w flags=>Wimp_wi|
000519e0  6e 64 6f 77 66 6c 61 67  73 3e 0a 3c 49 63 6f 6e  |ndowflags>.<Icon|
000519f0  20 66 6c 61 67 73 3d 3e  57 69 6d 70 5f 69 63 6f  | flags=>Wimp_ico|
00051a00  6e 66 6c 61 67 73 3e 0a  3c 49 63 6f 6e 20 62 75  |nflags>.<Icon bu|
00051a10  74 74 6f 6e 73 3d 3e 57  69 6d 70 5f 69 63 6f 6e  |ttons=>Wimp_icon|
00051a20  62 75 74 74 6f 6e 3e 0a  0a 23 45 6e 64 54 61 62  |button>..#EndTab|
00051a30  6c 65 0a 00 44 41 54 41  f2 01 00 00 57 69 6d 70  |le..DATA....Wimp|
00051a40  5f 42 61 73 65 4f 66 53  70 72 69 74 65 73 20 20  |_BaseOfSprites  |
00051a50  28 26 34 30 30 45 41 29  0a 23 50 61 72 65 6e 74  |(&400EA).#Parent|
00051a60  20 57 69 6d 70 5f 0a 5c  3c 3d 09 52 30 20 3d 20  | Wimp_.\<=.R0 = |
00051a70  42 61 73 65 20 6f 66 20  52 4f 4d 20 73 70 72 69  |Base of ROM spri|
00051a80  74 65 73 0a 09 52 31 20  3d 20 42 61 73 65 20 6f  |tes..R1 = Base o|
00051a90  66 20 52 4d 41 20 73 70  72 69 74 65 73 0a 0a 54  |f RMA sprites..T|
00051aa0  68 69 73 20 53 57 49 20  67 69 76 65 73 20 79 6f  |his SWI gives yo|
00051ab0  75 20 74 68 65 20 74 77  6f 20 61 72 65 61 73 20  |u the two areas |
00051ac0  74 68 61 74 20 6d 61 6b  65 73 20 75 70 20 74 68  |that makes up th|
00051ad0  65 20 57 69 6d 70 20 73  70 72 69 74 65 20 70 6f  |e Wimp sprite po|
00051ae0  6f 6c 2e 20 4e 6f 74 65  20 74 68 61 74 20 74 68  |ol. Note that th|
00051af0  65 20 52 4d 41 20 61 72  65 61 20 6d 61 79 20 6d  |e RMA area may m|
00051b00  6f 76 65 20 61 72 6f 75  6e 64 20 28 77 68 65 6e  |ove around (when|
00051b10  20 73 70 72 69 74 65 73  20 61 72 65 20 61 64 64  | sprites are add|
00051b20  65 64 2e 29 0a 0a 59 6f  75 20 63 61 6e 20 75 73  |ed.)..You can us|
00051b30  65 20 74 68 65 73 65 20  61 64 64 72 65 73 73 65  |e these addresse|
00051b40  73 20 77 69 74 68 20 4f  53 5f 53 70 72 69 74 65  |s with OS_Sprite|
00051b50  4f 70 2c 20 62 75 74 20  79 6f 75 20 73 68 6f 75  |Op, but you shou|
00051b60  6c 64 20 61 6c 77 61 79  73 20 75 73 65 20 57 69  |ld always use Wi|
00051b70  6d 70 5f 53 70 72 69 74  65 4f 70 2e 0a 0a 54 68  |mp_SpriteOp...Th|
00051b80  65 20 6f 6e 6c 79 28 3f  29 20 72 65 61 6c 20 75  |e only(?) real u|
00051b90  73 65 20 66 6f 72 20 74  68 69 73 20 53 57 49 2c  |se for this SWI,|
00051ba0  20 69 73 20 66 6f 72 20  73 61 76 69 6e 67 20 74  | is for saving t|
00051bb0  68 65 20 52 4f 4d 20 73  70 72 69 74 65 73 20 74  |he ROM sprites t|
00051bc0  6f 20 61 20 66 69 6c 65  20 3a 0a 0a 20 20 53 59  |o a file :..  SY|
00051bd0  53 20 22 57 69 6d 70 5f  42 61 73 65 4f 66 53 70  |S "Wimp_BaseOfSp|
00051be0  72 69 74 65 73 22 20 54  4f 20 52 4f 4d 42 61 73  |rites" TO ROMBas|
00051bf0  65 25 2c 52 4d 41 42 61  73 65 25 0a 20 20 53 59  |e%,RMABase%.  SY|
00051c00  53 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |S "OS_SpriteOp",|
00051c10  31 32 2c 52 4f 4d 42 61  73 65 25 2c 22 66 69 6c  |12,ROMBase%,"fil|
00051c20  65 6e 61 6d 65 22 00 00  44 41 54 41 22 01 00 00  |ename"..DATA"...|
00051c30  57 69 6d 70 5f 42 6c 6f  63 6b 43 6f 70 79 20 20  |Wimp_BlockCopy  |
00051c40  28 26 34 30 30 45 42 29  0a 23 50 61 72 65 6e 74  |(&400EB).#Parent|
00051c50  20 57 69 6d 70 5f 0a 3d  3e 09 52 30 20 3d 20 57  | Wimp_.=>.R0 = W|
00051c60  69 6e 64 6f 77 20 68 61  6e 64 6c 65 0a 09 52 31  |indow handle..R1|
00051c70  20 3d 20 53 6f 75 72 63  65 09 6d 69 6e 78 20 28  | = Source.minx (|
00051c80  69 6e 63 6c 29 0a 09 52  32 20 3d 09 09 6d 69 6e  |incl)..R2 =..min|
00051c90  79 20 28 69 6e 63 6c 29  0a 09 52 33 20 3d 09 09  |y (incl)..R3 =..|
00051ca0  6d 61 78 78 20 28 65 78  63 6c 29 0a 09 52 34 20  |maxx (excl)..R4 |
00051cb0  3d 09 09 6d 61 78 79 20  28 65 78 63 6c 29 0a 09  |=..maxy (excl)..|
00051cc0  52 35 20 3d 20 44 65 73  74 09 6d 69 6e 78 20 28  |R5 = Dest.minx (|
00051cd0  69 6e 63 6c 29 0a 09 52  36 20 3d 09 09 6d 69 6e  |incl)..R6 =..min|
00051ce0  79 20 28 69 6e 63 6c 29  0a 0a 54 68 69 73 20 53  |y (incl)..This S|
00051cf0  57 49 20 63 6f 70 69 65  73 20 61 73 20 6d 75 63  |WI copies as muc|
00051d00  68 20 61 73 20 70 6f 73  73 69 62 6c 65 20 6f 66  |h as possible of|
00051d10  20 73 6f 75 72 63 65 2d  72 65 63 74 61 6e 67 6c  | source-rectangl|
00051d20  65 2c 20 74 6f 20 67 69  76 65 6e 20 64 65 73 74  |e, to given dest|
00051d30  2e 20 54 68 65 20 72 65  73 74 20 69 73 20 69 6e  |. The rest is in|
00051d40  76 61 6c 69 64 61 74 65  64 2e 00 00 44 41 54 41  |validated...DATA|
00051d50  46 01 00 00 43 61 72 65  74 20 68 65 69 67 68 74  |F...Caret height|
00051d60  20 61 6e 64 20 66 6c 61  67 73 0a 42 69 74 73 09  | and flags.Bits.|
00051d70  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 2d  |Meaning.#Line.0-|
00051d80  31 35 09 48 65 69 67 68  74 20 6f 66 20 63 61 72  |15.Height of car|
00051d90  65 74 20 69 6e 20 4f 53  20 75 6e 69 74 73 2e 0a  |et in OS units..|
00051da0  31 36 2d 32 33 09 43 6f  6c 6f 75 72 20 28 69 66  |16-23.Colour (if|
00051db0  20 62 69 74 20 32 36 20  69 73 20 73 65 74 29 0a  | bit 26 is set).|
00051dc0  32 34 09 31 20 3d 3e 20  55 73 65 20 56 44 55 35  |24.1 => Use VDU5|
00051dd0  20 74 79 70 65 20 63 61  72 65 74 2e 0a 09 30 20  | type caret...0 |
00051de0  3d 3e 20 55 73 65 20 61  6e 74 69 2d 61 6c 69 61  |=> Use anti-alia|
00051df0  73 65 64 20 63 61 72 65  74 2e 0a 32 35 09 31 20  |sed caret..25.1 |
00051e00  3d 3e 20 43 61 72 65 74  20 69 73 20 69 6e 76 69  |=> Caret is invi|
00051e10  73 69 62 6c 65 2e 0a 32  36 09 31 20 3d 3e 20 55  |sible..26.1 => U|
00051e20  73 65 20 62 69 74 73 20  31 36 2d 32 33 20 66 6f  |se bits 16-23 fo|
00051e30  72 20 63 6f 6c 6f 75 72  2e 0a 09 30 20 3d 3e 20  |r colour...0 => |
00051e40  55 73 65 20 77 69 6d 70  20 63 6f 6c 6f 75 72 20  |Use wimp colour |
00051e50  31 31 2e 0a 32 37 09 31  20 3d 3e 20 31 36 2d 32  |11..27.1 => 16-2|
00051e60  33 20 69 73 20 75 6e 74  72 61 6e 73 6c 61 74 65  |3 is untranslate|
00051e70  64 20 63 6f 6c 2e 0a 09  30 20 3d 3e 20 31 36 2d  |d col...0 => 16-|
00051e80  32 33 20 69 73 20 77 69  6d 70 20 63 6f 6c 6f 75  |23 is wimp colou|
00051e90  72 2e 00 00 44 41 54 41  6f 01 00 00 57 69 6d 70  |r...DATAo...Wimp|
00051ea0  5f 43 6c 61 69 6d 46 72  65 65 4d 65 6d 6f 72 79  |_ClaimFreeMemory|
00051eb0  20 20 28 26 34 30 30 45  45 29 0a 23 50 61 72 65  |  (&400EE).#Pare|
00051ec0  6e 74 20 57 69 6d 70 5f  0a 3d 3e 09 52 30 20 3d  |nt Wimp_.=>.R0 =|
00051ed0  20 31 20 74 6f 20 63 6c  61 69 6d 2c 20 30 20 74  | 1 to claim, 0 t|
00051ee0  6f 20 72 65 6c 65 61 73  65 0a 09 52 31 20 3d 20  |o release..R1 = |
00051ef0  61 6d 6f 75 6e 74 20 72  65 71 75 69 72 65 64 0a  |amount required.|
00051f00  0a 5c 3c 3d 09 52 30 20  3d 20 61 6d 6f 75 6e 74  |.\<=.R0 = amount|
00051f10  20 61 76 61 69 6c 61 62  6c 65 0a 09 52 31 20 3d  | available..R1 =|
00051f20  20 73 74 61 72 74 20 61  64 64 72 2c 20 6f 72 20  | start addr, or |
00051f30  30 20 69 66 20 6e 6f 74  20 65 6e 6f 75 67 68 0a  |0 if not enough.|
00051f40  0a 54 68 69 73 20 63 61  6c 6c 20 69 73 20 61 6e  |.This call is an|
00051f50  61 6c 6f 67 6f 75 73 20  74 6f 20 3c 4f 53 5f 43  |alogous to <OS_C|
00051f60  6c 61 69 6d 53 63 72 65  65 6e 4d 65 6d 6f 72 79  |laimScreenMemory|
00051f70  3e 2e 20 49 74 20 63 6c  61 69 6d 73 20 61 6c 6c  |>. It claims all|
00051f80  20 74 68 65 20 6d 65 6d  6f 72 79 20 69 6e 20 74  | the memory in t|
00051f90  68 65 20 66 72 65 65 2d  70 6f 6f 6c 2e 20 54 68  |he free-pool. Th|
00051fa0  65 20 6d 65 6d 6f 72 79  20 6d 75 73 74 20 62 65  |e memory must be|
00051fb0  20 61 63 63 65 73 73 65  64 20 69 6e 20 53 56 43  | accessed in SVC|
00051fc0  2d 6d 6f 64 65 2c 20 61  6e 64 20 57 69 6d 70 5f  |-mode, and Wimp_|
00051fd0  50 6f 6c 6c 20 73 68 6f  75 6c 64 20 6e 6f 74 20  |Poll should not |
00051fe0  62 65 20 63 61 6c 6c 65  64 20 77 68 69 6c 65 20  |be called while |
00051ff0  6d 65 6d 6f 72 79 20 69  73 20 72 65 73 65 72 76  |memory is reserv|
00052000  65 64 2e 00 44 41 54 41  c9 00 00 00 57 69 6d 70  |ed..DATA....Wimp|
00052010  5f 43 6c 6f 73 65 44 6f  77 6e 20 20 28 26 34 30  |_CloseDown  (&40|
00052020  30 44 44 29 0a 23 50 61  72 65 6e 74 20 57 69 6d  |0DD).#Parent Wim|
00052030  70 5f 0a 3d 3e 09 52 30  20 3d 09 54 61 73 6b 68  |p_.=>.R0 =.Taskh|
00052040  61 64 6c 65 20 72 65 74  75 72 6e 65 64 20 62 79  |adle returned by|
00052050  20 3c 57 69 6d 70 5f 49  6e 69 74 69 61 6c 69 73  | <Wimp_Initialis|
00052060  65 3e 0a 09 52 31 20 3d  09 22 54 41 53 4b 22 20  |e>..R1 =."TASK" |
00052070  28 26 34 42 35 33 34 31  35 34 29 0a 0a 54 68 69  |(&4B534154)..Thi|
00052080  73 20 6d 75 73 74 20 62  65 20 63 61 6c 6c 65 64  |s must be called|
00052090  20 69 6d 6d 65 64 69 61  74 65 6c 79 20 62 65 66  | immediately bef|
000520a0  6f 72 65 20 74 68 65 20  74 61 73 6b 20 74 65 72  |ore the task ter|
000520b0  6d 69 6e 61 74 65 73 20  62 79 20 63 61 6c 6c 69  |minates by calli|
000520c0  6e 67 20 3c 4f 53 5f 45  78 69 74 3e 2e 00 00 00  |ng <OS_Exit>....|
000520d0  44 41 54 41 8f 00 00 00  57 69 6d 70 5f 43 6c 6f  |DATA....Wimp_Clo|
000520e0  73 65 54 65 6d 70 6c 61  74 65 20 20 28 26 34 30  |seTemplate  (&40|
000520f0  30 44 41 29 0a 23 50 61  72 65 6e 74 20 57 69 6d  |0DA).#Parent Wim|
00052100  70 5f 0a 54 68 69 73 20  63 61 6c 6c 20 63 6c 6f  |p_.This call clo|
00052110  73 65 73 20 74 68 65 20  63 75 72 72 65 6e 74 6c  |ses the currentl|
00052120  79 20 6f 70 65 6e 20 74  65 6d 70 6c 61 74 65 20  |y open template |
00052130  66 69 6c 65 2c 20 70 72  65 76 69 6f 75 73 6c 79  |file, previously|
00052140  20 6f 70 65 6e 65 64 20  62 79 20 3c 57 69 6d 70  | opened by <Wimp|
00052150  5f 4f 70 65 6e 54 65 6d  70 6c 61 74 65 3e 2e 00  |_OpenTemplate>..|
00052160  44 41 54 41 d1 00 00 00  57 69 6d 70 5f 43 6c 6f  |DATA....Wimp_Clo|
00052170  73 65 57 69 6e 64 6f 77  20 28 26 34 30 30 43 36  |seWindow (&400C6|
00052180  29 0a 23 50 61 72 65 6e  74 20 57 69 6d 70 5f 0a  |).#Parent Wimp_.|
00052190  3d 3e 09 52 31 20 3d 20  50 6f 69 6e 74 65 72 20  |=>.R1 = Pointer |
000521a0  74 6f 20 62 6c 6f 63 6b  20 3a 0a 09 20 20 30 20  |to block :..  0 |
000521b0  20 57 69 6e 64 6f 77 20  68 61 6e 64 6c 65 0a 0a  | Window handle..|
000521c0  54 68 69 73 20 63 61 6c  6c 20 72 65 6d 6f 76 65  |This call remove|
000521d0  73 20 74 68 65 20 77 69  6e 64 6f 77 20 66 72 6f  |s the window fro|
000521e0  6d 20 74 68 65 20 6c 69  73 74 20 6f 66 20 61 63  |m the list of ac|
000521f0  74 69 76 65 20 77 69 6e  64 6f 77 73 2e 0a 0a 54  |tive windows...T|
00052200  68 65 20 57 69 6d 70 20  77 69 6c 6c 20 69 73 73  |he Wimp will iss|
00052210  75 65 20 61 6e 79 20 6e  65 63 65 73 73 61 72 79  |ue any necessary|
00052220  20 72 65 64 72 61 77 20  6d 65 73 73 61 67 65 73  | redraw messages|
00052230  2e 00 00 00 44 41 54 41  5e 02 00 00 57 69 6d 70  |....DATA^...Wimp|
00052240  5f 43 6f 6d 6d 61 6e 64  57 69 6e 64 6f 77 20 20  |_CommandWindow  |
00052250  28 26 34 30 30 45 46 29  0a 23 50 61 72 65 6e 74  |(&400EF).#Parent|
00052260  20 57 69 6d 70 5f 0a 3d  3e 09 52 30 20 3d 20 6f  | Wimp_.=>.R0 = o|
00052270  70 65 72 61 74 69 6f 6e  0a 0a 23 54 61 62 0a 4f  |peration..#Tab.O|
00052280  70 65 72 61 74 69 6f 6e  73 0a 20 2d 31 09 43 6f  |perations. -1.Co|
00052290  6d 6d 61 6e 64 20 77 69  6e 64 6f 77 20 69 73 20  |mmand window is |
000522a0  63 6c 6f 73 65 64 20 77  68 65 74 68 65 72 20 69  |closed whether i|
000522b0  74 20 69 73 20 77 61 73  20 75 73 65 64 20 6f 72  |t is was used or|
000522c0  20 6e 6f 74 2e 0a 20 20  30 09 53 61 6d 65 20 61  | not..  0.Same a|
000522d0  73 20 2d 31 2c 20 62 75  74 20 69 66 20 6f 75 74  |s -1, but if out|
000522e0  70 75 74 2c 20 64 6f 20  61 20 22 50 72 65 73 73  |put, do a "Press|
000522f0  20 53 50 41 43 45 20 6f  72 20 63 6c 69 63 6b 20  | SPACE or click |
00052300  6d 6f 75 73 65 20 74 6f  20 63 6f 6e 74 69 6e 75  |mouse to continu|
00052310  65 22 0a 20 20 31 09 43  6f 6d 6d 61 6e 64 20 77  |e".  1.Command w|
00052320  69 6e 64 6f 77 20 69 73  20 73 65 74 20 74 6f 20  |indow is set to |
00052330  27 61 63 74 69 76 65 27  0a 20 3e 31 09 50 6f 69  |'active'. >1.Poi|
00052340  6e 74 65 72 20 74 6f 20  74 69 74 6c 65 2e 20 43  |nter to title. C|
00052350  6f 6d 6d 61 6e 64 20 77  69 6e 64 6f 77 20 69 73  |ommand window is|
00052360  20 73 65 74 20 74 6f 20  27 70 65 6e 64 69 6e 67  | set to 'pending|
00052370  27 2c 20 61 6e 64 20 6e  65 78 74 20 74 69 6d 65  |', and next time|
00052380  20 56 44 55 34 20 6f 75  74 70 75 74 20 69 73 20  | VDU4 output is |
00052390  67 65 6e 65 72 61 74 65  64 2c 20 74 68 65 20 77  |generated, the w|
000523a0  69 6e 64 6f 77 20 77 69  6c 6c 20 6f 70 65 6e 2e  |indow will open.|
000523b0  0a 0a 54 68 69 73 20 53  57 49 20 6f 70 65 6e 73  |..This SWI opens|
000523c0  20 61 20 74 65 78 74 77  69 6e 64 6f 77 20 69 6e  | a textwindow in|
000523d0  20 77 68 69 63 68 20 56  44 55 34 2d 74 79 70 65  | which VDU4-type|
000523e0  20 6f 75 74 70 75 74 20  63 61 6e 20 62 65 20 64  | output can be d|
000523f0  69 73 70 6c 61 79 65 64  2e 0a 0a 57 68 65 6e 20  |isplayed...When |
00052400  74 68 65 20 57 69 6d 70  20 73 74 61 72 74 73 20  |the Wimp starts |
00052410  61 20 74 61 73 6b 2c 20  69 74 20 64 6f 65 73 20  |a task, it does |
00052420  61 0a 20 20 53 59 53 20  22 57 69 6d 70 5f 43 6f  |a.  SYS "Wimp_Co|
00052430  6d 6d 61 6e 64 57 69 6e  64 6f 77 22 2c 22 70 72  |mmandWindow","pr|
00052440  6f 67 72 61 6d 20 6e 61  6d 65 22 0a 57 68 65 6e  |ogram name".When|
00052450  20 57 69 6d 70 5f 49 6e  69 74 69 61 6c 69 73 65  | Wimp_Initialise|
00052460  20 69 73 20 72 65 61 63  68 65 64 2c 20 69 74 20  | is reached, it |
00052470  64 6f 65 73 0a 20 20 53  59 53 20 22 57 69 6d 70  |does.  SYS "Wimp|
00052480  5f 43 6f 6d 6d 61 6e 64  57 69 6e 64 6f 77 22 2c  |_CommandWindow",|
00052490  2d 31 00 00 44 41 54 41  aa 02 00 00 57 69 6d 70  |-1..DATA....Wimp|
000524a0  5f 43 72 65 61 74 65 49  63 6f 6e 20 20 28 26 34  |_CreateIcon  (&4|
000524b0  30 30 43 32 29 0a 23 50  61 72 65 6e 74 20 57 69  |00C2).#Parent Wi|
000524c0  6d 70 5f 0a 3d 3e 09 52  31 20 3d 09 50 6f 69 6e  |mp_.=>.R1 =.Poin|
000524d0  74 65 72 20 74 6f 20 62  6c 6f 63 6b 20 3a 0a 09  |ter to block :..|
000524e0  09 30 2e 2e 33 09 57 69  6e 64 6f 77 20 68 61 6e  |.0..3.Window han|
000524f0  64 6c 65 2c 20 6f 72 20  3c 69 63 6f 6e 62 61 72  |dle, or <iconbar|
00052500  20 6c 6f 63 61 74 69 6f  6e 3d 3e 2e 70 6f 73 69  | location=>.posi|
00052510  74 69 6f 6e 3e 0a 09 09  34 2e 2e 33 31 09 3c 49  |tion>...4..31.<I|
00052520  63 6f 6e 20 62 6c 6f 63  6b 3d 3e 57 69 6d 70 5f  |con block=>Wimp_|
00052530  69 63 6f 6e 62 6c 6f 63  6b 3e 0a 0a 5c 3c 3d 09  |iconblock>..\<=.|
00052540  52 30 20 3d 09 69 63 6f  6e 20 68 61 6e 64 6c 65  |R0 =.icon handle|
00052550  20 28 75 6e 69 71 75 65  20 77 69 74 68 69 6e 20  | (unique within |
00052560  77 69 6e 64 6f 77 29 0a  0a 54 68 69 73 20 53 57  |window)..This SW|
00052570  49 20 61 64 64 73 20 61  20 6e 65 77 20 69 63 6f  |I adds a new ico|
00052580  6e 20 74 6f 20 61 20 77  69 6e 64 6f 77 2e 0a 23  |n to a window..#|
00052590  0a 23 53 75 62 70 61 67  65 20 70 6f 73 69 74 69  |.#Subpage positi|
000525a0  6f 6e 0a 49 63 6f 6e 62  61 72 20 70 6f 73 69 74  |on.Iconbar posit|
000525b0  69 6f 6e 73 0a 56 61 6c  75 65 09 4d 65 61 6e 69  |ions.Value.Meani|
000525c0  6e 67 0a 23 4c 69 6e 65  0a 2d 31 09 52 69 67 68  |ng.#Line.-1.Righ|
000525d0  74 20 73 69 64 65 20 6f  66 20 69 63 6f 6e 20 62  |t side of icon b|
000525e0  61 72 0a 2d 32 09 4c 65  66 74 20 73 69 64 65 20  |ar.-2.Left side |
000525f0  6f 66 20 69 63 6f 6e 20  62 61 72 0a 2d 33 09 4c  |of icon bar.-3.L|
00052600  65 66 74 20 72 65 6c 61  74 69 76 65 0a 2d 34 09  |eft relative.-4.|
00052610  52 69 67 68 74 20 72 65  6c 61 74 69 76 65 0a 2d  |Right relative.-|
00052620  35 09 4c 65 66 74 20 68  69 67 68 20 70 72 69 6f  |5.Left high prio|
00052630  72 69 74 79 0a 2d 36 09  4c 65 66 74 20 6c 6f 77  |rity.-6.Left low|
00052640  20 70 72 69 6f 72 69 74  79 0a 2d 37 09 52 69 67  | priority.-7.Rig|
00052650  68 74 20 6c 6f 77 20 70  72 69 6f 72 69 74 79 0a  |ht low priority.|
00052660  2d 38 09 52 69 67 68 74  20 68 69 67 68 20 70 72  |-8.Right high pr|
00052670  69 6f 72 69 74 79 0a 0a  54 68 65 20 61 63 74 75  |iority..The actu|
00052680  61 6c 20 6d 65 61 6e 69  6e 67 20 6f 66 20 61 6e  |al meaning of an|
00052690  79 20 6f 66 20 74 68 69  73 20 69 73 20 73 6f 6d  |y of this is som|
000526a0  65 77 68 61 74 20 75 6e  63 6c 65 61 72 20 74 6f  |ewhat unclear to|
000526b0  20 6d 65 2c 20 62 75 74  20 49 20 74 68 69 6e 6b  | me, but I think|
000526c0  20 74 68 61 74 20 69 66  20 52 30 20 69 73 20 73  | that if R0 is s|
000526d0  65 74 20 74 6f 20 61 6e  20 69 63 6f 6e 20 6e 75  |et to an icon nu|
000526e0  6d 62 65 72 20 28 66 6f  72 20 72 65 6c 61 74 69  |mber (for relati|
000526f0  76 65 29 20 6f 72 20 61  20 76 61 6c 75 65 20 78  |ve) or a value x|
00052700  5c 3c 5c 3c 32 38 2c 20  74 68 65 6e 20 74 68 65  |\<\<28, then the|
00052710  20 70 6f 73 69 74 69 6f  6e 20 77 69 6c 6c 20 63  | position will c|
00052720  68 61 6e 67 65 20 72 65  6c 61 74 69 76 65 20 74  |hange relative t|
00052730  6f 20 6f 74 68 65 72 20  69 63 6f 6e 73 2e 00 00  |o other icons...|
00052740  44 41 54 41 80 05 00 00  57 69 6d 70 5f 43 72 65  |DATA....Wimp_Cre|
00052750  61 74 65 4d 65 6e 75 20  20 28 26 34 30 30 44 34  |ateMenu  (&400D4|
00052760  29 0a 23 50 61 72 65 6e  74 20 57 69 6d 70 5f 0a  |).#Parent Wimp_.|
00052770  3d 3e 09 52 31 09 3d 09  70 6f 69 6e 74 65 72 20  |=>.R1.=.pointer |
00052780  74 6f 20 3c 6d 65 6e 75  20 62 6c 6f 63 6b 3d 3e  |to <menu block=>|
00052790  2e 62 6c 6f 63 6b 3e 0a  09 52 32 2c 52 33 09 3d  |.block>..R2,R3.=|
000527a0  09 78 2c 79 20 63 6f 6f  72 64 69 6e 61 74 65 20  |.x,y coordinate |
000527b0  6f 66 20 74 6f 70 2d 6c  65 66 74 20 63 6f 72 6e  |of top-left corn|
000527c0  65 72 20 6f 66 20 74 6f  70 2d 6c 65 76 65 6c 20  |er of top-level |
000527d0  6d 65 6e 75 2e 0a 0a 49  66 20 52 31 20 3d 20 2d  |menu...If R1 = -|
000527e0  31 20 6f 6e 20 65 6e 74  72 79 2c 20 74 68 65 6e  |1 on entry, then|
000527f0  20 61 6e 79 20 6f 70 65  6e 20 6d 65 6e 75 20 77  | any open menu w|
00052800  69 6c 6c 20 62 65 20 63  6c 6f 73 65 64 2e 20 49  |ill be closed. I|
00052810  66 20 52 31 20 69 73 20  61 20 77 69 6e 64 6f 77  |f R1 is a window|
00052820  20 68 61 6e 64 6c 65 2c  20 74 68 65 6e 20 74 68  | handle, then th|
00052830  69 73 20 77 69 6e 64 6f  77 20 77 69 6c 6c 20 62  |is window will b|
00052840  65 20 6f 70 65 6e 65 64  20 61 73 20 61 20 6d 65  |e opened as a me|
00052850  6e 75 2e 0a 23 0a 23 53  75 62 70 61 67 65 20 62  |nu..#.#Subpage b|
00052860  6c 6f 63 6b 0a 4d 65 6e  75 20 62 6c 6f 63 6b 0a  |lock.Menu block.|
00052870  20 20 30 09 6d 65 6e 75  20 74 69 74 6c 65 20 28  |  0.menu title (|
00052880  69 66 20 30 20 73 74 72  69 6e 67 2c 20 6e 6f 20  |if 0 string, no |
00052890  74 69 74 6c 65 29 0a 20  31 32 09 74 69 74 6c 65  |title). 12.title|
000528a0  20 66 6f 72 65 67 72 6f  75 6e 64 20 61 6e 64 20  | foreground and |
000528b0  66 72 61 6d 65 20 63 6f  6c 6f 75 72 09 44 65 66  |frame colour.Def|
000528c0  3a 20 20 37 0a 20 31 33  09 74 69 74 6c 65 20 62  |:  7. 13.title b|
000528d0  61 63 6b 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |ackground colour|
000528e0  09 09 09 44 65 66 3a 20  20 32 0a 20 31 34 09 77  |...Def:  2. 14.w|
000528f0  6f 72 6b 2d 61 72 65 61  20 66 6f 72 65 67 72 6f  |ork-area foregro|
00052900  75 6e 64 20 63 6f 6c 6f  75 72 09 09 44 65 66 3a  |und colour..Def:|
00052910  20 20 37 0a 20 31 35 09  77 6f 72 6b 2d 61 72 65  |  7. 15.work-are|
00052920  61 20 62 61 63 6b 67 72  6f 75 6e 64 20 63 6f 6c  |a background col|
00052930  6f 75 72 09 09 28 44 65  66 3a 20 20 30 29 0a 20  |our..(Def:  0). |
00052940  31 36 09 77 69 64 74 68  20 6f 66 20 6d 65 6e 75  |16.width of menu|
00052950  20 69 74 65 6d 73 0a 20  32 30 09 68 65 69 67 68  | items. 20.heigh|
00052960  74 20 6f 66 20 6d 65 6e  75 20 69 74 65 6d 73 09  |t of menu items.|
00052970  09 09 44 65 66 3a 20 34  34 0a 20 32 34 09 76 65  |..Def: 44. 24.ve|
00052980  72 74 69 63 61 6c 20 67  61 70 20 62 65 74 77 65  |rtical gap betwe|
00052990  65 6e 20 69 74 65 6d 73  09 09 44 65 66 3a 20 20  |en items..Def:  |
000529a0  30 0a 20 32 38 09 3c 6d  65 6e 75 20 69 74 65 6d  |0. 28.<menu item|
000529b0  73 3d 3e 2e 69 74 65 6d  3e 20 28 32 34 20 62 79  |s=>.item> (24 by|
000529c0  74 65 73 20 65 61 63 68  29 0a 0a 49 66 20 62 69  |tes each)..If bi|
000529d0  74 20 38 20 6f 66 20 74  68 65 20 66 6c 61 67 73  |t 8 of the flags|
000529e0  20 66 6f 72 20 74 68 65  20 66 69 72 73 74 20 69  | for the first i|
000529f0  74 65 6d 20 69 73 20 73  65 74 2c 20 74 68 65 6e  |tem is set, then|
00052a00  20 74 68 65 20 6d 65 6e  75 74 69 74 6c 65 20 69  | the menutitle i|
00052a10  73 20 69 6e 64 69 72 65  63 74 65 64 2c 20 61 6e  |s indirected, an|
00052a20  64 20 74 68 65 20 33 20  66 69 72 73 74 20 77 6f  |d the 3 first wo|
00052a30  72 64 73 20 61 72 65 20  61 73 20 66 6f 72 20 61  |rds are as for a|
00052a40  6e 20 69 6e 64 69 72 65  63 74 65 64 20 74 65 78  |n indirected tex|
00052a50  74 69 63 6f 6e 2e 0a 0a  49 66 20 6d 65 6e 75 74  |ticon...If menut|
00052a60  69 74 6c 65 20 62 65 67  69 6e 73 20 77 69 74 68  |itle begins with|
00052a70  20 61 6e 20 22 5c 5c 22  2c 20 74 68 65 6e 20 74  | an "\\", then t|
00052a80  68 69 73 20 6d 65 6e 75  20 61 6e 64 20 61 6c 6c  |his menu and all|
00052a90  20 69 74 73 20 73 75 62  6d 65 6e 75 73 20 61 72  | its submenus ar|
00052aa0  65 20 22 72 65 76 65 72  73 65 64 22 0a 23 0a 23  |e "reversed".#.#|
00052ab0  53 75 62 70 61 67 65 20  69 74 65 6d 0a 4d 65 6e  |Subpage item.Men|
00052ac0  75 20 69 74 65 6d 0a 23  77 72 61 70 20 6f 66 66  |u item.#wrap off|
00052ad0  0a 20 20 30 09 3c 69 74  65 6d 20 66 6c 61 67 73  |.  0.<item flags|
00052ae0  3d 3e 2e 66 6c 61 67 73  3e 0a 20 20 34 09 73 75  |=>.flags>.  4.su|
00052af0  62 6d 65 6e 75 20 70 74  72 2c 20 6f 72 20 77 69  |bmenu ptr, or wi|
00052b00  6e 64 6f 77 20 68 61 6e  64 6c 65 20 6f 72 20 2d  |ndow handle or -|
00052b10  31 20 69 66 20 6e 6f 74  68 69 6e 67 0a 20 20 38  |1 if nothing.  8|
00052b20  09 3c 69 63 6f 6e 20 66  6c 61 67 73 3d 3e 77 69  |.<icon flags=>wi|
00052b30  6d 70 5f 69 63 6f 6e 66  6c 61 67 73 3e 20 28 61  |mp_iconflags> (a|
00052b40  73 20 66 6f 72 20 6e 6f  72 6d 61 6c 20 69 63 6f  |s for normal ico|
00052b50  6e 29 0a 20 31 32 09 31  32 20 62 79 74 65 73 20  |n). 12.12 bytes |
00052b60  6f 66 20 3c 69 63 6f 6e  20 64 61 74 61 3d 3e 77  |of <icon data=>w|
00052b70  69 6d 70 5f 69 63 6f 6e  64 61 74 61 3e 20 28 61  |imp_icondata> (a|
00052b80  73 20 66 6f 72 20 6e 6f  72 6d 61 6c 20 69 63 6f  |s for normal ico|
00052b90  6e 29 0a 23 0a 23 53 75  62 70 61 67 65 20 66 6c  |n).#.#Subpage fl|
00052ba0  61 67 73 0a 49 74 65 6d  20 66 6c 61 67 73 0a 42  |ags.Item flags.B|
00052bb0  69 74 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |it.Meaning.#Line|
00052bc0  0a 30 09 54 69 63 6b 20  74 6f 20 6c 65 66 74 20  |.0.Tick to left |
00052bd0  6f 66 20 69 74 65 6d 0a  31 09 44 6f 74 74 65 64  |of item.1.Dotted|
00052be0  20 6c 69 6e 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  | line following |
00052bf0  69 74 65 6d 0a 32 09 49  74 65 6d 20 69 73 20 77  |item.2.Item is w|
00052c00  72 69 74 61 62 6c 65 0a  33 09 47 65 6e 65 72 61  |ritable.3.Genera|
00052c10  74 65 20 6d 65 73 73 61  67 65 20 77 68 65 6e 20  |te message when |
00052c20  73 75 62 6d 65 6e 75 0a  34 20 2b 09 53 75 62 6d  |submenu.4 +.Subm|
00052c30  65 6e 75 20 63 61 6e 20  62 65 20 6f 70 65 6e 65  |enu can be opene|
00052c40  64 20 65 76 65 6e 20 77  68 65 6e 20 67 72 65 79  |d even when grey|
00052c50  65 64 20 6f 75 74 0a 37  09 54 68 69 73 20 69 73  |ed out.7.This is|
00052c60  20 6c 61 73 74 20 69 74  65 6d 20 69 6e 20 6d 65  | last item in me|
00052c70  6e 75 0a 38 20 2b 09 28  4f 6e 6c 79 20 69 6e 20  |nu.8 +.(Only in |
00052c80  66 69 72 73 74 20 6d 65  6e 75 69 74 65 6d 29 20  |first menuitem) |
00052c90  4d 65 6e 75 20 74 69 74  6c 65 20 69 73 20 69 6e  |Menu title is in|
00052ca0  64 69 72 65 63 74 65 64  0a 0a 52 65 73 74 20 6f  |directed..Rest o|
00052cb0  66 20 62 69 74 73 20 6d  75 73 74 20 62 65 20 30  |f bits must be 0|
00052cc0  44 41 54 41 54 01 00 00  57 69 6d 70 5f 43 72 65  |DATAT...Wimp_Cre|
00052cd0  61 74 65 53 75 62 4d 65  6e 75 20 20 28 26 34 30  |ateSubMenu  (&40|
00052ce0  30 45 38 29 0a 23 50 61  72 65 6e 74 20 57 69 6d  |0E8).#Parent Wim|
00052cf0  70 5f 0a 3d 3e 09 52 31  09 3d 09 70 74 72 20 74  |p_.=>.R1.=.ptr t|
00052d00  6f 20 3c 73 75 62 6d 65  6e 75 20 62 6c 6f 63 6b  |o <submenu block|
00052d10  3d 3e 77 69 6d 70 5f 6d  65 6e 75 62 6c 6f 63 6b  |=>wimp_menublock|
00052d20  3e 2c 20 6f 72 20 77 69  6e 64 6f 77 20 68 61 6e  |>, or window han|
00052d30  64 6c 65 0a 09 52 32 2c  52 33 09 3d 09 78 2c 79  |dle..R2,R3.=.x,y|
00052d40  20 63 6f 6f 72 64 69 6e  61 74 65 20 6f 66 20 74  | coordinate of t|
00052d50  6f 70 2d 6c 65 66 74 20  6f 66 20 73 75 62 6d 65  |op-left of subme|
00052d60  6e 75 2e 0a 0a 54 68 69  73 20 63 61 6c 6c 20 69  |nu...This call i|
00052d70  73 20 6d 61 64 65 20 77  68 65 6e 20 61 20 4d 65  |s made when a Me|
00052d80  6e 75 57 61 72 6e 69 6e  67 20 6d 65 73 73 61 67  |nuWarning messag|
00052d90  65 20 69 73 20 72 65 63  65 69 76 65 64 2e 20 54  |e is received. T|
00052da0  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 73  |his message is s|
00052db0  65 6e 74 20 62 79 20 57  69 6d 70 20 77 68 65 6e  |ent by Wimp when|
00052dc0  20 70 6f 69 6e 74 65 72  20 69 73 20 6f 76 65 72  | pointer is over|
00052dd0  20 74 68 65 20 73 75 62  6d 65 6e 75 20 61 72 72  | the submenu arr|
00052de0  6f 77 20 6f 66 20 61 20  6d 65 6e 75 20 69 74 65  |ow of a menu ite|
00052df0  6d 20 77 69 74 68 20 74  68 65 20 47 65 6e 65 72  |m with the Gener|
00052e00  61 74 65 20 4d 65 73 73  61 67 65 20 62 69 74 20  |ate Message bit |
00052e10  73 65 74 2e 44 41 54 41  07 01 00 00 57 69 6d 70  |set.DATA....Wimp|
00052e20  5f 43 72 65 61 74 65 57  69 6e 64 6f 77 20 20 28  |_CreateWindow  (|
00052e30  26 34 30 30 43 31 29 0a  23 50 61 72 65 6e 74 20  |&400C1).#Parent |
00052e40  57 69 6d 70 5f 0a 3d 3e  09 52 31 20 3d 20 50 6f  |Wimp_.=>.R1 = Po|
00052e50  69 6e 74 65 72 20 74 6f  20 3c 77 69 6e 64 6f 77  |inter to <window|
00052e60  20 62 6c 6f 63 6b 3d 3e  77 69 6d 70 5f 77 69 6e  | block=>wimp_win|
00052e70  64 6f 77 62 6c 6f 63 6b  3e 0a 5c 3c 3d 09 52 30  |dowblock>.\<=.R0|
00052e80  20 3d 20 57 69 6e 64 6f  77 20 68 61 6e 64 6c 65  | = Window handle|
00052e90  0a 0a 54 68 69 73 20 74  65 6c 6c 73 20 74 68 65  |..This tells the|
00052ea0  20 57 69 6d 70 20 77 68  61 74 20 74 68 65 20 63  | Wimp what the c|
00052eb0  68 61 72 61 63 74 65 72  69 73 74 69 63 73 20 6f  |haracteristics o|
00052ec0  66 20 61 20 77 69 6e 64  6f 77 20 61 72 65 2e 20  |f a window are. |
00052ed0  54 68 65 20 57 69 6d 70  20 74 61 6b 65 73 20 61  |The Wimp takes a|
00052ee0  20 63 6f 70 79 20 6f 66  20 74 68 69 73 20 62 6c  | copy of this bl|
00052ef0  6f 63 6b 2c 20 73 6f 20  79 6f 75 20 63 6f 75 6c  |ock, so you coul|
00052f00  64 20 74 68 72 6f 77 20  69 74 20 61 77 61 79 20  |d throw it away |
00052f10  61 66 74 65 72 77 61 72  64 73 2e 00 44 41 54 41  |afterwards..DATA|
00052f20  fb 01 00 00 57 69 6d 70  5f 44 65 63 6f 64 65 4d  |....Wimp_DecodeM|
00052f30  65 6e 75 20 20 28 26 34  30 30 44 35 29 0a 23 50  |enu  (&400D5).#P|
00052f40  61 72 65 6e 74 20 57 69  6d 70 5f 0a 3d 3e 09 52  |arent Wimp_.=>.R|
00052f50  31 20 3d 20 70 6f 69 6e  74 65 72 20 74 6f 20 6d  |1 = pointer to m|
00052f60  65 6e 75 20 64 61 74 61  20 73 74 72 75 63 74 75  |enu data structu|
00052f70  72 65 0a 09 52 32 20 3d  20 70 6f 69 6e 74 65 72  |re..R2 = pointer|
00052f80  20 74 6f 20 6c 69 73 74  20 6f 66 20 6d 65 6e 75  | to list of menu|
00052f90  73 65 6c 65 63 74 69 6f  6e 73 0a 09 52 33 20 3d  |selections..R3 =|
00052fa0  20 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  | pointer to buff|
00052fb0  65 72 20 66 6f 72 20 61  6e 73 77 65 72 2e 0a 0a  |er for answer...|
00052fc0  5c 3c 3d 09 42 75 66 66  65 72 20 70 6f 69 6e 74  |\<=.Buffer point|
00052fd0  65 64 20 74 6f 20 62 79  20 52 33 2c 20 63 6f 6e  |ed to by R3, con|
00052fe0  74 61 69 6e 73 20 6d 65  6e 75 20 69 74 65 6d 20  |tains menu item |
00052ff0  74 65 78 74 73 2c 20 73  65 70 61 72 61 74 65 64  |texts, separated|
00053000  20 62 79 20 27 2e 27 73  0a 0a 54 68 69 73 20 53  | by '.'s..This S|
00053010  57 49 20 69 73 6e 27 74  20 74 6f 6f 20 75 73 65  |WI isn't too use|
00053020  66 75 6c 2e 20 54 68 65  20 6f 6e 6c 79 20 75 73  |ful. The only us|
00053030  65 20 49 20 63 61 6e 20  74 68 69 6e 6b 20 6f 66  |e I can think of|
00053040  2c 20 69 73 20 69 6e 20  73 6f 6d 65 74 68 69 6e  |, is in somethin|
00053050  67 20 6c 69 6b 65 20 61  20 66 6f 6e 74 20 6d 65  |g like a font me|
00053060  6e 75 20 3a 20 54 68 65  20 6d 65 6e 75 20 27 54  |nu : The menu 'T|
00053070  72 69 6e 69 74 79 27 20  63 6f 6e 74 61 69 6e 73  |rinity' contains|
00053080  2c 20 61 6d 6f 6e 67 20  6f 74 68 65 72 73 2c 20  |, among others, |
00053090  27 4d 65 64 69 75 6d 27  2e 20 53 6f 2c 20 77 68  |'Medium'. So, wh|
000530a0  65 6e 20 74 68 65 20 75  73 65 72 20 73 65 6c 65  |en the user sele|
000530b0  63 74 73 20 61 20 66 6f  6e 74 2c 20 79 6f 75 20  |cts a font, you |
000530c0  75 73 65 20 74 68 69 73  20 63 61 6c 6c 20 74 6f  |use this call to|
000530d0  20 67 65 74 20 74 68 65  20 73 74 72 69 6e 67 20  | get the string |
000530e0  27 54 72 69 6e 69 74 79  2e 4d 65 64 69 75 6d 27  |'Trinity.Medium'|
000530f0  0a 0a 41 6e 79 77 61 79  3a 20 49 20 68 61 76 65  |..Anyway: I have|
00053100  6e 27 74 20 75 73 65 64  20 74 68 69 73 20 53 57  |n't used this SW|
00053110  49 20 79 65 74 2e 2e 00  44 41 54 41 57 01 00 00  |I yet...DATAW...|
00053120  57 69 6d 70 5f 44 65 6c  65 74 65 49 63 6f 6e 20  |Wimp_DeleteIcon |
00053130  20 28 26 34 30 30 43 34  29 0a 23 50 61 72 65 6e  | (&400C4).#Paren|
00053140  74 20 57 69 6d 70 5f 0a  3d 3e 09 52 31 20 3d 20  |t Wimp_.=>.R1 = |
00053150  70 6f 69 6e 74 65 72 20  74 6f 20 3a 0a 09 20 20  |pointer to :..  |
00053160  30 20 20 57 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |0  Window handle|
00053170  20 20 28 6f 72 20 2d 31  2c 2d 32 20 66 6f 72 20  |  (or -1,-2 for |
00053180  69 63 6f 6e 62 61 72 29  0a 09 20 20 34 20 20 49  |iconbar)..  4  I|
00053190  63 6f 6e 20 68 61 6e 64  6c 65 0a 0a 54 68 69 73  |con handle..This|
000531a0  20 53 57 49 20 72 65 6d  6f 76 65 73 20 74 68 65  | SWI removes the|
000531b0  20 64 65 66 69 6e 69 74  69 6f 6e 20 6f 66 20 74  | definition of t|
000531c0  68 65 20 67 69 76 65 6e  20 69 63 6f 6e 2e 20 49  |he given icon. I|
000531d0  66 20 69 74 20 69 73 20  74 68 65 20 6c 61 73 74  |f it is the last|
000531e0  20 69 63 6f 6e 20 69 6e  20 74 68 65 20 77 69 6e  | icon in the win|
000531f0  64 6f 77 73 20 6c 69 73  74 2c 20 74 68 65 20 6d  |dows list, the m|
00053200  65 6d 6f 72 79 20 69 73  20 72 65 61 6c 6c 6f 63  |emory is realloc|
00053210  61 74 65 64 2c 20 69 66  20 6e 6f 74 20 69 74 20  |ated, if not it |
00053220  69 73 20 6f 6e 6c 79 20  6d 61 72 6b 65 64 20 61  |is only marked a|
00053230  73 20 64 65 6c 65 74 65  64 2e 0a 0a 54 6f 20 75  |s deleted...To u|
00053240  70 64 61 74 65 20 73 63  72 65 65 6e 2c 20 79 6f  |pdate screen, yo|
00053250  75 20 6d 75 73 74 20 63  61 6c 6c 20 3c 57 69 6d  |u must call <Wim|
00053260  70 5f 46 6f 72 63 65 52  65 64 72 61 77 3e 2e 00  |p_ForceRedraw>..|
00053270  44 41 54 41 08 01 00 00  57 69 6d 70 5f 44 65 6c  |DATA....Wimp_Del|
00053280  65 74 65 57 69 6e 64 6f  77 20 20 28 26 34 30 30  |eteWindow  (&400|
00053290  43 33 29 0a 23 50 61 72  65 6e 74 20 57 69 6d 70  |C3).#Parent Wimp|
000532a0  5f 0a 3d 3e 09 52 31 20  3d 20 70 6f 69 6e 74 65  |_.=>.R1 = pointe|
000532b0  72 20 74 6f 20 62 6c 6f  63 6b 20 3a 0a 09 20 20  |r to block :..  |
000532c0  30 20 20 57 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |0  Window handle|
000532d0  0a 0a 54 68 69 73 20 53  57 49 20 63 6c 6f 73 65  |..This SWI close|
000532e0  73 20 74 68 65 20 77 69  6e 64 6f 77 20 69 66 20  |s the window if |
000532f0  69 74 20 69 73 20 6f 70  65 6e 2c 20 61 6e 64 20  |it is open, and |
00053300  74 68 65 6e 20 72 65 61  6c 6c 6f 63 61 74 65 73  |then reallocates|
00053310  20 74 68 65 20 6d 65 6d  6f 72 79 20 75 73 65 64  | the memory used|
00053320  20 69 6e 20 57 69 6d 70  20 77 6f 72 6b 73 70 61  | in Wimp workspa|
00053330  63 65 2e 20 28 69 6e 64  69 72 65 63 74 65 64 20  |ce. (indirected |
00053340  64 61 74 61 20 69 6e 20  41 70 70 6c 69 63 61 74  |data in Applicat|
00053350  69 6f 6e 20 77 6f 72 6b  73 70 61 63 65 2c 20 69  |ion workspace, i|
00053360  73 20 6c 65 66 74 20 61  6c 6f 6e 65 20 6f 66 20  |s left alone of |
00053370  63 6f 75 72 73 65 29 2e  44 41 54 41 b3 01 00 00  |course).DATA....|
00053380  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
00053390  20 20 28 26 34 30 30 44  31 29 0a 23 50 61 72 65  |  (&400D1).#Pare|
000533a0  6e 74 20 57 69 6d 70 5f  0a 3d 3e 09 52 30 20 3d  |nt Wimp_.=>.R0 =|
000533b0  20 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 20 28  | window handle (|
000533c0  2d 31 20 66 6f 72 20 77  68 6f 6c 65 20 73 63 72  |-1 for whole scr|
000533d0  65 65 6e 29 0a 09 52 31  20 3d 20 6d 69 6e 20 78  |een)..R1 = min x|
000533e0  0a 09 52 32 20 3d 20 6d  69 6e 20 79 0a 09 52 33  |..R2 = min y..R3|
000533f0  20 3d 20 6d 61 78 20 78  0a 09 52 34 20 3d 20 6d  | = max x..R4 = m|
00053400  61 78 20 79 0a 0a 5c 3c  3d 09 52 30 20 63 6f 72  |ax y..\<=.R0 cor|
00053410  72 75 70 74 65 64 0a 0a  54 68 69 73 20 53 57 49  |rupted..This SWI|
00053420  20 6d 61 72 6b 73 20 61  72 65 61 20 6f 66 20 73  | marks area of s|
00053430  63 72 65 65 6e 20 61 73  20 69 6e 76 61 6c 69 64  |creen as invalid|
00053440  2c 20 61 6e 64 20 74 6f  20 62 65 20 72 65 64 72  |, and to be redr|
00053450  61 77 6e 20 6c 61 74 65  72 2e 0a 0a 49 66 20 52  |awn later...If R|
00053460  30 20 3d 20 2d 31 20 74  68 65 6e 20 52 31 2e 2e  |0 = -1 then R1..|
00053470  52 34 20 61 72 65 20 69  6e 20 61 62 73 6f 6c 75  |R4 are in absolu|
00053480  74 65 20 63 6f 6f 72 64  73 2c 20 65 6c 73 65 20  |te coords, else |
00053490  74 68 65 79 20 61 72 65  20 72 65 6c 61 74 69 76  |they are relativ|
000534a0  65 20 74 6f 20 77 69 6e  64 6f 77 27 73 20 6f 72  |e to window's or|
000534b0  69 67 69 6e 2e 0a 0a 49  66 20 79 6f 75 20 61 72  |igin...If you ar|
000534c0  65 20 64 6f 69 6e 67 20  73 6f 6d 65 20 6b 69 6e  |e doing some kin|
000534d0  64 20 6f 66 20 61 6e 69  6d 61 74 69 6f 6e 20 6f  |d of animation o|
000534e0  72 20 6f 74 68 65 72 20  74 65 6d 70 6f 72 61 72  |r other temporar|
000534f0  79 20 63 68 61 6e 67 65  73 2c 20 74 68 65 6e 20  |y changes, then |
00053500  79 6f 75 20 73 68 6f 75  6c 64 20 75 73 65 20 3c  |you should use <|
00053510  57 69 6d 70 5f 55 70 64  61 74 65 57 69 6e 64 6f  |Wimp_UpdateWindo|
00053520  77 3e 20 69 6e 73 74 65  61 64 2e 00 44 41 54 41  |w> instead..DATA|
00053530  ba 00 00 00 46 6f 72 6d  61 74 20 6f 66 20 61 20  |....Format of a |
00053540  49 63 6f 6e 20 62 6c 6f  63 6b 0a 20 20 30 09 4d  |Icon block.  0.M|
00053550  69 6e 69 6d 75 6d 20 78  20 6f 66 20 69 63 6f 6e  |inimum x of icon|
00053560  20 62 6f 75 6e 64 69 6e  67 20 62 6f 78 0a 20 20  | bounding box.  |
00053570  34 09 4d 69 6e 69 6d 75  6d 20 79 0a 20 20 38 09  |4.Minimum y.  8.|
00053580  4d 61 78 69 6d 75 6d 20  78 0a 20 20 31 32 09 4d  |Maximum x.  12.M|
00053590  61 78 69 6d 75 6d 20 79  0a 20 20 31 36 09 3c 49  |aximum y.  16.<I|
000535a0  63 6f 6e 20 66 6c 61 67  73 3d 3e 57 69 6d 70 5f  |con flags=>Wimp_|
000535b0  69 63 6f 6e 66 6c 61 67  73 3e 0a 20 20 32 30 09  |iconflags>.  20.|
000535c0  31 32 20 62 79 74 65 73  20 6f 66 20 3c 69 63 6f  |12 bytes of <ico|
000535d0  6e 20 64 61 74 61 3d 3e  57 69 6d 70 5f 69 63 6f  |n data=>Wimp_ico|
000535e0  6e 64 61 74 61 3e 00 00  44 41 54 41 65 02 00 00  |ndata>..DATAe...|
000535f0  49 63 6f 6e 20 62 75 74  74 6f 6e 20 74 79 70 65  |Icon button type|
00053600  73 0a 42 69 74 73 20 31  32 2d 31 35 09 4d 65 61  |s.Bits 12-15.Mea|
00053610  6e 69 6e 67 0a 23 4c 69  6e 65 0a 20 20 30 09 09  |ning.#Line.  0..|
00053620  49 67 6e 6f 72 65 20 65  76 65 72 79 74 68 69 6e  |Ignore everythin|
00053630  67 20 28 65 78 63 65 70  74 20 6d 65 6e 75 29 2e  |g (except menu).|
00053640  0a 20 20 31 09 09 4e 6f  74 69 66 79 20 63 6f 6e  |.  1..Notify con|
00053650  74 69 6e 75 6f 75 73 6c  79 20 77 68 69 6c 65 20  |tinuously while |
00053660  70 6f 69 6e 74 65 72 20  69 73 20 6f 76 65 72 20  |pointer is over |
00053670  69 63 6f 6e 2e 0a 20 20  32 09 09 43 6c 69 63 6b  |icon..  2..Click|
00053680  20 28 61 75 74 6f 2d 72  65 70 65 61 74 29 0a 20  | (auto-repeat). |
00053690  20 33 09 09 43 6c 69 63  6b 20 28 6e 6f 20 61 75  | 3..Click (no au|
000536a0  74 6f 2d 72 65 70 65 61  74 29 0a 20 20 34 09 09  |to-repeat).  4..|
000536b0  43 6c 69 63 6b 20 73 65  6c 65 63 74 73 2c 20 6d  |Click selects, m|
000536c0  6f 76 65 20 61 77 61 79  20 64 65 73 65 6c 65 63  |ove away deselec|
000536d0  74 73 2e 20 4e 6f 74 69  66 79 20 6f 66 20 72 65  |ts. Notify of re|
000536e0  6c 65 61 73 65 2e 0a 20  20 35 09 09 43 6c 69 63  |lease..  5..Clic|
000536f0  6b 20 73 65 6c 65 63 74  73 2e 20 44 6f 75 62 6c  |k selects. Doubl|
00053700  65 63 6c 69 63 6b 20 6e  6f 74 69 66 69 65 73 20  |eclick notifies |
00053710  74 61 73 6b 2e 0a 20 20  36 09 09 33 20 2b 20 44  |task..  6..3 + D|
00053720  72 61 67 20 28 2a 31 36  29 2e 0a 20 20 37 09 09  |rag (*16)..  7..|
00053730  34 20 2b 20 44 72 61 67  20 28 2a 31 36 29 2e 20  |4 + Drag (*16). |
00053740  4d 6f 76 69 6e 67 20 61  77 61 79 20 64 6f 65 73  |Moving away does|
00053750  6e 27 74 20 64 65 73 65  6c 65 63 74 2e 0a 20 20  |n't deselect..  |
00053760  38 09 09 35 20 2b 20 44  72 61 67 20 28 2a 31 36  |8..5 + Drag (*16|
00053770  29 2e 0a 20 20 39 09 09  27 6d 65 6e 75 27 20 69  |)..  9..'menu' i|
00053780  63 6f 6e 0a 20 20 31 30  09 09 43 6c 69 63 6b 20  |con.  10..Click |
00053790  28 2a 32 35 36 29 2c 20  44 72 61 67 20 28 2a 31  |(*256), Drag (*1|
000537a0  36 29 2c 20 44 6f 75 62  6c 65 63 6c 69 63 6b 20  |6), Doubleclick |
000537b0  28 2a 31 29 0a 20 20 31  31 09 09 43 6c 69 63 6b  |(*1).  11..Click|
000537c0  20 73 65 6c 65 63 74 73  20 28 2a 31 29 2c 20 44  | selects (*1), D|
000537d0  72 61 67 20 6e 6f 74 69  66 69 65 73 20 28 2a 31  |rag notifies (*1|
000537e0  36 29 0a 20 20 31 32 2d  31 33 09 09 52 65 73 65  |6).  12-13..Rese|
000537f0  72 76 65 64 2e 0a 20 20  31 34 09 09 43 6c 69 63  |rved..  14..Clic|
00053800  6b 20 63 61 75 73 65 73  20 69 74 20 74 6f 20 67  |k causes it to g|
00053810  61 69 6e 20 63 61 72 65  74 2e 20 43 61 6e 20 61  |ain caret. Can a|
00053820  6c 73 6f 20 44 72 61 67  0a 20 20 31 35 09 09 43  |lso Drag.  15..C|
00053830  6c 69 63 6b 20 63 61 75  73 65 73 20 69 74 20 74  |lick causes it t|
00053840  6f 20 67 61 69 6e 20 63  61 72 65 74 2e 00 00 00  |o gain caret....|
00053850  44 41 54 41 b8 02 00 00  49 63 6f 6e 20 44 61 74  |DATA....Icon Dat|
00053860  61 0a 49 6e 74 65 70 72  65 74 61 74 69 6f 6e 20  |a.Intepretation |
00053870  76 61 72 69 65 73 20 61  63 63 6f 72 64 69 6e 67  |varies according|
00053880  20 74 6f 20 74 68 65 73  65 20 74 68 72 65 65 20  | to these three |
00053890  62 69 74 73 20 3a 0a 49  6e 64 69 72 65 63 74 65  |bits :.Indirecte|
000538a0  64 28 38 29 2c 20 53 70  72 69 74 65 28 31 29 20  |d(8), Sprite(1) |
000538b0  61 6e 64 20 54 65 78 74  28 30 29 2e 0a 54 65 78  |and Text(0)..Tex|
000538c0  74 20 70 6c 75 73 20 73  70 72 69 74 65 20 69 63  |t plus sprite ic|
000538d0  6f 6e 73 20 61 6c 73 6f  20 68 61 76 65 20 61 20  |ons also have a |
000538e0  73 70 65 63 69 61 6c 20  3c 6a 75 73 74 69 66 69  |special <justifi|
000538f0  63 61 74 69 6f 6e 3d 3e  77 69 6d 70 5f 69 63 6f  |cation=>wimp_ico|
00053900  6e 70 6f 73 69 74 69 6f  6e 73 3e 2e 0a 0a 49 53  |npositions>...IS|
00053910  54 09 44 61 74 61 0a 23  4c 69 6e 65 0a 30 30 30  |T.Data.#Line.000|
00053920  09 4e 6f 74 20 75 73 65  64 0a 30 30 31 09 54 65  |.Not used.001.Te|
00053930  78 74 20 53 74 72 69 6e  67 2e 20 4d 61 78 20 31  |xt String. Max 1|
00053940  32 20 63 68 61 72 61 63  74 65 72 73 20 6c 6f 6e  |2 characters lon|
00053950  67 2e 0a 30 31 30 09 53  70 72 69 74 65 6e 61 6d  |g..010.Spritenam|
00053960  65 2e 0a 30 31 31 09 54  65 78 74 20 61 6e 64 20  |e..011.Text and |
00053970  53 70 72 69 74 65 6e 61  6d 65 0a 31 30 30 09 4e  |Spritename.100.N|
00053980  6f 74 20 75 73 65 64 0a  0a 31 30 31 09 2b 30 09  |ot used..101.+0.|
00053990  50 6f 69 6e 74 65 72 20  74 6f 20 74 65 78 74 20  |Pointer to text |
000539a0  62 75 66 66 65 72 0a 09  2b 34 09 50 6f 69 6e 74  |buffer..+4.Point|
000539b0  65 72 20 3c 76 61 6c 69  64 61 74 69 6f 6e 20 73  |er <validation s|
000539c0  74 72 69 6e 67 3d 3e 57  69 6d 70 5f 76 61 6c 69  |tring=>Wimp_vali|
000539d0  64 61 74 69 6f 6e 73 74  72 69 6e 67 3e 0a 09 2b  |dationstring>..+|
000539e0  38 09 42 75 66 66 65 72  20 6c 65 6e 67 74 68 0a  |8.Buffer length.|
000539f0  0a 31 31 30 09 2b 30 09  50 6f 69 6e 74 65 72 20  |.110.+0.Pointer |
00053a00  74 6f 20 73 70 72 69 74  65 20 6f 72 20 73 70 72  |to sprite or spr|
00053a10  69 74 65 6e 61 6d 65 2e  0a 09 2b 34 09 50 6f 69  |itename...+4.Poi|
00053a20  6e 74 65 72 20 74 6f 20  73 70 72 69 74 65 20 63  |nter to sprite c|
00053a30  6f 6e 74 72 6f 6c 20 62  6c 6f 63 6b 20 28 2b 31  |ontrol block (+1|
00053a40  20 66 6f 72 20 57 69 6d  70 29 0a 09 2b 38 09 30  | for Wimp)..+8.0|
00053a50  20 69 66 20 28 2b 30 29  20 69 73 20 73 70 72 69  | if (+0) is spri|
00053a60  74 65 70 6f 69 6e 74 65  72 2c 20 6c 65 6e 67 74  |tepointer, lengt|
00053a70  68 20 69 66 20 6e 61 6d  65 70 6f 69 6e 74 65 72  |h if namepointer|
00053a80  2e 0a 0a 31 31 31 09 2b  30 09 50 6f 69 6e 74 65  |...111.+0.Pointe|
00053a90  72 20 74 6f 20 74 65 78  74 20 62 75 66 66 65 72  |r to text buffer|
00053aa0  0a 09 2b 34 09 50 6f 69  6e 74 65 72 20 3c 76 61  |..+4.Pointer <va|
00053ab0  6c 69 64 61 74 69 6f 6e  20 73 74 72 69 6e 67 3d  |lidation string=|
00053ac0  3e 57 69 6d 70 5f 76 61  6c 69 64 61 74 69 6f 6e  |>Wimp_validation|
00053ad0  73 74 72 69 6e 67 3e 2c  20 77 68 69 63 68 20 63  |string>, which c|
00053ae0  61 6e 20 63 6f 6e 74 61  69 6e 20 73 70 72 69 74  |an contain sprit|
00053af0  65 6e 61 6d 65 2e 0a 09  2b 38 09 42 75 66 66 65  |ename...+8.Buffe|
00053b00  72 20 6c 65 6e 67 74 68  44 41 54 41 c3 02 00 00  |r lengthDATA....|
00053b10  49 63 6f 6e 20 66 6c 61  67 73 0a 42 69 74 73 09  |Icon flags.Bits.|
00053b20  4d 65 61 6e 69 6e 67 20  77 68 65 6e 20 73 65 74  |Meaning when set|
00053b30  0a 23 4c 69 6e 65 0a 20  30 09 49 63 6f 6e 20 63  |.#Line. 0.Icon c|
00053b40  6f 6e 74 61 69 6e 73 20  74 65 78 74 2e 0a 20 31  |ontains text.. 1|
00053b50  09 49 63 6f 6e 20 63 6f  6e 74 61 69 6e 73 20 61  |.Icon contains a|
00053b60  20 73 70 72 69 74 65 2e  0a 20 32 09 49 63 6f 6e  | sprite.. 2.Icon|
00053b70  20 68 61 73 20 61 20 62  6f 72 64 65 72 2e 0a 20  | has a border.. |
00053b80  33 09 43 6f 6e 74 65 6e  74 73 20 63 65 6e 74 65  |3.Contents cente|
00053b90  72 65 64 20 68 6f 72 69  7a 6f 6e 74 61 6c 6c 79  |red horizontally|
00053ba0  2e 0a 20 34 09 43 6f 6e  74 65 6e 74 73 20 63 65  |.. 4.Contents ce|
00053bb0  6e 74 65 72 65 64 20 76  65 72 74 69 63 61 6c 6c  |ntered verticall|
00053bc0  79 2e 0a 20 35 09 49 63  6f 6e 20 68 61 73 20 61  |y.. 5.Icon has a|
00053bd0  20 66 69 6c 6c 65 64 20  62 61 63 6b 67 72 6f 75  | filled backgrou|
00053be0  6e 64 2e 0a 20 36 09 54  65 78 74 20 69 73 20 61  |nd.. 6.Text is a|
00053bf0  6e 74 69 2d 61 6c 69 61  73 65 64 20 66 6f 6e 74  |nti-aliased font|
00053c00  2e 0a 20 37 09 49 63 6f  6e 20 72 65 71 75 69 72  |.. 7.Icon requir|
00053c10  65 73 20 74 61 73 6b 27  73 20 68 65 6c 70 20 74  |es task's help t|
00053c20  6f 20 72 65 64 72 61 77  2e 0a 20 38 09 49 63 6f  |o redraw.. 8.Ico|
00053c30  6e 20 64 61 74 61 20 69  73 20 69 6e 64 69 72 65  |n data is indire|
00053c40  63 74 65 64 2e 0a 20 39  09 54 65 78 74 20 69 73  |cted.. 9.Text is|
00053c50  20 72 69 67 68 74 2d 6a  75 73 74 69 66 69 65 64  | right-justified|
00053c60  2e 0a 20 31 30 09 49 66  20 73 65 6c 65 63 74 65  |.. 10.If selecte|
00053c70  64 20 77 69 74 68 20 61  64 6a 75 73 74 2c 20 64  |d with adjust, d|
00053c80  6f 6e 27 74 20 63 61 6e  63 65 6c 20 6f 74 68 65  |on't cancel othe|
00053c90  72 73 2e 0a 20 31 31 09  44 69 73 70 6c 61 79 20  |rs.. 11.Display |
00053ca0  73 70 72 69 74 65 20 61  74 20 68 61 6c 66 20 73  |sprite at half s|
00053cb0  69 7a 65 2e 0a 20 31 32  2d 31 35 09 3c 49 63 6f  |ize.. 12-15.<Ico|
00053cc0  6e 20 62 75 74 74 6f 6e  20 74 79 70 65 3d 3e 57  |n button type=>W|
00053cd0  69 6d 70 5f 69 63 6f 6e  62 75 74 74 6f 6e 3e 2e  |imp_iconbutton>.|
00053ce0  0a 20 31 36 2d 32 30 09  45 78 63 6c 75 73 69 76  |. 16-20.Exclusiv|
00053cf0  65 20 53 65 6c 65 63 74  69 6f 6e 20 47 72 6f 75  |e Selection Grou|
00053d00  70 2e 0a 20 32 31 09 49  63 6f 6e 20 69 73 20 73  |p.. 21.Icon is s|
00053d10  65 6c 65 63 74 65 64 20  62 79 20 75 73 65 72 2c  |elected by user,|
00053d20  20 61 6e 64 20 69 73 20  69 6e 76 65 72 74 65 64  | and is inverted|
00053d30  2e 0a 20 32 32 09 49 63  6f 6e 20 69 73 20 75 6e  |.. 22.Icon is un|
00053d40  2d 73 65 6c 65 63 74 61  62 6c 65 20 28 73 68 61  |-selectable (sha|
00053d50  64 65 64 29 0a 20 32 33  09 49 63 6f 6e 20 69 73  |ded). 23.Icon is|
00053d60  20 64 65 6c 65 74 65 64  2e 0a 20 32 34 2d 32 37  | deleted.. 24-27|
00053d70  09 46 6f 72 65 67 72 6f  75 6e 64 20 63 6f 6c 6f  |.Foreground colo|
00053d80  75 72 09 5c 5c 20 49 66  20 62 69 74 20 36 20 3d  |ur.\\ If bit 6 =|
00053d90  20 31 20 74 68 65 6e 20  74 68 69 73 0a 20 32 38  | 1 then this. 28|
00053da0  2d 33 31 09 42 61 63 6b  67 72 6f 75 6e 64 20 63  |-31.Background c|
00053db0  6f 6c 6f 75 72 09 2f 20  20 69 73 20 74 68 65 20  |olour./  is the |
00053dc0  66 6f 6e 74 68 61 6e 64  6c 65 2e 00 44 41 54 41  |fonthandle..DATA|
00053dd0  ce 02 00 00 49 63 6f 6e  20 72 65 6c 61 74 69 76  |....Icon relativ|
00053de0  65 20 70 6f 73 69 74 69  6f 6e 73 0a 54 68 65 20  |e positions.The |
00053df0  70 6f 73 69 74 69 6f 6e  20 6f 66 20 61 6e 20 69  |position of an i|
00053e00  6e 64 69 72 65 63 74 65  64 20 74 65 78 74 20 70  |ndirected text p|
00053e10  6c 75 73 20 73 70 72 69  74 65 20 69 63 6f 6e 20  |lus sprite icon |
00053e20  69 73 20 64 65 74 65 72  6d 69 6e 65 64 20 62 79  |is determined by|
00053e30  20 74 68 65 20 48 6f 72  69 7a 6f 6e 74 61 6c 2c  | the Horizontal,|
00053e40  20 56 65 72 74 69 63 61  6c 20 61 6e 64 20 52 69  | Vertical and Ri|
00053e50  67 68 74 20 6a 75 73 74  69 66 69 65 64 20 62 69  |ght justified bi|
00053e60  74 73 20 28 33 2c 34 20  61 6e 64 20 39 29 3a 0a  |ts (3,4 and 9):.|
00053e70  0a 48 56 52 09 48 6f 72  69 7a 6f 6e 74 61 6c 20  |.HVR.Horizontal |
00053e80  61 64 6a 75 73 74 09 09  56 65 72 74 69 63 61 6c  |adjust..Vertical|
00053e90  20 61 64 6a 75 73 74 0a  23 4c 69 6e 65 0a 30 30  | adjust.#Line.00|
00053ea0  30 09 54 65 78 74 20 26  20 73 70 72 69 74 65 20  |0.Text & sprite |
00053eb0  6c 65 66 74 20 6a 75 73  74 69 66 69 65 64 09 54  |left justified.T|
00053ec0  65 78 74 20 61 74 20 62  6f 74 74 6f 6d 2c 20 73  |ext at bottom, s|
00053ed0  70 72 69 74 65 20 61 74  20 74 6f 70 0a 30 30 31  |prite at top.001|
00053ee0  09 54 65 78 74 20 26 20  73 70 72 69 74 65 20 72  |.Text & sprite r|
00053ef0  69 67 68 74 20 6a 75 73  74 69 66 69 65 64 09 54  |ight justified.T|
00053f00  65 78 74 20 61 74 20 62  6f 74 74 6f 6d 0a 30 31  |ext at bottom.01|
00053f10  30 09 53 70 72 69 74 65  20 61 74 20 6c 65 66 74  |0.Sprite at left|
00053f20  2c 20 74 65 78 74 20 3e  20 2b 36 20 75 6e 69 74  |, text > +6 unit|
00053f30  73 09 54 65 78 74 20 26  20 73 70 72 69 74 65 20  |s.Text & sprite |
00053f40  63 65 6e 74 65 72 65 64  0a 30 31 31 09 54 65 78  |centered.011.Tex|
00053f50  74 20 61 74 20 6c 65 66  74 2c 20 73 70 72 69 74  |t at left, sprit|
00053f60  65 20 61 74 20 72 69 67  68 74 09 54 65 78 74 20  |e at right.Text |
00053f70  26 20 73 70 72 69 74 65  20 63 65 6e 74 65 72 65  |& sprite centere|
00053f80  64 0a 31 30 30 09 54 65  78 74 20 26 20 73 70 72  |d.100.Text & spr|
00053f90  69 74 65 20 63 65 6e 74  65 72 65 64 09 09 54 65  |ite centered..Te|
00053fa0  78 74 20 61 74 20 62 6f  74 74 6f 6d 2c 20 73 70  |xt at bottom, sp|
00053fb0  72 69 74 65 20 61 74 20  74 6f 70 0a 31 30 31 09  |rite at top.101.|
00053fc0  54 65 78 74 20 26 20 73  70 72 69 74 65 20 63 65  |Text & sprite ce|
00053fd0  6e 74 65 72 65 64 09 09  54 65 78 74 20 61 74 20  |ntered..Text at |
00053fe0  74 6f 70 2c 20 73 70 72  69 74 65 20 61 74 20 62  |top, sprite at b|
00053ff0  6f 74 74 6f 6d 0a 31 31  30 09 54 65 78 74 20 26  |ottom.110.Text &|
00054000  20 73 70 72 69 74 65 20  63 65 6e 74 65 72 65 64  | sprite centered|
00054010  09 09 54 65 78 74 20 26  20 73 70 72 69 74 65 20  |..Text & sprite |
00054020  63 65 6e 74 65 72 65 64  0a 31 31 31 09 54 65 78  |centered.111.Tex|
00054030  74 20 61 74 20 72 69 67  68 74 2c 20 73 70 72 69  |t at right, spri|
00054040  74 65 20 61 74 20 6c 65  66 74 09 54 65 78 74 20  |te at left.Text |
00054050  26 20 73 70 72 69 74 65  20 63 65 6e 74 65 72 65  |& sprite centere|
00054060  64 0a 0a 4e 6f 74 65 3a  20 49 66 20 74 65 78 74  |d..Note: If text|
00054070  20 61 6e 64 20 73 70 72  69 74 65 20 6f 76 65 72  | and sprite over|
00054080  6c 61 70 73 2c 20 74 65  78 74 20 77 69 6c 6c 20  |laps, text will |
00054090  62 65 20 6f 6e 20 74 6f  70 2e 00 00 44 41 54 41  |be on top...DATA|
000540a0  5c 01 00 00 57 69 6d 70  5f 49 6e 69 74 69 61 6c  |\...Wimp_Initial|
000540b0  69 73 65 20 28 26 34 30  30 43 30 29 0a 23 50 61  |ise (&400C0).#Pa|
000540c0  72 65 6e 74 20 57 69 6d  70 5f 0a 3d 3e 09 52 30  |rent Wimp_.=>.R0|
000540d0  20 3d 09 4c 61 73 74 20  57 69 6d 70 2d 76 65 72  | =.Last Wimp-ver|
000540e0  73 69 6f 6e 20 6b 6e 6f  77 6e 20 2a 20 31 30 30  |sion known * 100|
000540f0  0a 09 52 31 20 3d 09 22  54 41 53 4b 22 20 28 26  |..R1 =."TASK" (&|
00054100  34 42 35 33 34 31 35 34  29 0a 09 52 32 20 3d 09  |4B534154)..R2 =.|
00054110  53 68 6f 72 74 20 64 65  73 63 72 69 70 74 69 6f  |Short descriptio|
00054120  6e 20 66 6f 72 20 74 61  73 6b 6d 61 6e 61 67 65  |n for taskmanage|
00054130  72 2e 0a 2b 09 52 33 20  3d 09 70 74 72 20 74 6f  |r..+.R3 =.ptr to|
00054140  20 6c 69 73 74 20 6f 66  20 61 63 63 65 70 74 61  | list of accepta|
00054150  62 6c 65 20 75 73 65 72  6d 65 73 73 61 67 65 73  |ble usermessages|
00054160  0a 09 28 56 65 72 73 69  6f 6e 20 3e 3d 20 33 2e  |..(Version >= 3.|
00054170  30 30 2e 20 20 5c 30 20  74 65 72 6d 69 6e 61 74  |00.  \0 terminat|
00054180  65 64 29 0a 20 20 20 20  20 20 20 20 0a 5c 3c 3d  |ed).        .\<=|
00054190  09 52 30 20 3d 09 43 75  72 72 65 6e 74 20 57 69  |.R0 =.Current Wi|
000541a0  6d 70 2d 76 65 72 73 69  6f 6e 0a 09 52 31 20 3d  |mp-version..R1 =|
000541b0  09 74 61 73 6b 20 68 61  6e 64 6c 65 0a 0a 42 65  |.task handle..Be|
000541c0  66 6f 72 65 20 70 72 6f  67 72 61 6d 20 74 65 72  |fore program ter|
000541d0  6d 69 6e 61 74 65 73 2c  20 69 74 20 73 68 6f 75  |minates, it shou|
000541e0  6c 64 20 63 61 6c 6c 20  3c 57 69 6d 70 5f 43 6c  |ld call <Wimp_Cl|
000541f0  6f 73 65 44 6f 77 6e 3e  44 41 54 41 22 02 00 00  |oseDown>DATA"...|
00054200  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
00054210  65 20 20 28 26 34 30 30  44 42 29 0a 23 50 61 72  |e  (&400DB).#Par|
00054220  65 6e 74 20 57 69 6d 70  5f 0a 3d 3e 09 52 31 20  |ent Wimp_.=>.R1 |
00054230  3d 09 70 74 72 20 74 6f  20 75 73 65 72 62 75 66  |=.ptr to userbuf|
00054240  66 65 72 20 66 6f 72 20  74 65 6d 70 6c 61 74 65  |fer for template|
00054250  0a 09 20 09 30 20 74 6f  20 66 69 6e 64 20 72 65  |.. .0 to find re|
00054260  71 75 69 72 65 64 20 62  75 66 66 65 72 73 69 7a  |quired buffersiz|
00054270  65 0a 09 52 32 20 3d 09  70 74 72 20 74 6f 20 77  |e..R2 =.ptr to w|
00054280  6f 72 6b 73 70 61 63 65  20 66 6f 72 20 69 6e 64  |orkspace for ind|
00054290  69 72 65 63 74 65 64 20  64 61 74 61 2e 0a 09 52  |irected data...R|
000542a0  33 20 3d 09 70 74 72 20  74 6f 20 65 6e 64 20 6f  |3 =.ptr to end o|
000542b0  66 20 77 6f 72 6b 73 70  61 63 65 20 28 2b 31 3f  |f workspace (+1?|
000542c0  29 0a 09 52 34 20 3d 09  32 35 36 2d 62 79 74 65  |)..R4 =.256-byte|
000542d0  20 61 72 72 61 79 20 66  6f 72 20 66 6f 6e 74 20  | array for font |
000542e0  72 65 66 20 28 2d 31 20  69 66 20 6e 6f 20 66 6f  |ref (-1 if no fo|
000542f0  6e 74 73 29 0a 09 52 35  20 3d 09 70 74 72 20 74  |nts)..R5 =.ptr t|
00054300  6f 20 28 77 69 6c 64 63  61 72 64 65 64 29 20 6e  |o (wildcarded) n|
00054310  61 6d 65 20 74 6f 20 6d  61 74 63 68 20 28 33 20  |ame to match (3 |
00054320  61 6c 69 67 6e 65 64 20  77 6f 72 64 73 29 0a 09  |aligned words)..|
00054330  52 36 20 3d 09 70 6f 73  20 74 6f 20 73 65 61 72  |R6 =.pos to sear|
00054340  63 68 20 66 72 6f 6d 20  28 30 20 66 6f 72 20 31  |ch from (0 for 1|
00054350  73 74 29 0a 0a 5c 3c 3d  09 52 32 20 3d 09 70 74  |st)..\<=.R2 =.pt|
00054360  72 20 74 6f 20 72 65 6d  61 69 6e 69 6e 67 20 77  |r to remaining w|
00054370  6f 72 6b 73 70 61 63 65  0a 09 52 35 09 69 73 20  |orkspace..R5.is |
00054380  6f 76 65 72 77 72 69 74  74 65 6e 20 77 69 74 68  |overwritten with|
00054390  20 61 63 74 75 61 6c 20  6e 61 6d 65 0a 09 52 36  | actual name..R6|
000543a0  20 3d 09 70 6f 73 20 6f  66 20 6e 65 78 74 20 65  | =.pos of next e|
000543b0  6e 74 72 79 0a 0a 69 66  20 52 31 20 77 61 73 20  |ntry..if R1 was |
000543c0  30 2c 20 74 68 65 6e 20  3a 0a 09 52 31 20 3d 09  |0, then :..R1 =.|
000543d0  72 65 71 75 69 72 65 64  20 73 69 7a 65 20 66 6f  |required size fo|
000543e0  72 20 77 69 6e 64 6f 77  20 61 6e 64 20 69 63 6f  |r window and ico|
000543f0  6e 73 0a 09 52 32 20 3d  09 72 65 71 75 69 72 65  |ns..R2 =.require|
00054400  64 20 73 69 7a 65 20 66  6f 72 20 69 6e 64 69 72  |d size for indir|
00054410  65 63 74 65 64 20 64 61  74 61 00 00 44 41 54 41  |ected data..DATA|
00054420  dc 00 00 00 57 69 6d 70  5f 4f 70 65 6e 54 65 6d  |....Wimp_OpenTem|
00054430  70 6c 61 74 65 20 20 28  26 34 30 30 44 39 29 0a  |plate  (&400D9).|
00054440  23 50 61 72 65 6e 74 20  57 69 6d 70 5f 0a 3d 3e  |#Parent Wimp_.=>|
00054450  09 52 31 20 3d 09 70 61  74 68 6e 61 6d 65 20 6f  |.R1 =.pathname o|
00054460  66 20 74 65 6d 70 6c 61  74 65 20 66 69 6c 65 20  |f template file |
00054470  74 6f 20 6f 70 65 6e 0a  0a 54 68 69 73 20 63 61  |to open..This ca|
00054480  6c 6c 20 6f 70 65 6e 73  20 74 68 65 20 73 61 69  |ll opens the sai|
00054490  64 20 74 65 6d 70 6c 61  74 65 20 66 69 6c 65 2e  |d template file.|
000544a0  0a 4e 6f 77 20 79 6f 75  20 63 61 6e 20 64 6f 20  |.Now you can do |
000544b0  72 65 70 65 61 74 65 64  20 63 61 6c 6c 73 20 74  |repeated calls t|
000544c0  6f 20 3c 57 69 6d 70 5f  4c 6f 61 64 54 65 6d 70  |o <Wimp_LoadTemp|
000544d0  6c 61 74 65 3e 2c 20 61  6e 64 20 66 69 6e 61 6c  |late>, and final|
000544e0  6c 79 20 3c 57 69 6d 70  5f 43 6c 6f 73 65 54 65  |ly <Wimp_CloseTe|
000544f0  6d 70 6c 61 74 65 3e 2e  44 41 54 41 38 02 00 00  |mplate>.DATA8...|
00054500  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 20  |Wimp_OpenWindow |
00054510  28 26 34 30 30 43 35 29  0a 23 50 61 72 65 6e 74  |(&400C5).#Parent|
00054520  20 57 69 6d 70 5f 0a 3d  3e 09 52 31 20 3d 09 50  | Wimp_.=>.R1 =.P|
00054530  6f 69 6e 74 65 72 20 74  6f 20 62 6c 6f 63 6b 20  |ointer to block |
00054540  3a 0a 09 20 09 20 20 20  30 09 57 69 6e 64 6f 77  |:.. .   0.Window|
00054550  20 68 61 6e 64 6c 65 0a  09 20 09 20 20 20 34 09  | handle.. .   4.|
00054560  56 69 73 69 62 6c 65 20  61 72 65 61 20 6d 69 6e  |Visible area min|
00054570  69 6d 75 6d 20 78 0a 09  20 09 20 20 20 38 09 2d  |imum x.. .   8.-|
00054580  2d 2d 2d 2d 2d 2d 2d 2d  2d 22 2d 2d 2d 2d 2d 2d  |---------"------|
00054590  2d 2d 2d 20 79 0a 09 20  09 20 20 31 32 09 56 69  |--- y.. .  12.Vi|
000545a0  73 69 62 6c 65 20 61 72  65 61 20 6d 61 78 69 6d  |sible area maxim|
000545b0  75 6d 20 78 0a 09 20 09  20 20 31 36 09 2d 2d 2d  |um x.. .  16.---|
000545c0  2d 2d 2d 2d 2d 2d 2d 22  2d 2d 2d 2d 2d 2d 2d 2d  |-------"--------|
000545d0  2d 20 79 0a 09 20 09 20  20 32 30 09 53 63 72 6f  |- y.. .  20.Scro|
000545e0  6c 6c 20 78 20 6f 66 66  73 65 74 0a 09 20 09 20  |ll x offset.. . |
000545f0  20 32 34 09 53 63 72 6f  6c 6c 20 79 20 6f 66 66  | 24.Scroll y off|
00054600  73 65 74 0a 09 20 09 20  20 32 38 09 48 61 6e 64  |set.. .  28.Hand|
00054610  6c 65 20 74 6f 20 6f 70  65 6e 20 77 69 6e 64 6f  |le to open windo|
00054620  77 20 62 65 68 69 6e 64  0a 09 20 09 20 09 28 2d  |w behind.. . .(-|
00054630  31 3d 74 6f 70 2c 20 2d  32 3d 62 6f 74 74 6f 6d  |1=top, -2=bottom|
00054640  2c 20 2d 33 3d 68 69 64  65 2f 69 63 6f 6e 69 73  |, -3=hide/iconis|
00054650  65 29 0a 0a 23 54 61 62  0a 54 68 69 73 20 63 61  |e)..#Tab.This ca|
00054660  6c 6c 20 75 70 64 61 74  65 73 20 74 68 65 20 6c  |ll updates the l|
00054670  69 73 74 20 6f 66 20 61  63 74 69 76 65 20 77 69  |ist of active wi|
00054680  6e 64 6f 77 73 2e 20 49  74 20 69 73 20 75 73 65  |ndows. It is use|
00054690  64 0a 20 20 31 29 09 57  68 65 6e 20 79 6f 75 20  |d.  1).When you |
000546a0  6f 70 65 6e 20 61 20 77  69 6e 64 6f 77 20 66 6f  |open a window fo|
000546b0  72 20 74 68 65 20 66 69  72 73 74 20 74 69 6d 65  |r the first time|
000546c0  2c 20 61 6e 64 0a 20 20  32 29 09 57 68 65 6e 20  |, and.  2).When |
000546d0  74 68 65 20 77 69 6e 64  6f 77 20 6d 6f 76 65 73  |the window moves|
000546e0  2c 20 73 63 72 6f 6c 6c  73 20 6f 72 20 72 65 73  |, scrolls or res|
000546f0  69 7a 65 73 2e 0a 0a 54  68 65 20 57 69 6d 70 20  |izes...The Wimp |
00054700  77 69 6c 6c 20 69 73 73  75 65 20 72 65 64 72 61  |will issue redra|
00054710  77 20 6d 65 73 73 61 67  65 73 20 74 6f 20 79 6f  |w messages to yo|
00054720  75 2c 20 69 66 20 6e 65  63 65 73 73 61 72 79 2e  |u, if necessary.|
00054730  44 41 54 41 a5 00 00 00  57 69 6d 70 5f 50 6c 6f  |DATA....Wimp_Plo|
00054740  74 49 63 6f 6e 20 20 28  26 34 30 30 45 32 29 0a  |tIcon  (&400E2).|
00054750  23 50 61 72 65 6e 74 20  57 69 6d 70 5f 0a 3d 3e  |#Parent Wimp_.=>|
00054760  09 52 31 20 3d 20 3c 69  63 6f 6e 20 62 6c 6f 63  |.R1 = <icon bloc|
00054770  6b 3d 3e 77 69 6d 70 5f  69 63 6f 6e 62 6c 6f 63  |k=>wimp_iconbloc|
00054780  6b 3e 0a 0a 54 68 69 73  20 53 57 49 20 63 61 6e  |k>..This SWI can|
00054790  20 62 65 20 75 73 65 64  20 74 6f 20 70 6c 6f 74  | be used to plot|
000547a0  20 61 20 27 76 69 72 74  75 61 6c 27 20 69 63 6f  | a 'virtual' ico|
000547b0  6e 20 64 75 72 69 6e 67  20 61 20 77 69 6e 64 6f  |n during a windo|
000547c0  77 20 72 65 64 72 61 77  2f 75 70 64 61 74 65 20  |w redraw/update |
000547d0  6c 6f 6f 70 2e 00 00 00  44 41 54 41 fb 01 00 00  |loop....DATA....|
000547e0  57 69 6d 70 5f 50 72 6f  63 65 73 73 4b 65 79 20  |Wimp_ProcessKey |
000547f0  28 26 34 30 30 44 43 29  0a 23 50 61 72 65 6e 74  |(&400DC).#Parent|
00054800  20 57 69 6d 70 5f 0a 3d  3e 20 52 30 20 3d 20 3c  | Wimp_.=> R0 = <|
00054810  43 68 61 72 61 63 74 65  72 20 63 6f 64 65 3d 3e  |Character code=>|
00054820  77 69 6d 70 5f 70 6f 6c  6c 38 61 3e 2e 0a 0a 23  |wimp_poll8a>...#|
00054830  54 61 62 0a 54 68 69 73  20 63 61 6c 6c 20 68 61  |Tab.This call ha|
00054840  73 20 74 77 6f 20 75 73  65 73 3a 0a 20 20 31 20  |s two uses:.  1 |
00054850  3a 09 50 61 73 73 20 6f  6e 20 6b 65 79 70 72 65  |:.Pass on keypre|
00054860  73 73 65 73 20 74 68 61  74 20 79 6f 75 72 20 70  |sses that your p|
00054870  72 6f 67 72 61 6d 20 68  61 73 20 72 65 63 65 69  |rogram has recei|
00054880  76 65 64 20 66 72 6f 6d  20 57 69 6d 70 5f 50 6f  |ved from Wimp_Po|
00054890  6c 6c 20 3c 72 65 61 73  6f 6e 20 38 3d 3e 57 69  |ll <reason 8=>Wi|
000548a0  6d 70 5f 70 6f 6c 6c 38  3e 2c 20 62 75 74 20 64  |mp_poll8>, but d|
000548b0  6f 65 73 6e 27 74 20 75  73 65 2e 0a 20 20 32 20  |oesn't use..  2 |
000548c0  3a 09 49 6e 73 65 72 74  20 6b 65 79 70 72 65 73  |:.Insert keypres|
000548d0  73 65 73 20 69 6e 74 6f  20 74 68 65 20 77 69 6d  |ses into the wim|
000548e0  70 20 62 75 66 66 65 72  2e 0a 0a 23 54 61 62 0a  |p buffer...#Tab.|
000548f0  4e 6f 74 65 20 31 20 3a  09 59 6f 75 20 73 68 6f  |Note 1 :.You sho|
00054900  75 6c 64 20 6e 6f 74 20  69 6e 73 65 72 74 20 6d  |uld not insert m|
00054910  6f 72 65 20 74 68 61 6e  20 6f 6e 65 20 6f 72 20  |ore than one or |
00054920  74 77 6f 20 63 68 61 72  61 63 74 65 72 73 20 61  |two characters a|
00054930  74 20 61 20 74 69 6d 65  20 74 68 69 73 20 77 61  |t a time this wa|
00054940  79 2e 20 49 74 20 73 65  65 6d 73 20 74 68 61 74  |y. It seems that|
00054950  20 74 68 65 20 57 69 6d  70 20 67 65 74 73 20 63  | the Wimp gets c|
00054960  6f 6e 66 75 73 65 64 20  61 66 74 65 72 20 74 68  |onfused after th|
00054970  61 74 2e 0a 0a 4e 6f 74  65 20 32 20 3a 09 43 68  |at...Note 2 :.Ch|
00054980  61 72 61 63 74 65 72 73  20 69 6e 73 65 72 74 65  |aracters inserte|
00054990  64 20 74 68 69 73 20 77  61 79 20 74 61 6b 65 73  |d this way takes|
000549a0  20 70 72 65 63 65 64 65  6e 63 65 20 6f 76 65 72  | precedence over|
000549b0  20 63 68 61 72 61 63 74  65 72 73 20 69 6e 20 74  | characters in t|
000549c0  68 65 20 6b 65 79 62 6f  61 72 64 20 62 75 66 66  |he keyboard buff|
000549d0  65 72 2e 00 44 41 54 41  f8 00 00 00 57 69 6d 70  |er..DATA....Wimp|
000549e0  5f 52 65 64 72 61 77 57  69 6e 64 6f 77 20 20 28  |_RedrawWindow  (|
000549f0  26 34 30 30 43 38 29 0a  23 50 61 72 65 6e 74 20  |&400C8).#Parent |
00054a00  57 69 6d 70 5f 0a 3d 3e  09 52 31 20 3d 20 70 6f  |Wimp_.=>.R1 = po|
00054a10  69 6e 74 65 72 20 74 6f  20 62 6c 6f 63 6b 20 63  |inter to block c|
00054a20  6f 6e 74 61 69 6e 69 6e  67 20 77 69 6e 64 6f 77  |ontaining window|
00054a30  20 68 61 6e 64 6c 65 0a  5c 3c 3d 09 45 78 69 74  | handle.\<=.Exit|
00054a40  73 20 74 68 72 6f 75 67  68 20 3c 57 69 6d 70 5f  |s through <Wimp_|
00054a50  47 65 74 52 65 63 74 61  6e 67 6c 65 3e 0a 0a 54  |GetRectangle>..T|
00054a60  68 69 73 20 53 57 49 20  69 73 20 63 61 6c 6c 65  |his SWI is calle|
00054a70  64 20 69 6e 20 72 65 73  70 6f 6e 73 65 20 74 6f  |d in response to|
00054a80  20 61 20 52 65 64 72 61  77 57 69 6e 64 6f 77 20  | a RedrawWindow |
00054a90  6d 65 73 73 61 67 65 20  66 72 6f 6d 20 57 69 6d  |message from Wim|
00054aa0  70 2e 20 49 74 20 6d 75  73 74 20 62 65 20 31 73  |p. It must be 1s|
00054ab0  74 20 57 69 6d 70 20 63  61 6c 6c 20 61 66 74 65  |t Wimp call afte|
00054ac0  72 20 57 69 6d 70 5f 50  6f 6c 6c 2e 44 41 54 41  |r Wimp_Poll.DATA|
00054ad0  dc 02 00 00 57 69 6d 70  5f 52 65 70 6f 72 74 45  |....Wimp_ReportE|
00054ae0  72 72 6f 72 20 20 28 26  34 30 30 44 46 29 0a 23  |rror  (&400DF).#|
00054af0  50 61 72 65 6e 74 20 57  69 6d 70 5f 0a 3d 3e 09  |Parent Wimp_.=>.|
00054b00  52 30 20 3d 09 70 74 72  20 74 6f 20 73 74 61 6e  |R0 =.ptr to stan|
00054b10  64 61 72 64 20 3c 53 57  49 20 65 72 72 6f 72 62  |dard <SWI errorb|
00054b20  6c 6f 63 6b 3d 3e 73 77  69 5f 65 72 72 6f 72 62  |lock=>swi_errorb|
00054b30  6c 6f 63 6b 3e 0a 09 52  31 20 3d 09 3c 66 6c 61  |lock>..R1 =.<fla|
00054b40  67 73 3d 3e 77 69 6d 70  5f 72 65 70 6f 72 74 65  |gs=>wimp_reporte|
00054b50  72 72 6f 72 30 3e 0a 09  52 32 20 3d 09 70 74 72  |rror0>..R2 =.ptr|
00054b60  20 74 6f 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  | to application |
00054b70  6e 61 6d 65 20 28 6f 72  20 74 69 74 6c 65 20 69  |name (or title i|
00054b80  66 20 62 69 74 20 34 20  73 65 74 29 0a 09 52 33  |f bit 4 set)..R3|
00054b90  20 3d 09 73 70 72 69 74  65 20 6e 61 6d 65 20 28  | =.sprite name (|
00054ba0  69 66 20 62 69 74 20 38  20 73 65 74 29 0a 09 52  |if bit 8 set)..R|
00054bb0  34 20 3d 09 73 70 72 69  74 65 20 3c 62 6c 6f 63  |4 =.sprite <bloc|
00054bc0  6b 3d 3e 4f 53 5f 53 70  72 69 74 65 4f 70 5f 61  |k=>OS_SpriteOp_a|
00054bd0  72 65 61 3e 20 28 69 66  20 62 69 74 20 38 20 73  |rea> (if bit 8 s|
00054be0  65 74 29 0a 09 52 35 20  3d 09 65 78 74 72 61 20  |et)..R5 =.extra |
00054bf0  62 75 74 74 6f 6e 73 20  73 74 72 69 6e 67 20 28  |buttons string (|
00054c00  69 66 20 62 69 74 20 38  20 73 65 74 29 2c 20 63  |if bit 8 set), c|
00054c10  6f 6d 6d 61 20 73 65 70  65 72 61 74 65 64 0a 0a  |omma seperated..|
00054c20  5c 3c 3d 09 52 31 20 3d  09 30 20 69 66 20 6e 6f  |\<=.R1 =.0 if no|
00054c30  74 68 69 6e 67 20 73 65  6c 65 63 74 65 64 2c 20  |thing selected, |
00054c40  31 20 69 66 20 4f 4b 20  73 65 6c 65 63 74 65 64  |1 if OK selected|
00054c50  20 61 6e 64 20 32 20 69  66 20 43 61 6e 63 65 6c  | and 2 if Cancel|
00054c60  2c 20 33 2d 35 20 69 66  20 65 78 74 72 61 20 62  |, 3-5 if extra b|
00054c70  75 74 74 6f 6e 73 0a 09  20 09 52 65 74 75 72 6e  |uttons.. .Return|
00054c80  20 67 69 76 65 73 20 64  65 66 61 75 6c 74 2c 20  | gives default, |
00054c90  45 73 63 61 70 65 20 74  68 65 20 61 6c 74 65 72  |Escape the alter|
00054ca0  6e 61 74 65 0a 09 52 30  20 63 6f 72 72 75 70 74  |nate..R0 corrupt|
00054cb0  0a 20 20 20 20 20 20 20  20 0a 54 68 69 73 20 53  |.        .This S|
00054cc0  57 49 20 6f 70 65 6e 73  20 61 20 73 74 61 6e 64  |WI opens a stand|
00054cd0  61 72 64 2c 20 6e 6f 6e  2d 6d 75 6c 74 69 74 61  |ard, non-multita|
00054ce0  73 6b 69 6e 67 2c 20 65  72 72 6f 72 62 6f 78 20  |sking, errorbox |
00054cf0  6f 6e 20 74 68 65 20 73  63 72 65 65 6e 2e 20 41  |on the screen. A|
00054d00  76 6f 69 64 2c 20 69 66  20 70 6f 73 73 69 62 6c  |void, if possibl|
00054d10  65 2e 20 49 74 20 69 73  20 62 6f 72 69 6e 67 20  |e. It is boring |
00054d20  61 6e 64 2c 20 61 73 20  73 74 61 74 65 64 20 61  |and, as stated a|
00054d30  62 6f 76 65 2c 20 6e 6f  6e 2d 6d 75 6c 74 69 74  |bove, non-multit|
00054d40  61 73 6b 69 6e 67 2e 20  48 6f 77 65 76 65 72 2c  |asking. However,|
00054d50  20 74 68 65 20 52 4f 33  2e 35 20 65 78 74 65 6e  | the RO3.5 exten|
00054d60  73 69 6f 6e 73 20 6d 61  6b 65 20 74 68 65 20 75  |sions make the u|
00054d70  73 65 20 6f 66 20 65 72  72 6f 72 20 62 6f 78 65  |se of error boxe|
00054d80  73 20 6d 75 63 68 20 6d  6f 72 65 20 61 70 70 65  |s much more appe|
00054d90  61 6c 69 6e 67 20 74 6f  20 74 68 65 20 70 72 6f  |aling to the pro|
00054da0  67 72 61 6d 6d 65 72 2e  44 41 54 41 01 03 00 00  |grammer.DATA....|
00054db0  46 6c 61 67 73 20 66 6f  72 20 57 69 6d 70 5f 52  |Flags for Wimp_R|
00054dc0  65 70 6f 72 74 45 72 72  6f 72 0a 42 69 74 09 4d  |eportError.Bit.M|
00054dd0  65 61 6e 69 6e 67 20 77  68 65 6e 20 73 65 74 0a  |eaning when set.|
00054de0  23 4c 69 6e 65 0a 30 09  27 4f 4b 27 20 62 6f 78  |#Line.0.'OK' box|
00054df0  0a 31 09 27 43 61 6e 63  65 6c 27 20 62 6f 78 0a  |.1.'Cancel' box.|
00054e00  32 09 48 69 67 68 6c 69  67 68 74 20 43 61 6e 63  |2.Highlight Canc|
00054e10  65 6c 20 28 6f 72 20 4f  4b 20 69 66 20 6e 6f 20  |el (or OK if no |
00054e20  43 61 6e 63 65 6c 20 62  6f 78 29 0a 33 09 44 6f  |Cancel box).3.Do|
00054e30  6e 27 74 20 64 6f 20 27  50 72 65 73 73 20 73 70  |n't do 'Press sp|
00054e40  61 63 65 20 6f 72 20 63  6c 69 63 6b 20 6d 6f 75  |ace or click mou|
00054e50  73 65 20 74 6f 20 63 6f  6e 74 69 6e 75 65 27 0a  |se to continue'.|
00054e60  34 09 44 6f 6e 27 74 20  70 72 65 66 69 78 20 74  |4.Don't prefix t|
00054e70  69 74 6c 65 20 77 69 74  68 20 27 45 72 72 6f 72  |itle with 'Error|
00054e80  20 66 72 6f 6d 20 27 0a  35 09 52 65 74 75 72 6e  | from '.5.Return|
00054e90  20 69 6d 6d 65 64 69 61  74 65 6c 79 20 77 69 74  | immediately wit|
00054ea0  68 20 52 31 3d 30 20 61  6e 64 20 62 6f 78 20 6f  |h R1=0 and box o|
00054eb0  70 65 6e 0a 36 09 53 69  6d 75 6c 61 74 65 20 69  |pen.6.Simulate i|
00054ec0  63 6f 6e 63 6c 69 63 6b  20 69 6e 20 62 6f 78 20  |conclick in box |
00054ed0  61 63 63 6f 72 64 69 6e  67 20 74 6f 20 62 69 74  |according to bit|
00054ee0  73 20 30 2b 31 0a 37 09  44 6f 6e 27 74 20 62 65  |s 0+1.7.Don't be|
00054ef0  65 70 0a 38 09 55 73 65  20 63 61 74 65 67 6f 72  |ep.8.Use categor|
00054f00  69 65 73 0a 39 2d 31 31  09 3c 43 61 74 65 67 6f  |ies.9-11.<Catego|
00054f10  72 79 3d 3e 2e 43 61 74  65 67 6f 72 79 3e 0a 31  |ry=>.Category>.1|
00054f20  32 2d 33 31 09 52 65 73  65 72 76 65 64 2e 20 4d  |2-31.Reserved. M|
00054f30  75 73 74 20 62 65 20 30  0a 23 73 75 62 70 61 67  |ust be 0.#subpag|
00054f40  65 20 43 61 74 65 67 6f  72 79 0a 57 69 6d 70 5f  |e Category.Wimp_|
00054f50  52 65 70 6f 72 74 45 72  72 6f 72 20 63 61 74 65  |ReportError cate|
00054f60  67 6f 72 69 65 73 0a 5c  23 09 4d 65 61 6e 69 6e  |gories.\#.Meanin|
00054f70  67 0a 23 4c 69 6e 65 0a  31 09 49 6e 66 6f 72 6d  |g.#Line.1.Inform|
00054f80  61 74 69 6f 6e 61 6c 2e  0a 32 09 57 61 72 6e 69  |ational..2.Warni|
00054f90  6e 67 2e 0a 33 09 50 72  6f 67 72 61 6d 20 28 69  |ng..3.Program (i|
00054fa0  65 20 6e 6f 6e 2d 64 65  73 6b 74 6f 70 29 20 6d  |e non-desktop) m|
00054fb0  65 73 73 61 67 65 20 28  73 74 6f 70 29 2e 0a 34  |essage (stop)..4|
00054fc0  09 51 75 65 73 74 69 6f  6e 3b 20 75 73 75 61 6c  |.Question; usual|
00054fd0  6c 79 20 75 73 65 64 20  77 69 74 68 20 74 68 65  |ly used with the|
00054fe0  20 62 75 74 74 6f 6e 20  73 74 72 69 6e 67 2e 0a  | button string..|
00054ff0  35 09 55 73 65 72 20 69  63 6f 6e 20 31 20 28 69  |5.User icon 1 (i|
00055000  65 20 75 6e 64 65 66 69  6e 65 64 29 0a 36 09 55  |e undefined).6.U|
00055010  73 65 72 20 69 63 6f 6e  20 32 20 28 69 65 20 75  |ser icon 2 (ie u|
00055020  6e 64 65 66 69 6e 65 64  29 0a 37 09 50 72 6f 67  |ndefined).7.Prog|
00055030  72 61 6d 20 61 67 61 69  6e 20 28 64 6f 20 6e 6f  |ram again (do no|
00055040  74 20 75 73 65 29 0a 0a  54 68 65 73 65 20 64 65  |t use)..These de|
00055050  66 69 6e 65 20 74 68 65  20 74 79 70 65 20 6f 66  |fine the type of|
00055060  20 65 72 72 6f 72 20 75  6e 64 65 72 20 52 4f 33  | error under RO3|
00055070  2e 35 20 61 6e 64 20 64  69 73 70 6c 61 79 20 74  |.5 and display t|
00055080  68 65 20 74 79 70 65 20  6f 66 20 74 68 65 20 65  |he type of the e|
00055090  72 72 6f 72 2e 20 42 69  74 20 38 20 6d 75 73 74  |rror. Bit 8 must|
000550a0  20 62 65 20 73 65 74 2e  0a 00 00 00 44 41 54 41  | be set.....DATA|
000550b0  e3 00 00 00 57 69 6d 70  5f 53 6c 6f 74 53 69 7a  |....Wimp_SlotSiz|
000550c0  65 20 28 26 34 30 30 45  43 29 0a 23 50 61 72 65  |e (&400EC).#Pare|
000550d0  6e 74 20 57 69 6d 70 5f  0a 3d 3e 09 52 30 20 3d  |nt Wimp_.=>.R0 =|
000550e0  09 6e 65 77 20 73 69 7a  65 20 6f 66 20 63 75 72  |.new size of cur|
000550f0  72 65 6e 74 20 73 6c 6f  74 20 28 2d 31 20 74 6f  |rent slot (-1 to|
00055100  20 72 65 61 64 29 0a 09  52 31 20 3d 09 6e 65 77  | read)..R1 =.new|
00055110  20 73 69 7a 65 20 6f 66  20 6e 65 78 74 20 73 6c  | size of next sl|
00055120  6f 74 20 28 2d 31 20 74  6f 20 72 65 61 64 29 0a  |ot (-1 to read).|
00055130  0a 5c 3c 3d 09 52 30 20  3d 09 73 69 7a 65 20 6f  |.\<=.R0 =.size o|
00055140  66 20 63 75 72 72 65 6e  74 20 73 6c 6f 74 0a 09  |f current slot..|
00055150  52 31 20 3d 09 73 69 7a  65 20 6f 66 20 6e 65 78  |R1 =.size of nex|
00055160  74 20 73 6c 6f 74 0a 09  52 32 20 3d 09 73 69 7a  |t slot..R2 =.siz|
00055170  65 20 6f 66 20 66 72 65  65 20 70 6f 6f 6c 0a 09  |e of free pool..|
00055180  28 52 34 20 63 6f 72 72  75 70 74 65 64 3f 29 00  |(R4 corrupted?).|
00055190  44 41 54 41 27 01 00 00  57 69 6d 70 5f 53 70 72  |DATA'...Wimp_Spr|
000551a0  69 74 65 4f 70 20 20 28  26 34 30 30 45 39 29 0a  |iteOp  (&400E9).|
000551b0  23 50 61 72 65 6e 74 20  57 69 6d 70 5f 0a 3d 3e  |#Parent Wimp_.=>|
000551c0  09 52 30 20 3d 09 3c 72  65 61 73 6f 6e 20 63 6f  |.R0 =.<reason co|
000551d0  64 65 3d 3e 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |de=>OS_SpriteOp_|
000551e0  52 65 61 73 6f 6e 3e 20  28 30 2e 2e 26 46 46 29  |Reason> (0..&FF)|
000551f0  0a 09 52 31 09 75 6e 75  73 65 64 0a 09 52 32 20  |..R1.unused..R2 |
00055200  3d 09 73 70 72 69 74 65  6e 61 6d 65 0a 09 52 33  |=.spritename..R3|
00055210  2e 2e 09 61 73 20 66 6f  72 20 4f 53 5f 53 70 72  |...as for OS_Spr|
00055220  69 74 65 4f 70 0a 0a 5c  3c 3d 20 61 73 20 66 6f  |iteOp..\<= as fo|
00055230  72 20 4f 53 5f 53 70 72  69 74 65 4f 70 0a 0a 54  |r OS_SpriteOp..T|
00055240  68 69 73 20 63 61 6c 6c  20 69 73 20 6d 61 70 70  |his call is mapp|
00055250  65 64 20 74 6f 20 3c 4f  53 5f 53 70 72 69 74 65  |ed to <OS_Sprite|
00055260  4f 70 3e 2e 0a 26 31 30  30 20 69 73 20 61 64 64  |Op>..&100 is add|
00055270  65 64 20 74 6f 20 72 65  61 73 6f 6e 20 63 6f 64  |ed to reason cod|
00055280  65 20 69 6e 20 52 30 2c  20 61 6e 64 20 52 31 20  |e in R0, and R1 |
00055290  69 73 20 73 65 74 20 74  6f 20 74 68 65 20 57 69  |is set to the Wi|
000552a0  6d 70 20 73 70 72 69 74  65 2d 61 72 65 61 20 70  |mp sprite-area p|
000552b0  6f 69 6e 74 65 72 2e 00  44 41 54 41 c8 00 00 00  |ointer..DATA....|
000552c0  57 69 6d 70 5f 53 74 61  72 74 54 61 73 6b 20 20  |Wimp_StartTask  |
000552d0  28 26 34 30 30 44 45 29  0a 23 50 61 72 65 6e 74  |(&400DE).#Parent|
000552e0  20 57 69 6d 70 5f 0a 3d  3e 09 52 30 20 3d 20 50  | Wimp_.=>.R0 = P|
000552f0  6f 69 6e 74 65 72 20 74  6f 20 2a 63 6f 6d 6d 61  |ointer to *comma|
00055300  6e 64 0a 0a 54 68 69 73  20 53 57 49 20 63 72 65  |nd..This SWI cre|
00055310  61 74 65 73 20 61 20 6e  65 77 20 74 61 73 6b 2c  |ates a new task,|
00055320  20 61 6e 64 20 65 78 65  63 75 74 65 73 20 74 68  | and executes th|
00055330  65 20 67 69 76 65 6e 20  2a 63 6f 6d 6d 61 6e 64  |e given *command|
00055340  2e 20 54 68 65 20 53 57  49 20 72 65 74 75 72 6e  |. The SWI return|
00055350  73 20 74 6f 20 79 6f 75  20 77 68 65 6e 20 6e 65  |s to you when ne|
00055360  77 20 74 61 73 6b 20 65  78 69 74 73 2c 20 6f 72  |w task exits, or|
00055370  20 63 61 6c 6c 73 20 57  69 6d 70 5f 50 6f 6c 6c  | calls Wimp_Poll|
00055380  44 41 54 41 a3 00 00 00  57 69 6d 70 5f 54 65 78  |DATA....Wimp_Tex|
00055390  74 43 6f 6c 6f 75 72 20  20 28 26 34 30 30 46 30  |tColour  (&400F0|
000553a0  29 0a 23 50 61 72 65 6e  74 20 57 69 6d 70 5f 0a  |).#Parent Wimp_.|
000553b0  3d 3e 09 52 30 20 3a 09  62 69 74 73 20 30 2d 33  |=>.R0 :.bits 0-3|
000553c0  20 57 69 6d 70 20 63 6f  6c 6f 75 72 0a 09 20 09  | Wimp colour.. .|
000553d0  62 69 74 20 20 37 09 30  20 66 6f 72 20 66 6f 72  |bit  7.0 for for|
000553e0  65 67 72 6f 75 6e 64 2c  0a 09 20 09 20 09 31 20  |eground,.. . .1 |
000553f0  66 6f 72 20 62 61 63 6b  67 72 6f 75 6e 64 0a 0a  |for background..|
00055400  54 68 69 73 20 53 57 49  20 61 70 70 6c 69 65 73  |This SWI applies|
00055410  20 6f 6e 6c 79 20 74 6f  20 56 44 55 34 20 74 65  | only to VDU4 te|
00055420  78 74 2e 00 44 41 54 41  42 01 00 00 57 69 6d 70  |xt..DATAB...Wimp|
00055430  5f 54 72 61 6e 73 66 65  72 42 6c 6f 63 6b 20 20  |_TransferBlock  |
00055440  28 26 34 30 30 46 31 29  0a 23 50 61 72 65 6e 74  |(&400F1).#Parent|
00055450  20 57 69 6d 70 5f 0a 3d  3e 09 52 30 20 3d 20 48  | Wimp_.=>.R0 = H|
00055460  61 6e 64 6c 65 20 6f 66  20 73 6f 75 72 63 65 20  |andle of source |
00055470  74 61 73 6b 0a 09 52 31  20 3d 20 70 6f 69 6e 74  |task..R1 = point|
00055480  65 72 20 74 6f 20 73 6f  75 72 63 65 20 64 61 74  |er to source dat|
00055490  61 0a 09 52 32 20 3d 20  48 61 6e 64 6c 65 20 6f  |a..R2 = Handle o|
000554a0  66 20 64 65 73 74 69 6e  61 74 69 6f 6e 20 74 61  |f destination ta|
000554b0  73 6b 0a 09 52 33 20 3d  20 70 6f 69 6e 74 65 72  |sk..R3 = pointer|
000554c0  20 74 6f 20 64 65 73 74  69 6e 61 74 69 6f 6e 20  | to destination |
000554d0  62 75 66 66 65 72 0a 09  52 34 20 3d 20 6c 65 6e  |buffer..R4 = len|
000554e0  67 74 68 20 6f 66 20 62  75 66 66 65 72 0a 0a 54  |gth of buffer..T|
000554f0  68 69 73 20 53 57 49 20  69 73 20 75 73 65 64 20  |his SWI is used |
00055500  74 6f 20 74 72 61 6e 73  66 65 72 20 61 20 62 6c  |to transfer a bl|
00055510  6f 63 6b 20 6f 66 20 64  61 74 61 20 66 72 6f 6d  |ock of data from|
00055520  20 6f 6e 65 20 74 61 73  6b 20 74 6f 20 61 6e 6f  | one task to ano|
00055530  74 68 65 72 2e 20 41 64  64 72 65 73 73 65 73 20  |ther. Addresses |
00055540  61 6e 64 20 62 75 66 66  65 72 6c 65 6e 67 74 68  |and bufferlength|
00055550  20 61 72 65 20 61 6c 6c  20 62 79 74 65 2d 61 6c  | are all byte-al|
00055560  69 67 6e 65 64 2e 00 00  44 41 54 41 91 02 00 00  |igned...DATA....|
00055570  57 69 6d 70 5f 55 70 64  61 74 65 57 69 6e 64 6f  |Wimp_UpdateWindo|
00055580  77 20 20 28 26 34 30 30  43 39 29 0a 23 50 61 72  |w  (&400C9).#Par|
00055590  65 6e 74 20 57 69 6d 70  5f 0a 3d 3e 09 52 31 20  |ent Wimp_.=>.R1 |
000555a0  3d 20 42 6c 6f 63 6b 20  3a 0a 09 20 20 30 09 57  |= Block :..  0.W|
000555b0  69 6e 64 6f 77 20 68 61  6e 64 6c 65 0a 09 20 20  |indow handle..  |
000555c0  34 09 57 6f 72 6b 20 61  72 65 61 20 72 65 63 74  |4.Work area rect|
000555d0  61 6e 67 6c 65 09 6d 69  6e 78 20 28 69 6e 63 6c  |angle.minx (incl|
000555e0  29 0a 09 20 20 38 09 20  09 09 09 6d 69 6e 79 20  |)..  8. ...miny |
000555f0  28 69 6e 63 6c 29 0a 09  20 20 31 32 09 20 09 09  |(incl)..  12. ..|
00055600  09 6d 61 78 78 20 28 65  78 63 6c 29 0a 09 20 20  |.maxx (excl)..  |
00055610  31 36 09 20 09 09 09 6d  61 78 79 20 28 65 78 63  |16. ...maxy (exc|
00055620  6c 29 0a 0a 5c 3c 3d 09  45 78 69 74 73 20 74 68  |l)..\<=.Exits th|
00055630  72 6f 75 67 68 20 3c 57  69 6d 70 5f 47 65 74 52  |rough <Wimp_GetR|
00055640  65 63 74 61 6e 67 6c 65  3e 0a 0a 23 54 61 62 0a  |ectangle>..#Tab.|
00055650  54 68 69 73 20 53 57 49  20 69 73 20 73 69 6d 69  |This SWI is simi|
00055660  6c 61 72 20 74 6f 20 3c  57 69 6d 70 5f 52 65 64  |lar to <Wimp_Red|
00055670  72 61 77 57 69 6e 64 6f  77 3e 2e 0a 44 69 66 66  |rawWindow>..Diff|
00055680  65 72 65 6e 63 65 73 20  3a 0a 20 20 2a 09 4e 6f  |erences :.  *.No|
00055690  74 20 61 6c 6c 20 6f 66  20 77 69 6e 64 6f 77 20  |t all of window |
000556a0  68 61 73 20 74 6f 20 62  65 20 75 70 64 61 74 65  |has to be update|
000556b0  64 2e 0a 20 20 2a 09 52  65 63 74 61 6e 67 6c 65  |d..  *.Rectangle|
000556c0  73 20 61 72 65 20 6e 6f  74 20 63 6c 65 61 72 65  |s are not cleare|
000556d0  64 20 62 79 20 57 69 6d  70 2e 0a 20 20 2a 09 43  |d by Wimp..  *.C|
000556e0  61 6e 20 62 65 20 63 61  6c 6c 65 64 20 61 74 20  |an be called at |
000556f0  61 6e 79 20 74 69 6d 65  2c 20 6e 6f 74 20 6a 75  |any time, not ju|
00055700  73 74 20 69 6e 20 72 65  73 70 6f 6e 73 65 20 74  |st in response t|
00055710  6f 20 52 65 64 72 61 77  57 69 6e 64 6f 77 20 6d  |o RedrawWindow m|
00055720  65 73 73 61 67 65 2e 0a  20 20 2a 09 4e 4f 54 45  |essage..  *.NOTE|
00055730  3a 20 54 68 69 73 20 53  57 49 20 64 6f 65 73 20  |: This SWI does |
00055740  6e 6f 74 20 72 65 6d 6f  76 65 20 72 65 63 74 61  |not remove recta|
00055750  6e 67 6c 65 73 20 66 72  6f 6d 20 57 69 6d 70 5f  |ngles from Wimp_|
00055760  52 65 64 72 61 77 57 69  6e 64 6f 77 73 20 6c 69  |RedrawWindows li|
00055770  73 74 20 6f 66 20 69 6e  76 61 6c 69 64 20 72 65  |st of invalid re|
00055780  63 74 61 6e 67 6c 65 73  2e 0a 09 3d 3e 20 49 66  |ctangles...=> If|
00055790  20 74 68 65 20 61 72 65  61 20 69 73 20 61 6c 72  | the area is alr|
000557a0  65 61 64 79 20 69 6e 76  61 6c 69 64 2c 20 74 68  |eady invalid, th|
000557b0  65 6e 20 57 69 6d 70 20  77 69 6c 6c 20 73 65 6e  |en Wimp will sen|
000557c0  64 20 79 6f 75 20 72 65  64 72 61 77 20 6d 65 73  |d you redraw mes|
000557d0  73 61 67 65 73 2c 20 65  76 65 6e 20 69 66 20 79  |sages, even if y|
000557e0  6f 75 20 68 61 76 65 20  75 70 64 61 74 65 64 20  |ou have updated |
000557f0  74 68 65 20 61 72 65 61  2e 00 00 00 44 41 54 41  |the area....DATA|
00055800  f0 0c 00 00 56 61 6c 69  64 61 74 69 6f 6e 20 53  |....Validation S|
00055810  74 72 69 6e 67 73 0a 23  50 72 65 66 69 78 20 2e  |trings.#Prefix .|
00055820  0a 56 61 6c 69 64 61 74  69 6f 6e 20 73 74 72 69  |.Validation stri|
00055830  6e 67 20 63 61 6e 20 63  6f 6e 74 61 69 6e 20 74  |ng can contain t|
00055840  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 63 6f 6d  |he following com|
00055850  6d 61 6e 64 73 20 3a 0a  28 43 6f 6d 6d 61 6e 64  |mands :.(Command|
00055860  73 20 63 61 6e 20 62 65  20 73 65 70 61 72 61 74  |s can be separat|
00055870  65 64 20 62 79 20 22 3b  22 29 0a 0a 3c 41 3e 09  |ed by ";")..<A>.|
00055880  41 6c 6c 6f 77 61 62 6c  65 20 63 68 61 72 61 63  |Allowable charac|
00055890  74 65 72 73 2e 0a 3c 44  3e 09 4d 61 73 6b 20 74  |ters..<D>.Mask t|
000558a0  79 70 65 64 20 63 68 61  72 61 63 74 65 72 73 2e  |yped characters.|
000558b0  0a 3c 46 3e 09 53 65 74  20 66 6f 6e 74 20 63 6f  |.<F>.Set font co|
000558c0  6c 6f 75 72 73 2e 0a 3c  4b 3e 09 41 73 73 69 67  |lours..<K>.Assig|
000558d0  6e 20 66 75 6e 63 74 69  6f 6e 61 6c 69 74 79 20  |n functionality |
000558e0  74 6f 20 73 70 65 63 69  66 69 63 20 6b 65 79 73  |to specific keys|
000558f0  0a 3c 4c 3e 09 54 65 78  74 20 69 6e 20 69 63 6f  |.<L>.Text in ico|
00055900  6e 20 77 69 6c 6c 20 62  65 20 66 6f 72 6d 61 74  |n will be format|
00055910  74 65 64 20 28 73 70 6c  69 74 29 0a 3c 50 3e 09  |ted (split).<P>.|
00055920  53 65 74 73 20 70 6f 69  6e 74 65 72 20 73 68 61  |Sets pointer sha|
00055930  70 65 20 61 6e 64 20 61  63 74 69 76 65 20 70 6f  |pe and active po|
00055940  69 6e 74 0a 3c 52 3e 09  42 6f 72 64 65 72 20 63  |int.<R>.Border c|
00055950  6f 6d 6d 61 6e 64 73 2e  0a 3c 53 3e 09 53 70 72  |ommands..<S>.Spr|
00055960  69 74 65 6e 61 6d 65 2e  0a 23 0a 23 53 75 62 70  |itename..#.#Subp|
00055970  61 67 65 20 41 0a 56 61  6c 69 64 61 74 69 6f 6e  |age A.Validation|
00055980  20 73 74 72 69 6e 67 20  27 41 27 0a 55 73 65 3a  | string 'A'.Use:|
00055990  09 45 78 63 6c 75 64 65  2f 61 63 63 65 70 74 20  |.Exclude/accept |
000559a0  6f 6e 6c 79 20 63 65 72  74 61 69 6e 20 63 68 61  |only certain cha|
000559b0  72 61 63 74 65 72 73 20  69 6e 74 6f 20 61 20 77  |racters into a w|
000559c0  72 69 74 65 61 62 6c 65  20 69 63 6f 6e 2e 0a 0a  |riteable icon...|
000559d0  53 79 6e 74 61 78 3a 09  7b 46 63 6f 64 65 3a 41  |Syntax:.{Fcode:A|
000559e0  5b 63 68 61 72 20 6c 69  73 74 5d 5b 7e 65 78 63  |[char list][~exc|
000559f0  6c 75 73 69 6f 6e 20 6c  69 73 74 5d 7d 0a 09 41  |lusion list]}..A|
00055a00  6c 6c 6f 77 20 63 68 61  72 61 63 74 65 72 73 20  |llow characters |
00055a10  69 6e 20 27 63 68 61 72  20 6c 69 73 74 27 2e 0a  |in 'char list'..|
00055a20  09 44 69 73 61 6c 6c 6f  77 20 63 68 61 72 61 63  |.Disallow charac|
00055a30  74 65 72 73 20 69 6e 20  27 65 78 63 6c 75 73 69  |ters in 'exclusi|
00055a40  6f 6e 20 6c 69 73 74 27  0a 0a 45 78 61 6d 70 6c  |on list'..Exampl|
00055a50  65 73 3a 09 41 30 2d 39  61 2d 7a 7e 62 09 41 6c  |es:.A0-9a-z~b.Al|
00055a60  6c 6f 77 73 20 30 2e 2e  39 2c 20 61 2c 20 63 2e  |lows 0..9, a, c.|
00055a70  2e 7a 0a 09 41 7e 58 09  09 41 6c 6c 6f 77 73 20  |.z..A~X..Allows |
00055a80  61 6c 6c 20 63 68 61 72  73 20 62 75 74 20 58 0a  |all chars but X.|
00055a90  09 41 7e 5c 5c 7e 09 09  41 6c 6c 6f 77 73 20 61  |.A~\\~..Allows a|
00055aa0  6c 6c 20 63 68 61 72 73  20 62 75 74 20 7e 0a 09  |ll chars but ~..|
00055ab0  41 7e 09 09 41 6c 6c 6f  77 73 20 61 6c 6c 20 63  |A~..Allows all c|
00055ac0  68 61 72 73 0a 23 0a 23  53 75 62 70 61 67 65 20  |hars.#.#Subpage |
00055ad0  44 0a 56 61 6c 69 64 61  74 69 6f 6e 20 73 74 72  |D.Validation str|
00055ae0  69 6e 67 20 27 44 27 0a  55 73 65 3a 09 54 68 65  |ing 'D'.Use:.The|
00055af0  20 6d 61 73 6b 69 6e 67  20 6f 66 20 74 68 65 20  | masking of the |
00055b00  63 6f 6e 74 65 6e 74 73  20 6f 66 20 69 63 6f 6e  |contents of icon|
00055b10  73 2e 20 55 73 75 61 6c  6c 79 20 75 73 65 64 20  |s. Usually used |
00055b20  69 6e 20 70 61 73 73 77  6f 72 64 20 69 63 6f 6e  |in password icon|
00055b30  73 2e 0a 0a 53 79 6e 74  61 78 3a 09 7b 46 63 6f  |s...Syntax:.{Fco|
00055b40  64 65 3a 44 63 68 61 72  7d 0a 09 44 69 73 70 6c  |de:Dchar}..Displ|
00055b50  61 79 73 20 61 6c 6c 20  74 79 70 65 64 20 63 68  |ays all typed ch|
00055b60  61 72 73 20 61 73 20 27  63 68 61 72 27 0a 09 53  |ars as 'char'..S|
00055b70  70 65 63 69 61 6c 20 63  68 61 72 61 63 74 65 72  |pecial character|
00055b80  73 20 6d 75 73 74 20 62  65 20 70 72 65 63 65 64  |s must be preced|
00055b90  65 64 20 62 79 20 61 20  5c 5c 0a 0a 45 78 61 6d  |ed by a \\..Exam|
00055ba0  70 6c 65 73 3a 09 7b 46  63 6f 64 65 3a 44 2a 7d  |ples:.{Fcode:D*}|
00055bb0  09 43 6f 6e 74 65 6e 74  73 20 6f 66 20 74 68 65  |.Contents of the|
00055bc0  20 69 63 6f 6e 20 69 73  20 64 69 73 70 6c 61 79  | icon is display|
00055bd0  65 64 20 61 73 20 61 20  73 65 72 69 65 73 20 6f  |ed as a series o|
00055be0  66 20 2a 27 73 2e 0a 09  09 7b 46 63 6f 64 65 3a  |f *'s....{Fcode:|
00055bf0  44 5c 2d 7d 09 43 6f 6e  74 65 6e 74 73 20 64 69  |D\-}.Contents di|
00055c00  73 70 6c 61 79 65 64 20  61 73 20 61 20 73 65 72  |splayed as a ser|
00055c10  69 65 73 20 6f 66 20 27  2d 27 73 0a 23 0a 23 53  |ies of '-'s.#.#S|
00055c20  75 62 70 61 67 65 20 46  0a 56 61 6c 69 64 61 74  |ubpage F.Validat|
00055c30  69 6f 6e 20 73 74 72 69  6e 67 20 27 46 27 0a 55  |ion string 'F'.U|
00055c40  73 65 3a 09 54 68 65 20  64 65 66 69 6e 69 74 69  |se:.The definiti|
00055c50  6f 6e 20 6f 66 20 6f 75  74 6c 69 6e 65 20 66 6f  |on of outline fo|
00055c60  6e 74 20 63 6f 6c 6f 75  72 73 2e 0a 0a 53 79 6e  |nt colours...Syn|
00055c70  74 61 78 3a 09 7b 46 63  6f 64 65 3a 46 78 79 7d  |tax:.{Fcode:Fxy}|
00055c80  0a 09 78 20 3d 20 42 61  63 6b 67 72 6f 75 6e 64  |..x = Background|
00055c90  0a 09 79 20 3d 20 46 6f  72 65 67 72 6f 75 6e 64  |..y = Foreground|
00055ca0  2e 0a 09 78 20 61 6e 64  20 79 20 61 72 65 20 68  |...x and y are h|
00055cb0  65 78 61 64 65 63 69 6d  61 6c 20 64 69 67 69 74  |exadecimal digit|
00055cc0  73 3a 20 30 2e 2e 39 2c  41 2e 2e 46 0a 0a 4e 6f  |s: 0..9,A..F..No|
00055cd0  74 65 73 3a 09 54 68 69  73 20 63 61 6c 6c 20 75  |tes:.This call u|
00055ce0  73 65 73 20 3c 57 69 6d  70 5f 53 65 74 46 6f 6e  |ses <Wimp_SetFon|
00055cf0  74 43 6f 6c 6f 75 72 73  3e 2e 0a 0a 45 78 61 6d  |tColours>...Exam|
00055d00  70 6c 65 73 3a 09 7b 46  63 6f 64 65 3a 46 41 33  |ples:.{Fcode:FA3|
00055d10  7d 09 73 65 74 73 20 62  61 63 6b 67 72 6f 75 6e  |}.sets backgroun|
00055d20  64 20 74 6f 20 31 30 20  61 6e 64 20 66 6f 72 65  |d to 10 and fore|
00055d30  67 72 6f 75 6e 64 20 74  6f 20 33 2e 0a 09 7b 46  |ground to 3...{F|
00055d40  63 6f 64 65 3a 46 30 37  7d 09 73 65 74 73 20 62  |code:F07}.sets b|
00055d50  61 63 6b 67 72 6f 75 6e  64 20 74 6f 20 30 20 61  |ackground to 0 a|
00055d60  6e 64 20 66 6f 72 65 67  72 6f 75 6e 64 20 74 6f  |nd foreground to|
00055d70  20 37 20 28 64 65 66 61  75 6c 74 29 2e 0a 23 0a  | 7 (default)..#.|
00055d80  23 53 75 62 70 61 67 65  20 4b 0a 56 61 6c 69 64  |#Subpage K.Valid|
00055d90  61 74 69 6f 6e 20 73 74  72 69 6e 67 20 27 4b 27  |ation string 'K'|
00055da0  0a 55 73 65 3a 09 41 73  73 69 67 6e 73 20 66 75  |.Use:.Assigns fu|
00055db0  6e 63 74 69 6f 6e 61 6c  69 74 79 20 74 6f 20 73  |nctionality to s|
00055dc0  70 65 63 69 66 69 63 20  6b 65 79 73 2e 0a 0a 53  |pecific keys...S|
00055dd0  79 6e 74 61 78 3a 09 7b  46 63 6f 64 65 3a 4b 6f  |yntax:.{Fcode:Ko|
00055de0  70 74 69 6f 6e 73 7d 0a  0a 4f 70 74 69 6f 6e 73  |ptions}..Options|
00055df0  3a 09 52 09 52 65 74 75  72 6e 20 6d 6f 76 65 73  |:.R.Return moves|
00055e00  20 63 61 72 65 74 20 74  6f 20 6e 65 78 74 20 77  | caret to next w|
00055e10  72 69 74 61 62 6c 65 20  69 63 6f 6e 2e 20 28 45  |ritable icon. (E|
00055e20  78 63 65 70 74 20 66 6f  72 20 6c 61 73 74 2e 29  |xcept for last.)|
00055e30  0a 09 41 09 55 70 2f 44  6f 77 6e 20 61 72 72 6f  |..A.Up/Down arro|
00055e40  77 20 6d 6f 76 65 73 20  74 6f 20 70 72 65 76 2f  |w moves to prev/|
00055e50  6e 65 78 74 20 77 72 69  74 61 62 6c 65 0a 09 54  |next writable..T|
00055e60  09 54 61 62 20 6d 6f 76  65 73 20 74 6f 20 6e 65  |.Tab moves to ne|
00055e70  78 74 2c 20 73 68 69 66  74 2d 54 61 62 20 74 6f  |xt, shift-Tab to|
00055e80  20 70 72 65 76 69 6f 75  73 0a 09 44 09 44 65 6c  | previous..D.Del|
00055e90  65 74 69 6e 67 20 77 69  6c 6c 20 61 6c 73 6f 20  |eting will also |
00055ea0  72 65 70 6f 72 74 20 74  68 65 20 6b 65 79 70 72  |report the keypr|
00055eb0  65 73 73 0a 09 4e 09 54  61 73 6b 20 77 69 6c 6c  |ess..N.Task will|
00055ec0  20 62 65 20 6e 6f 74 69  66 69 65 64 20 6f 66 20  | be notified of |
00055ed0  61 6c 6c 20 6b 65 79 70  72 65 73 73 65 73 20 69  |all keypresses i|
00055ee0  6e 20 69 63 6f 6e 0a 0a  45 78 61 6d 70 6c 65 73  |n icon..Examples|
00055ef0  3a 09 7b 46 63 6f 64 65  3a 4b 74 61 72 6e 7d 0a  |:.{Fcode:Ktarn}.|
00055f00  09 09 7b 46 63 6f 64 65  7d 4b 6e 64 7b 66 7d 0a  |..{Fcode}Knd{f}.|
00055f10  23 0a 23 53 75 62 70 61  67 65 20 4c 0a 56 61 6c  |#.#Subpage L.Val|
00055f20  69 64 61 74 69 6f 6e 20  73 74 72 69 6e 67 20 27  |idation string '|
00055f30  4c 27 0a 55 73 65 3a 09  46 6f 72 6d 61 74 74 69  |L'.Use:.Formatti|
00055f40  6e 67 20 74 65 78 74 20  74 6f 20 66 69 74 20 74  |ng text to fit t|
00055f50  68 65 20 69 63 6f 6e 20  61 73 20 62 65 73 74 20  |he icon as best |
00055f60  61 73 20 70 6f 73 73 69  62 6c 65 2e 0a 0a 53 79  |as possible...Sy|
00055f70  6e 74 61 78 3a 09 7b 46  63 6f 64 65 3a 4c 68 7d  |ntax:.{Fcode:Lh}|
00055f80  0a 09 68 20 69 73 20 74  68 65 20 76 65 72 74 69  |..h is the verti|
00055f90  63 61 6c 20 73 70 61 63  69 6e 67 20 62 65 74 77  |cal spacing betw|
00055fa0  65 65 6e 20 6c 69 6e 65  73 20 6f 66 20 74 65 78  |een lines of tex|
00055fb0  74 20 69 6e 20 4f 53 20  75 6e 69 74 73 2e 20 49  |t in OS units. I|
00055fc0  66 20 6f 6d 69 74 74 65  64 2c 20 34 30 20 75 6e  |f omitted, 40 un|
00055fd0  69 74 73 20 69 73 20 75  73 65 64 20 28 61 20 73  |its is used (a s|
00055fe0  79 73 74 65 6d 20 66 6f  6e 74 20 63 68 61 72 61  |ystem font chara|
00055ff0  63 74 65 72 20 69 73 20  33 32 20 4f 53 20 75 6e  |cter is 32 OS un|
00056000  69 74 73 20 68 69 67 68  29 2e 0a 0a 4e 6f 74 65  |its high)...Note|
00056010  73 3a 09 54 68 69 73 20  6f 70 74 69 6f 6e 20 63  |s:.This option c|
00056020  61 6e 20 6f 6e 6c 79 20  62 65 20 75 73 65 64 20  |an only be used |
00056030  77 69 74 68 20 69 63 6f  6e 73 20 77 68 69 63 68  |with icons which|
00056040  20 61 72 65 20 68 6f 72  69 7a 6f 6e 74 61 6c 6c  | are horizontall|
00056050  79 20 61 6e 64 20 76 65  72 74 69 63 61 6c 6c 79  |y and vertically|
00056060  20 63 65 6e 74 72 65 64  2c 20 61 6e 64 20 64 6f  | centred, and do|
00056070  20 6e 6f 74 20 63 6f 6e  74 61 69 6e 20 61 6e 20  | not contain an |
00056080  61 6e 74 69 2d 61 6c 69  61 73 65 64 20 66 6f 6e  |anti-aliased fon|
00056090  74 2e 20 54 68 65 20 69  63 6f 6e 20 6d 75 73 74  |t. The icon must|
000560a0  20 6e 6f 74 20 62 65 20  77 72 69 74 65 61 62 6c  | not be writeabl|
000560b0  65 2c 20 73 69 6e 63 65  20 74 68 65 20 63 61 72  |e, since the car|
000560c0  65 74 20 77 6f 75 6c 64  20 6e 6f 74 20 62 65 20  |et would not be |
000560d0  70 6f 73 69 74 69 6f 6e  65 64 20 63 6f 72 72 65  |positioned corre|
000560e0  63 74 6c 79 20 69 6e 73  69 64 65 20 69 74 2e 0a  |ctly inside it..|
000560f0  0a 45 78 61 6d 70 6c 65  73 3a 09 7b 46 63 6f 64  |.Examples:.{Fcod|
00056100  65 3a 4c 34 30 7d 0a 23  0a 23 53 75 62 70 61 67  |e:L40}.#.#Subpag|
00056110  65 20 50 0a 56 61 6c 69  64 61 74 69 6f 6e 20 73  |e P.Validation s|
00056120  74 72 69 6e 67 20 27 50  27 0a 55 73 65 3a 09 54  |tring 'P'.Use:.T|
00056130  68 65 20 63 68 61 6e 67  69 6e 67 20 6f 66 20 74  |he changing of t|
00056140  68 65 20 70 6f 69 6e 74  65 72 20 73 68 61 70 65  |he pointer shape|
00056150  20 61 6e 64 20 61 63 74  69 76 65 20 70 6f 69 6e  | and active poin|
00056160  74 2e 0a 0a 53 79 6e 74  61 78 3a 09 7b 46 63 6f  |t...Syntax:.{Fco|
00056170  64 65 3a 50 73 70 72 69  74 65 6e 61 6d 65 5b 2c  |de:Pspritename[,|
00056180  78 2c 79 5d 7d 0a 09 73  70 72 69 74 65 6e 61 6d  |x,y]}..spritenam|
00056190  65 20 69 73 20 61 20 73  70 72 69 74 65 20 69 6e  |e is a sprite in|
000561a0  20 74 68 65 20 57 69 6d  70 20 73 70 72 69 74 65  | the Wimp sprite|
000561b0  20 70 6f 6f 6c 2e 0a 09  78 20 61 6e 64 20 79 20  | pool...x and y |
000561c0  61 72 65 20 74 68 65 20  6e 65 77 20 61 63 74 69  |are the new acti|
000561d0  76 65 20 70 6f 69 6e 74  73 20 66 6f 72 20 74 68  |ve points for th|
000561e0  65 20 70 6f 69 6e 74 65  72 2e 0a 0a 45 78 61 6d  |e pointer...Exam|
000561f0  70 6c 65 73 3a 09 7b 46  63 6f 64 65 3a 50 70 74  |ples:.{Fcode:Ppt|
00056200  72 5f 77 72 69 74 65 2c  34 2c 34 7d 09 50 6f 69  |r_write,4,4}.Poi|
00056210  6e 74 65 72 20 66 6f 72  20 77 72 69 74 61 62 6c  |nter for writabl|
00056220  65 20 69 63 6f 6e 73 2e  0a 09 09 7b 46 63 6f 64  |e icons....{Fcod|
00056230  65 3a 50 70 74 72 5f 6d  65 6e 75 2c 36 2c 35 7d  |e:Pptr_menu,6,5}|
00056240  09 50 6f 69 6e 74 65 72  20 66 6f 72 20 70 6f 70  |.Pointer for pop|
00056250  2d 75 70 20 6d 65 6e 75  20 69 63 6f 6e 73 2e 0a  |-up menu icons..|
00056260  23 0a 23 53 75 62 70 61  67 65 20 52 0a 56 61 6c  |#.#Subpage R.Val|
00056270  69 64 61 74 69 6f 6e 20  73 74 72 69 6e 67 20 27  |idation string '|
00056280  52 27 0a 55 73 65 3a 09  54 68 72 65 65 20 64 69  |R'.Use:.Three di|
00056290  6d 65 6e 73 69 6f 6e 61  6c 20 62 6f 72 64 65 72  |mensional border|
000562a0  73 20 66 6f 72 20 69 63  6f 6e 73 2e 0a 0a 53 79  |s for icons...Sy|
000562b0  6e 74 61 78 3a 09 7b 46  63 6f 64 65 3a 52 74 79  |ntax:.{Fcode:Rty|
000562c0  70 65 5b 2c 70 75 73 68  63 6f 6c 6f 75 72 5d 7d  |pe[,pushcolour]}|
000562d0  0a 09 70 75 73 68 63 6f  6c 6f 75 72 20 69 73 20  |..pushcolour is |
000562e0  75 73 65 64 20 66 6f 72  20 77 68 65 6e 20 74 68  |used for when th|
000562f0  65 20 69 63 6f 6e 20 69  73 20 69 6e 20 61 20 73  |e icon is in a s|
00056300  65 6c 65 63 74 65 64 20  73 74 61 74 65 20 66 6f  |elected state fo|
00056310  72 20 74 79 70 65 73 20  35 20 61 6e 64 20 36 2e  |r types 5 and 6.|
00056320  0a 54 79 70 65 73 3a 09  31 09 73 6c 61 62 20 6f  |.Types:.1.slab o|
00056330  75 74 0a 09 32 09 73 6c  61 62 20 69 6e 0a 09 33  |ut..2.slab in..3|
00056340  09 72 69 64 67 65 0a 09  34 09 63 68 61 6e 6e 65  |.ridge..4.channe|
00056350  6c 0a 09 35 09 61 63 74  69 6f 6e 20 62 75 74 74  |l..5.action butt|
00056360  6f 6e 0a 09 36 09 64 65  66 61 75 6c 74 20 61 63  |on..6.default ac|
00056370  74 69 6f 6e 0a 09 37 09  77 72 69 74 61 62 6c 65  |tion..7.writable|
00056380  0a 0a 45 78 61 6d 70 6c  65 73 3a 09 7b 46 63 6f  |..Examples:.{Fco|
00056390  64 65 3a 52 35 2c 33 7d  09 41 63 74 69 6f 6e 20  |de:R5,3}.Action |
000563a0  62 75 74 74 6f 6e 20 77  68 69 63 68 20 73 69 6e  |button which sin|
000563b0  6b 73 20 64 6f 77 6e 20  74 6f 20 63 6f 6c 6f 75  |ks down to colou|
000563c0  72 20 33 20 28 41 63 6f  72 6e 20 61 70 70 72 6f  |r 3 (Acorn appro|
000563d0  76 65 64 20 74 79 70 65  29 0a 20 09 09 7b 46 63  |ved type). ..{Fc|
000563e0  6f 64 65 3a 52 34 7d 09  41 63 6f 72 6e 20 72 65  |ode:R4}.Acorn re|
000563f0  63 6f 6d 6d 65 6e 64 65  64 20 62 6f 72 64 65 72  |commended border|
00056400  20 74 79 70 65 2e 0a 23  0a 23 53 75 62 70 61 67  | type..#.#Subpag|
00056410  65 20 53 0a 56 61 6c 69  64 61 74 69 6f 6e 20 73  |e S.Validation s|
00056420  74 72 69 6e 67 20 27 53  27 0a 55 73 65 3a 09 49  |tring 'S'.Use:.I|
00056430  6e 63 6c 75 64 69 6e 67  20 73 70 72 69 74 65 73  |ncluding sprites|
00056440  20 69 6e 20 69 6e 64 69  72 65 63 74 65 64 20 69  | in indirected i|
00056450  63 6f 6e 73 0a 0a 53 79  6e 74 61 78 3a 09 7b 46  |cons..Syntax:.{F|
00056460  63 6f 64 65 3a 53 73 70  72 69 74 65 6e 61 6d 65  |code:Sspritename|
00056470  5b 2c 3c 73 65 6c 65 63  74 65 64 5c 3e 5d 7d 0a  |[,<selected\>]}.|
00056480  09 73 65 6c 65 63 74 65  64 20 69 73 20 75 73 65  |.selected is use|
00056490  64 20 66 6f 72 20 77 68  65 6e 20 74 68 65 20 69  |d for when the i|
000564a0  63 6f 6e 20 69 73 20 69  6e 20 61 20 73 65 6c 65  |con is in a sele|
000564b0  63 74 65 64 20 73 74 61  74 65 2e 0a 0a 45 78 61  |cted state...Exa|
000564c0  6d 70 6c 65 73 3a 09 7b  46 63 6f 64 65 7d 09 53  |mples:.{Fcode}.S|
000564d0  73 77 69 74 63 68 65 72  0a 09 09 53 6f 70 74 6f  |switcher...Sopto|
000564e0  66 66 2c 6f 70 74 6f 6e  7b 46 7d 0a 44 41 54 41  |ff,opton{F}.DATA|
000564f0  14 01 00 00 57 69 6d 70  5f 57 68 69 63 68 49 63  |....Wimp_WhichIc|
00056500  6f 6e 20 20 28 26 34 30  30 44 36 29 0a 23 50 61  |on  (&400D6).#Pa|
00056510  72 65 6e 74 20 57 69 6d  70 5f 0a 3d 3e 09 52 30  |rent Wimp_.=>.R0|
00056520  20 3d 09 57 69 6e 64 6f  77 20 68 61 6e 64 6c 65  | =.Window handle|
00056530  0a 09 52 31 20 3d 09 42  6c 6f 63 6b 20 74 6f 20  |..R1 =.Block to |
00056540  63 6f 6e 74 61 69 6e 20  69 63 6f 6e 20 68 61 6e  |contain icon han|
00056550  64 6c 65 73 0a 09 52 32  20 3d 09 42 69 74 20 6d  |dles..R2 =.Bit m|
00056560  61 73 6b 0a 09 52 33 20  3d 09 42 69 74 20 73 65  |ask..R3 =.Bit se|
00056570  74 74 69 6e 67 73 20 74  6f 20 6d 61 74 63 68 0a  |ttings to match.|
00056580  0a 41 6c 6c 20 69 63 6f  6e 73 20 77 69 74 68 0a  |.All icons with.|
00056590  23 57 72 61 70 20 4f 66  66 0a 20 20 28 69 63 6f  |#Wrap Off.  (ico|
000565a0  6e 20 66 6c 61 67 73 20  41 4e 44 20 52 32 29 20  |n flags AND R2) |
000565b0  3d 20 28 52 33 20 41 4e  44 20 52 32 29 0a 23 57  |= (R3 AND R2).#W|
000565c0  72 61 70 20 4f 6e 0a 61  72 65 20 61 64 64 65 64  |rap On.are added|
000565d0  20 74 6f 20 74 68 65 20  6c 69 73 74 20 69 6e 20  | to the list in |
000565e0  52 31 2e 0a 54 68 65 20  6c 69 73 74 20 69 73 20  |R1..The list is |
000565f0  74 65 72 6d 69 6e 61 74  65 64 20 62 79 20 2d 31  |terminated by -1|
00056600  44 41 54 41 54 04 00 00  46 6f 72 6d 61 74 20 6f  |DATAT...Format o|
00056610  66 20 61 20 77 69 6e 64  6f 77 20 62 6c 6f 63 6b  |f a window block|
00056620  0a 23 57 72 61 70 20 6f  66 66 0a 30 09 56 69 73  |.#Wrap off.0.Vis|
00056630  69 62 6c 65 20 61 72 65  61 20 6d 69 6e 69 6d 75  |ible area minimu|
00056640  6d 20 78 0a 34 09 56 69  73 69 62 6c 65 20 61 72  |m x.4.Visible ar|
00056650  65 61 20 6d 69 6e 69 6d  75 6d 20 79 0a 38 09 56  |ea minimum y.8.V|
00056660  69 73 69 62 6c 65 20 61  72 65 61 20 6d 61 78 69  |isible area maxi|
00056670  6d 75 6d 20 78 0a 31 32  09 56 69 73 69 62 6c 65  |mum x.12.Visible|
00056680  20 61 72 65 61 20 6d 61  78 69 6d 75 6d 20 79 0a  | area maximum y.|
00056690  31 36 09 53 63 72 6f 6c  6c 20 78 20 6f 66 66 73  |16.Scroll x offs|
000566a0  65 74 0a 32 30 09 53 63  72 6f 6c 6c 20 79 20 6f  |et.20.Scroll y o|
000566b0  66 66 73 65 74 0a 32 34  09 48 61 6e 64 6c 65 20  |ffset.24.Handle |
000566c0  74 6f 20 6f 70 65 6e 20  77 69 6e 64 6f 77 20 62  |to open window b|
000566d0  65 68 69 6e 64 20 28 2d  31 3d 74 6f 70 2c 2d 32  |ehind (-1=top,-2|
000566e0  3d 62 6f 74 74 6f 6d 2c  2d 33 3d 69 63 6f 6e 69  |=bottom,-3=iconi|
000566f0  73 65 29 0a 32 38 09 3c  57 69 6e 64 6f 77 20 66  |se).28.<Window f|
00056700  6c 61 67 73 3d 3e 77 69  6d 70 5f 77 69 6e 64 6f  |lags=>wimp_windo|
00056710  77 66 6c 61 67 73 3e 20  20 20 20 20 20 20 20 20  |wflags>         |
00056720  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00056730  20 20 20 20 20 20 20 20  20 20 20 20 20 20 44 65  |              De|
00056740  66 61 75 6c 74 20 63 6f  6c 73 3a 0a 33 32 09 54  |fault cols:.32.T|
00056750  69 74 6c 65 20 66 6f 72  65 67 72 6f 75 6e 64 2c  |itle foreground,|
00056760  20 61 6e 64 20 66 72 61  6d 65 20 63 6f 6c 6f 75  | and frame colou|
00056770  72 09 09 09 37 20 42 6c  61 63 6b 0a 09 28 26 46  |r...7 Black..(&F|
00056780  46 20 6d 65 61 6e 73 20  6e 6f 20 66 72 61 6d 65  |F means no frame|
00056790  2c 20 61 6e 64 20 6e 6f  20 74 69 74 6c 65 20 6f  |, and no title o|
000567a0  72 20 73 63 72 6f 6c 6c  62 61 72 73 29 09 09 2e  |r scrollbars)...|
000567b0  0a 33 33 09 54 69 74 6c  65 20 62 61 63 6b 67 72  |.33.Title backgr|
000567c0  6f 75 6e 64 09 09 09 09  09 32 20 47 72 65 79 0a  |ound.....2 Grey.|
000567d0  33 34 09 57 6f 72 6b 20  61 72 65 61 20 66 6f 72  |34.Work area for|
000567e0  65 67 72 6f 75 6e 64 0a  33 35 09 57 6f 72 6b 20  |eground.35.Work |
000567f0  61 72 65 61 20 62 61 63  6b 67 72 6f 75 6e 64 20  |area background |
00056800  28 26 46 46 20 6d 65 61  6e 73 20 57 69 6d 70 20  |(&FF means Wimp |
00056810  77 6f 6e 27 74 20 63 6c  65 61 72 29 0a 33 36 09  |won't clear).36.|
00056820  53 63 72 6f 6c 6c 62 61  72 20 6f 75 74 65 72 20  |Scrollbar outer |
00056830  63 6f 6c 6f 75 72 09 09  09 09 09 33 20 44 61 72  |colour.....3 Dar|
00056840  6b 20 67 72 65 79 0a 33  37 09 53 63 72 6f 6c 6c  |k grey.37.Scroll|
00056850  62 61 72 20 69 6e 6e 65  72 20 63 6f 6c 6f 75 72  |bar inner colour|
00056860  09 09 09 09 09 31 20 4c  69 67 68 74 20 67 72 65  |.....1 Light gre|
00056870  79 0a 33 38 09 54 69 74  6c 65 20 62 61 63 6b 67  |y.38.Title backg|
00056880  72 6f 75 6e 64 20 77 68  65 6e 20 69 6e 70 75 74  |round when input|
00056890  20 66 6f 63 75 73 09 09  09 31 32 20 43 72 65 61  | focus...12 Crea|
000568a0  6d 0a 33 39 09 30 0a 34  30 09 57 6f 72 6b 20 61  |m.39.0.40.Work a|
000568b0  72 65 61 20 6d 69 6e 69  6d 75 6d 20 78 0a 34 34  |rea minimum x.44|
000568c0  09 57 6f 72 6b 20 61 72  65 61 20 6d 69 6e 69 6d  |.Work area minim|
000568d0  75 6d 20 79 0a 34 38 09  57 6f 72 6b 20 61 72 65  |um y.48.Work are|
000568e0  61 20 6d 61 78 69 6d 75  6d 20 78 0a 35 32 09 57  |a maximum x.52.W|
000568f0  6f 72 6b 20 61 72 65 61  20 6d 61 78 69 6d 75 6d  |ork area maximum|
00056900  20 79 0a 35 36 09 54 69  74 6c 65 20 62 61 72 20  | y.56.Title bar |
00056910  3c 69 63 6f 6e 20 66 6c  61 67 73 3d 3e 77 69 6d  |<icon flags=>wim|
00056920  70 5f 69 63 6f 6e 66 6c  61 67 73 3e 0a 36 30 09  |p_iconflags>.60.|
00056930  3c 57 6f 72 6b 61 72 65  61 20 27 62 75 74 74 6f  |<Workarea 'butto|
00056940  6e 27 20 66 6c 61 67 73  3d 3e 77 69 6d 70 5f 77  |n' flags=>wimp_w|
00056950  6f 72 6b 61 72 65 61 62  75 74 74 6f 6e 66 6c 61  |orkareabuttonfla|
00056960  67 73 3e 0a 36 34 09 53  70 72 69 74 65 20 61 72  |gs>.64.Sprite ar|
00056970  65 61 20 63 6f 6e 74 72  6f 6c 20 62 6c 6f 63 6b  |ea control block|
00056980  20 70 6f 69 6e 74 65 72  20 28 2b 31 20 66 6f 72  | pointer (+1 for|
00056990  20 77 69 6d 70 29 0a 36  38 09 6d 69 6e 69 6d 75  | wimp).68.minimu|
000569a0  6d 20 77 69 64 74 68 20  20 20 28 4e 42 20 74 77  |m width   (NB tw|
000569b0  6f 20 62 79 74 65 73 29  0a 37 30 09 6d 69 6e 69  |o bytes).70.mini|
000569c0  6d 75 6d 20 68 65 69 67  68 74 20 20 28 4e 42 20  |mum height  (NB |
000569d0  74 77 6f 20 62 79 74 65  73 29 0a 37 32 09 74 69  |two bytes).72.ti|
000569e0  74 6c 65 20 64 61 74 61  0a 38 34 09 4e 72 20 6f  |tle data.84.Nr o|
000569f0  66 20 69 63 6f 6e 73 20  69 6e 20 69 6e 69 74 69  |f icons in initi|
00056a00  61 6c 20 64 65 66 69 6e  69 74 69 6f 6e 20 28 30  |al definition (0|
00056a10  20 6f 72 20 6d 6f 72 65  29 0a 38 38 09 30 20 6f  | or more).88.0 o|
00056a20  72 20 6d 6f 72 65 20 3c  69 63 6f 6e 20 62 6c 6f  |r more <icon blo|
00056a30  63 6b 73 3d 3e 77 69 6d  70 5f 69 63 6f 6e 62 6c  |cks=>wimp_iconbl|
00056a40  6f 63 6b 3e 2c 20 33 32  20 62 79 74 65 73 20 65  |ock>, 32 bytes e|
00056a50  61 63 68 2e 44 41 54 41  14 04 00 00 57 69 6e 64  |ach.DATA....Wind|
00056a60  6f 77 20 66 6c 61 67 73  0a 42 69 74 73 20 09 4d  |ow flags.Bits .M|
00056a70  65 61 6e 69 6e 67 20 77  68 65 6e 20 73 65 74 0a  |eaning when set.|
00056a80  23 4c 69 6e 65 0a 30 09  4f 6c 64 20 2d 20 48 61  |#Line.0.Old - Ha|
00056a90  73 20 74 69 74 6c 65 20  62 61 72 0a 31 09 57 69  |s title bar.1.Wi|
00056aa0  6e 64 6f 77 20 69 73 20  6d 6f 76 65 61 62 6c 65  |ndow is moveable|
00056ab0  20 28 64 72 61 67 67 61  62 6c 65 29 2e 0a 32 09  | (draggable)..2.|
00056ac0  4f 6c 64 20 2d 20 56 65  72 74 69 63 61 6c 20 73  |Old - Vertical s|
00056ad0  63 72 6f 6c 6c 20 62 61  72 0a 33 09 4f 6c 64 20  |croll bar.3.Old |
00056ae0  2d 20 48 6f 72 69 7a 6f  6e 74 61 6c 20 73 63 72  |- Horizontal scr|
00056af0  6f 6c 6c 20 62 61 72 0a  34 09 57 69 6e 64 6f 77  |oll bar.4.Window|
00056b00  20 63 61 6e 20 62 65 20  64 72 61 77 6e 20 63 6f  | can be drawn co|
00056b10  6d 70 6c 65 74 65 6c 79  20 62 79 20 57 69 6d 70  |mpletely by Wimp|
00056b20  2e 0a 35 09 57 69 6e 64  6f 77 20 69 73 20 61 20  |..5.Window is a |
00056b30  70 61 6e 65 2e 0a 36 09  57 69 6e 64 6f 77 20 63  |pane..6.Window c|
00056b40  61 6e 20 62 65 20 6f 70  65 6e 65 64 2f 64 72 61  |an be opened/dra|
00056b50  67 67 65 64 20 6f 75 74  73 69 64 65 20 73 63 72  |gged outside scr|
00056b60  65 65 6e 2e 0a 37 09 4f  6c 64 20 2d 20 48 61 73  |een..7.Old - Has|
00056b70  20 6e 6f 20 71 75 69 74  20 6f 72 20 62 61 63 6b  | no quit or back|
00056b80  20 62 6f 78 65 73 0a 38  09 52 65 74 75 72 6e 20  | boxes.8.Return |
00056b90  53 63 72 6f 6c 6c 20 52  65 71 75 65 73 74 20 77  |Scroll Request w|
00056ba0  69 74 68 20 61 75 74 6f  72 65 70 65 61 74 2e 0a  |ith autorepeat..|
00056bb0  39 09 52 65 74 75 72 6e  20 53 63 72 6f 6c 6c 20  |9.Return Scroll |
00056bc0  52 65 71 75 65 73 74 20  77 69 74 68 6f 75 74 20  |Request without |
00056bd0  61 75 74 6f 72 65 70 65  61 74 2e 0a 31 30 09 54  |autorepeat..10.T|
00056be0  72 65 61 74 20 63 6f 6c  6f 75 72 73 20 67 69 76  |reat colours giv|
00056bf0  65 6e 20 61 73 20 47 43  4f 4c 20 6e 75 6d 62 65  |en as GCOL numbe|
00056c00  72 73 20 3d 3e 20 30 2e  2e 32 35 34 0a 31 31 09  |rs => 0..254.11.|
00056c10  44 6f 6e 27 74 20 61 6c  6c 6f 77 20 61 6e 79 20  |Don't allow any |
00056c20  77 69 6e 64 6f 77 20 62  65 6c 6f 77 20 74 68 69  |window below thi|
00056c30  73 20 6f 6e 65 2e 0a 31  32 09 54 72 61 70 20 6b  |s one..12.Trap k|
00056c40  65 79 70 72 65 73 73 65  73 2e 0a 31 33 20 20 2b  |eypresses..13  +|
00056c50  09 46 6f 72 63 65 20 77  69 6e 64 6f 77 20 74 6f  |.Force window to|
00056c60  20 73 74 61 79 20 6f 6e  20 73 63 72 65 65 6e 0a  | stay on screen.|
00056c70  31 34 20 20 2b 09 49 67  6e 6f 72 65 20 72 69 67  |14  +.Ignore rig|
00056c80  68 74 2d 65 78 74 65 6e  74 20 77 68 65 6e 20 64  |ht-extent when d|
00056c90  72 61 67 67 69 6e 67 20  73 69 7a 65 2d 62 6f 78  |ragging size-box|
00056ca0  0a 31 35 20 20 2b 09 49  67 6e 6f 72 65 20 62 6f  |.15  +.Ignore bo|
00056cb0  74 74 6f 6d 2d 65 78 74  65 6e 74 20 77 68 65 6e  |ttom-extent when|
00056cc0  20 64 72 61 67 67 69 6e  67 20 73 69 7a 65 2d 62  | dragging size-b|
00056cd0  6f 78 0a 31 36 09 57 69  6e 64 6f 77 20 69 73 20  |ox.16.Window is |
00056ce0  6f 70 65 6e 2e 0a 31 37  09 57 69 6e 64 6f 77 20  |open..17.Window |
00056cf0  69 73 20 66 75 6c 6c 79  20 76 69 73 69 62 6c 65  |is fully visible|
00056d00  2e 0a 31 38 09 57 69 6e  64 6f 77 20 68 61 73 20  |..18.Window has |
00056d10  62 65 65 6e 20 74 6f 67  67 6c 65 64 20 74 6f 20  |been toggled to |
00056d20  66 75 6c 6c 20 73 69 7a  65 2e 0a 31 39 09 4f 70  |full size..19.Op|
00056d30  65 6e 20 57 69 6e 64 6f  77 20 52 65 71 75 65 73  |en Window Reques|
00056d40  74 2c 20 69 73 20 63 61  75 73 65 64 20 62 79 20  |t, is caused by |
00056d50  54 6f 67 67 6c 65 20 53  69 7a 65 2e 0a 32 30 09  |Toggle Size..20.|
00056d60  57 69 6e 64 6f 77 20 68  61 73 20 74 68 65 20 69  |Window has the i|
00056d70  6e 70 75 74 20 66 6f 63  75 73 2e 0a 32 31 20 20  |nput focus..21  |
00056d80  2b 09 46 6f 72 63 65 20  77 69 6e 64 6f 77 20 74  |+.Force window t|
00056d90  6f 20 73 63 72 65 65 6e  20 6f 6e 20 6e 65 78 74  |o screen on next|
00056da0  20 3c 57 69 6d 70 5f 4f  70 65 6e 57 69 6e 64 6f  | <Wimp_OpenWindo|
00056db0  77 3e 0a 32 32 2d 32 33  09 30 0a 32 34 09 57 69  |w>.22-23.0.24.Wi|
00056dc0  6e 64 6f 77 20 68 61 73  20 42 61 63 6b 20 69 63  |ndow has Back ic|
00056dd0  6f 6e 0a 32 35 09 43 6c  6f 73 65 20 69 63 6f 6e  |on.25.Close icon|
00056de0  0a 32 36 09 54 69 74 6c  65 20 42 61 72 0a 32 37  |.26.Title Bar.27|
00056df0  09 54 6f 67 67 6c 65 20  73 69 7a 65 20 69 63 6f  |.Toggle size ico|
00056e00  6e 0a 32 38 09 56 65 72  74 69 63 61 6c 20 73 63  |n.28.Vertical sc|
00056e10  72 6f 6c 6c 62 61 72 0a  32 39 09 41 64 6a 75 73  |rollbar.29.Adjus|
00056e20  74 20 53 69 7a 65 20 69  63 6f 6e 0a 33 30 09 48  |t Size icon.30.H|
00056e30  6f 72 69 7a 6f 6e 74 61  6c 20 53 63 72 6f 6c 6c  |orizontal Scroll|
00056e40  62 61 72 0a 33 31 09 31  20 66 6f 72 20 75 73 69  |bar.31.1 for usi|
00056e50  6e 67 20 6e 65 77 20 66  6f 72 6d 61 74 2c 20 30  |ng new format, 0|
00056e60  20 66 6f 72 20 6f 6c 64  44 41 54 41 c9 01 00 00  | for oldDATA....|
00056e70  57 69 6e 64 6f 77 20 42  75 74 74 6f 6e 20 74 79  |Window Button ty|
00056e80  70 65 73 0a 23 57 72 61  70 20 4f 66 66 0a 42 69  |pes.#Wrap Off.Bi|
00056e90  74 73 20 31 32 2d 31 35  09 4d 65 61 6e 69 6e 67  |ts 12-15.Meaning|
00056ea0  0a 23 4c 69 6e 65 0a 30  09 09 49 67 6e 6f 72 65  |.#Line.0..Ignore|
00056eb0  20 61 6c 6c 20 63 6c 69  63 6b 73 0a 31 09 09 4e  | all clicks.1..N|
00056ec0  6f 74 69 66 79 20 74 61  73 6b 20 63 6f 6e 74 69  |otify task conti|
00056ed0  6e 75 61 6c 6c 79 2c 20  77 68 69 6c 65 20 70 6f  |nually, while po|
00056ee0  69 6e 74 65 72 20 6f 76  65 72 20 77 6f 72 6b 61  |inter over worka|
00056ef0  72 65 61 0a 32 09 09 43  6c 69 63 6b 20 28 61 75  |rea.2..Click (au|
00056f00  74 6f 2d 72 65 70 65 61  74 29 0a 33 09 09 43 6c  |to-repeat).3..Cl|
00056f10  69 63 6b 20 28 6e 6f 20  61 75 74 6f 2d 72 65 70  |ick (no auto-rep|
00056f20  65 61 74 29 0a 34 09 09  52 65 6c 65 61 73 65 20  |eat).4..Release |
00056f30  6f 76 65 72 20 77 6f 72  6b 61 72 65 61 20 6e 6f  |over workarea no|
00056f40  74 69 66 69 65 73 20 74  61 73 6b 0a 35 09 09 44  |tifies task.5..D|
00056f50  6f 75 62 6c 65 20 63 6c  69 63 6b 0a 36 09 09 33  |ouble click.6..3|
00056f60  20 2b 20 64 72 61 67 2e  0a 37 09 09 34 20 2b 20  | + drag..7..4 + |
00056f70  64 72 61 67 2e 20 54 68  65 73 65 20 52 65 74 75  |drag. These Retu|
00056f80  72 6e 20 62 75 74 74 6f  6e 20 73 74 61 74 65 20  |rn button state |
00056f90  2a 20 31 36 0a 38 09 09  35 20 2b 20 64 72 61 67  |* 16.8..5 + drag|
00056fa0  2e 0a 39 09 09 61 73 20  33 0a 31 30 09 09 43 6c  |..9..as 3.10..Cl|
00056fb0  69 63 6b 20 28 2a 32 35  36 29 2c 20 44 72 61 67  |ick (*256), Drag|
00056fc0  20 28 2a 31 36 29 2c 20  44 6f 75 62 6c 65 20 63  | (*16), Double c|
00056fd0  6c 69 63 6b 20 28 2a 31  29 0a 31 31 09 09 43 6c  |lick (*1).11..Cl|
00056fe0  69 63 6b 20 28 2a 31 29  2c 20 44 72 61 67 20 28  |ick (*1), Drag (|
00056ff0  2a 31 36 29 0a 31 32 2d  31 34 09 09 52 65 73 65  |*16).12-14..Rese|
00057000  72 76 65 64 0a 31 35 09  09 4d 6f 75 73 65 20 63  |rved.15..Mouse c|
00057010  6c 69 63 6b 20 63 61 75  73 65 73 20 77 69 6e 64  |lick causes wind|
00057020  6f 77 20 74 6f 20 67 61  69 6e 20 63 61 72 65 74  |ow to gain caret|
00057030  2e 00 00 00 44 49 52 24  a0 0a 00 00 a0 0a 00 00  |....DIR$........|
00057040  d4 7a 05 00 46 fd ff ff  fc 52 9b 3f db 00 00 00  |.z..F....R.?....|
00057050  13 00 00 00 00 00 00 00  30 00 00 00 b0 7b 05 00  |........0....{..|
00057060  46 fd ff ff ed e2 25 b7  14 02 00 00 13 00 00 00  |F.....%.........|
00057070  00 00 00 00 31 00 00 00  c4 7d 05 00 45 fd ff ff  |....1....}..E...|
00057080  81 12 f1 ff a3 02 00 00  13 00 00 00 00 00 00 00  |................|
00057090  31 30 00 00 68 80 05 00  45 fd ff ff 4e 0a f1 ff  |10..h...E...N...|
000570a0  a0 01 00 00 13 00 00 00  00 00 00 00 31 31 00 00  |............11..|
000570b0  08 82 05 00 45 fd ff ff  f1 05 f1 ff c2 00 00 00  |....E...........|
000570c0  13 00 00 00 00 00 00 00  31 31 5f 66 6c 61 67 73  |........11_flags|
000570d0  00 00 00 00 cc 82 05 00  45 fd ff ff 82 01 f1 ff  |........E.......|
000570e0  f4 00 00 00 13 00 00 00  00 00 00 00 31 32 00 00  |............12..|
000570f0  c0 83 05 00 45 fd ff ff  85 fe f0 ff 99 00 00 00  |....E...........|
00057100  13 00 00 00 00 00 00 00  31 32 5f 66 6c 61 67 73  |........12_flags|
00057110  00 00 00 00 5c 84 05 00  46 fd ff ff 65 ea 25 b7  |....\...F...e.%.|
00057120  2f 01 00 00 13 00 00 00  00 00 00 00 32 00 00 00  |/...........2...|
00057130  8c 85 05 00 46 fd ff ff  77 ea 3f 57 1c 01 00 00  |....F...w.?W....|
00057140  13 00 00 00 00 00 00 00  33 00 00 00 a8 86 05 00  |........3.......|
00057150  46 fd ff ff db f0 3f 57  60 01 00 00 13 00 00 00  |F.....?W`.......|
00057160  00 00 00 00 34 00 00 00  08 88 05 00 45 fd ff ff  |....4.......E...|
00057170  a2 da f0 ff 91 00 00 00  13 00 00 00 00 00 00 00  |................|
00057180  34 30 30 00 9c 88 05 00  45 fd ff ff ee d6 f0 ff  |400.....E.......|
00057190  4c 01 00 00 13 00 00 00  00 00 00 00 34 30 30 34  |L...........4004|
000571a0  30 00 00 00 e8 89 05 00  45 fd ff ff 0e d1 f0 ff  |0.......E.......|
000571b0  ea 01 00 00 13 00 00 00  00 00 00 00 34 30 30 43  |............400C|
000571c0  30 00 00 00 d4 8b 05 00  45 fd ff ff 00 c8 f0 ff  |0.......E.......|
000571d0  7b 01 00 00 13 00 00 00  00 00 00 00 34 30 30 43  |{...........400C|
000571e0  31 00 00 00 50 8d 05 00  46 fd ff ff db 03 c0 88  |1...P...F.......|
000571f0  04 01 00 00 13 00 00 00  00 00 00 00 34 30 30 43  |............400C|
00057200  32 00 00 00 54 8e 05 00  45 fd ff ff fe b7 f0 ff  |2...T...E.......|
00057210  87 00 00 00 13 00 00 00  00 00 00 00 34 30 30 43  |............400C|
00057220  33 00 00 00 dc 8e 05 00  46 fd ff ff aa b8 ba 22  |3.......F......"|
00057230  22 01 00 00 13 00 00 00  00 00 00 00 34 30 30 43  |"...........400C|
00057240  34 00 00 00 00 90 05 00  46 fd ff ff 8d 55 74 58  |4.......F....UtX|
00057250  86 02 00 00 13 00 00 00  00 00 00 00 34 30 30 43  |............400C|
00057260  35 00 00 00 88 92 05 00  45 fd ff ff 9e a7 f0 ff  |5.......E.......|
00057270  16 01 00 00 13 00 00 00  00 00 00 00 34 30 30 43  |............400C|
00057280  36 00 00 00 a0 93 05 00  45 fd ff ff 54 a3 f0 ff  |6.......E...T...|
00057290  c7 00 00 00 13 00 00 00  00 00 00 00 34 30 30 43  |............400C|
000572a0  37 00 00 00 68 94 05 00  46 fd ff ff f6 f9 ba 22  |7...h...F......"|
000572b0  ad 00 00 00 13 00 00 00  00 00 00 00 34 30 30 63  |............400c|
000572c0  39 00 00 00 18 95 05 00  45 fd ff ff 18 9e f0 ff  |9.......E.......|
000572d0  cd 00 00 00 13 00 00 00  00 00 00 00 34 30 31 00  |............401.|
000572e0  e8 95 05 00 45 fd ff ff  33 d4 e7 df 38 00 00 00  |....E...3...8...|
000572f0  13 00 00 00 00 00 00 00  34 32 35 38 30 00 00 00  |........42580...|
00057300  20 96 05 00 45 fd ff ff  f5 98 f0 ff 38 00 00 00  | ...E.......8...|
00057310  13 00 00 00 00 00 00 00  34 32 35 38 31 00 00 00  |........42581...|
00057320  58 96 05 00 45 fd ff ff  b4 96 f0 ff 32 00 00 00  |X...E.......2...|
00057330  13 00 00 00 00 00 00 00  34 32 35 38 32 00 00 00  |........42582...|
00057340  8c 96 05 00 45 fd ff ff  1c 93 f0 ff 70 00 00 00  |....E.......p...|
00057350  13 00 00 00 00 00 00 00  34 32 35 38 33 00 00 00  |........42583...|
00057360  fc 96 05 00 45 fd ff ff  5e d4 e7 df 37 00 00 00  |....E...^...7...|
00057370  13 00 00 00 00 00 00 00  34 32 35 38 34 00 00 00  |........42584...|
00057380  34 97 05 00 45 fd ff ff  60 d4 e7 df 37 00 00 00  |4...E...`...7...|
00057390  13 00 00 00 00 00 00 00  34 32 35 38 35 00 00 00  |........42585...|
000573a0  6c 97 05 00 45 fd ff ff  d0 8c f0 ff 51 00 00 00  |l...E.......Q...|
000573b0  13 00 00 00 00 00 00 00  34 32 35 38 36 00 00 00  |........42586...|
000573c0  c0 97 05 00 46 fd ff ff  5a ba 25 b7 3f 02 00 00  |....F...Z.%.?...|
000573d0  13 00 00 00 00 00 00 00  34 35 64 38 30 00 00 00  |........45d80...|
000573e0  00 9a 05 00 46 fd ff ff  c5 c7 25 b7 ed 02 00 00  |....F.....%.....|
000573f0  13 00 00 00 00 00 00 00  34 35 64 38 31 00 00 00  |........45d81...|
00057400  f0 9c 05 00 46 fd ff ff  cf 5d 52 b7 9f 01 00 00  |....F....]R.....|
00057410  13 00 00 00 00 00 00 00  34 35 64 38 32 00 00 00  |........45d82...|
00057420  90 9e 05 00 46 fd ff ff  97 55 25 b7 51 01 00 00  |....F....U%.Q...|
00057430  13 00 00 00 00 00 00 00  34 35 64 38 33 00 00 00  |........45d83...|
00057440  e4 9f 05 00 46 fd ff ff  b4 d6 25 b7 4e 02 00 00  |....F.....%.N...|
00057450  13 00 00 00 00 00 00 00  34 35 64 38 34 00 00 00  |........45d84...|
00057460  34 a2 05 00 46 fd ff ff  bc 06 26 b7 5f 04 00 00  |4...F.....&._...|
00057470  13 00 00 00 00 00 00 00  34 35 64 38 35 00 00 00  |........45d85...|
00057480  94 a6 05 00 45 fd ff ff  16 6f f0 ff c9 01 00 00  |....E....o......|
00057490  13 00 00 00 00 00 00 00  35 00 00 00 60 a8 05 00  |........5...`...|
000574a0  46 fd ff ff bc e3 b3 41  4b 01 00 00 13 00 00 00  |F......AK.......|
000574b0  00 00 00 00 35 30 32 00  ac a9 05 00 46 fd ff ff  |....502.....F...|
000574c0  0d f9 b3 41 3a 01 00 00  13 00 00 00 00 00 00 00  |...A:...........|
000574d0  35 30 33 00 e8 aa 05 00  46 fd ff ff 1e ee 25 b7  |503.....F.....%.|
000574e0  75 00 00 00 13 00 00 00  00 00 00 00 36 00 00 00  |u...........6...|
000574f0  60 ab 05 00 45 fd ff ff  fc 59 f0 ff fc 00 00 00  |`...E....Y......|
00057500  13 00 00 00 00 00 00 00  37 00 00 00 5c ac 05 00  |........7...\...|
00057510  46 fd ff ff 49 62 3b 52  3d 03 00 00 13 00 00 00  |F...Ib;R=.......|
00057520  00 00 00 00 38 00 00 00  9c af 05 00 46 fd ff ff  |....8.......F...|
00057530  e0 bc 7c a3 36 02 00 00  13 00 00 00 00 00 00 00  |..|.6...........|
00057540  38 30 31 34 30 00 00 00  d4 b1 05 00 45 fd ff ff  |80140.......E...|
00057550  46 46 f0 ff 06 01 00 00  13 00 00 00 00 00 00 00  |FF..............|
00057560  38 30 38 63 30 00 00 00  dc b2 05 00 45 fd ff ff  |808c0.......E...|
00057570  b0 3c f0 ff c0 00 00 00  13 00 00 00 00 00 00 00  |.<..............|
00057580  38 30 38 63 31 00 00 00  9c b3 05 00 45 fd ff ff  |808c1.......E...|
00057590  73 38 f0 ff 28 01 00 00  13 00 00 00 00 00 00 00  |s8..(...........|
000575a0  38 30 38 63 32 00 00 00  c4 b4 05 00 45 fd ff ff  |808c2.......E...|
000575b0  22 34 f0 ff 63 00 00 00  13 00 00 00 00 00 00 00  |"4..c...........|
000575c0  38 30 38 63 33 00 00 00  28 b5 05 00 45 fd ff ff  |808c3...(...E...|
000575d0  a2 32 f0 ff 61 00 00 00  13 00 00 00 00 00 00 00  |.2..a...........|
000575e0  38 30 38 63 34 00 00 00  8c b5 05 00 45 fd ff ff  |808c4.......E...|
000575f0  1d 31 f0 ff c9 01 00 00  13 00 00 00 00 00 00 00  |.1..............|
00057600  38 30 38 63 35 00 00 00  58 b7 05 00 45 fd ff ff  |808c5...X...E...|
00057610  59 26 f0 ff 64 00 00 00  13 00 00 00 00 00 00 00  |Y&..d...........|
00057620  38 30 38 63 36 00 00 00  bc b7 05 00 45 fd ff ff  |808c6.......E...|
00057630  b3 24 f0 ff 79 00 00 00  13 00 00 00 00 00 00 00  |.$..y...........|
00057640  38 30 38 63 37 00 00 00  38 b8 05 00 45 fd ff ff  |808c7...8...E...|
00057650  13 23 f0 ff b9 00 00 00  13 00 00 00 00 00 00 00  |.#..............|
00057660  38 30 65 31 65 00 00 00  f4 b8 05 00 45 fd ff ff  |80e1e.......E...|
00057670  6e 14 f0 ff 5a 02 00 00  13 00 00 00 00 00 00 00  |n...Z...........|
00057680  38 30 65 32 31 00 00 00  50 bb 05 00 46 fd ff ff  |80e21...P...F...|
00057690  e4 da 61 12 64 01 00 00  13 00 00 00 00 00 00 00  |..a.d...........|
000576a0  38 30 65 32 32 00 00 00  b4 bc 05 00 45 fd ff ff  |80e22.......E...|
000576b0  e8 02 f0 ff fa 00 00 00  13 00 00 00 00 00 00 00  |................|
000576c0  38 30 65 32 33 00 00 00  b0 bd 05 00 45 fd ff ff  |80e23.......E...|
000576d0  5d f3 ef ff 8a 01 00 00  13 00 00 00 00 00 00 00  |]...............|
000576e0  39 00 00 00 3c bf 05 00  45 fd ff ff f0 e9 ef ff  |9...<...E.......|
000576f0  64 01 00 00 13 00 00 00  00 00 00 00 41 00 00 00  |d...........A...|
00057700  a0 c0 05 00 46 fd ff ff  b3 e9 98 b7 7f 04 00 00  |....F...........|
00057710  13 00 00 00 00 00 00 00  45 78 74 45 64 69 74 00  |........ExtEdit.|
00057720  20 c5 05 00 46 fd ff ff  c7 a3 99 3f b3 04 00 00  | ...F......?....|
00057730  13 00 00 00 00 00 00 00  4e 65 77 73 42 61 73 65  |........NewsBase|
00057740  00 00 00 00 d4 c9 05 00  46 fd ff ff 15 13 51 4a  |........F.....QJ|
00057750  29 01 00 00 13 00 00 00  00 00 00 00 35 30 33 43  |)...........503C|
00057760  6f 64 65 73 00 00 00 00  00 cb 05 00 47 fd ff ff  |odes........G...|
00057770  bc 30 2d 0a 7c 07 00 00  13 01 00 00 00 00 00 00  |.0-.|...........|
00057780  4e 42 5f 00 90 12 06 00  46 fd ff ff 78 87 6c 9e  |NB_.....F...x.l.|
00057790  1d 01 00 00 13 00 00 00  00 00 00 00 34 30 30 43  |............400C|
000577a0  43 00 00 00 b0 13 06 00  46 fd ff ff 05 85 7e a3  |C.......F.....~.|
000577b0  1e 01 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |............8014|
000577c0  31 00 00 00 d0 14 06 00  46 fd ff ff 54 89 7f a3  |1.......F...T...|
000577d0  01 03 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |............8014|
000577e0  32 00 00 00 d4 17 06 00  46 fd ff ff 8f 8e 7d a3  |2.......F.....}.|
000577f0  96 01 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |............8014|
00057800  33 00 00 00 6c 19 06 00  46 fd ff ff 81 f0 7d a3  |3...l...F.....}.|
00057810  c4 01 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |............8014|
00057820  34 00 00 00 30 1b 06 00  46 fd ff ff 15 b5 81 a3  |4...0...F.......|
00057830  6c 03 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |l...........8014|
00057840  35 00 00 00 9c 1e 06 00  46 fd ff ff 8b 9b 80 a3  |5.......F.......|
00057850  a0 00 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |............8014|
00057860  36 00 00 00 3c 1f 06 00  46 fd ff ff 86 a8 80 a3  |6...<...F.......|
00057870  85 00 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |............8014|
00057880  37 00 00 00 c4 1f 06 00  46 fd ff ff 66 06 81 a3  |7.......F...f...|
00057890  c7 01 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |............8014|
000578a0  43 00 00 00 8c 21 06 00  46 fd ff ff 97 2d 81 a3  |C....!..F....-..|
000578b0  70 01 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |p...........8014|
000578c0  44 00 00 00 fc 22 06 00  46 fd ff ff 54 46 81 a3  |D...."..F...TF..|
000578d0  aa 00 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |............8014|
000578e0  45 00 00 00 a8 23 06 00  46 fd ff ff 87 60 81 a3  |E....#..F....`..|
000578f0  d7 00 00 00 13 00 00 00  00 00 00 00 38 30 31 34  |............8014|
00057900  46 00 00 00 80 24 06 00  46 fd ff ff f7 6f 81 a3  |F....$..F....o..|
00057910  b7 00 00 00 13 00 00 00  00 00 00 00 38 30 31 35  |............8015|
00057920  30 00 00 00 38 25 06 00  46 fd ff ff 96 aa 81 a3  |0...8%..F.......|
00057930  ae 00 00 00 13 00 00 00  00 00 00 00 38 30 31 35  |............8015|
00057940  31 00 00 00 e8 25 06 00  46 fd ff ff 22 99 81 a3  |1....%..F..."...|
00057950  9c 00 00 00 13 00 00 00  00 00 00 00 38 30 31 35  |............8015|
00057960  32 00 00 00 84 26 06 00  46 fd ff ff 4f a6 81 a3  |2....&..F...O...|
00057970  64 00 00 00 13 00 00 00  00 00 00 00 38 30 31 35  |d...........8015|
00057980  33 00 00 00 e8 26 06 00  46 fd ff ff 0b 52 24 b7  |3....&..F....R$.|
00057990  1c 07 00 00 13 00 00 00  00 00 00 00 45 78 74 45  |............ExtE|
000579a0  64 69 74 43 6c 69 65 6e  74 00 00 00 04 2e 06 00  |ditClient.......|
000579b0  46 fd ff ff f6 2d 25 b7  db 04 00 00 13 00 00 00  |F....-%.........|
000579c0  00 00 00 00 45 78 74 45  64 69 74 45 64 69 74 6f  |....ExtEditEdito|
000579d0  72 00 00 00 e0 32 06 00  46 fd ff ff c7 88 b7 22  |r....2..F......"|
000579e0  9d 00 00 00 13 00 00 00  00 00 00 00 45 78 74 45  |............ExtE|
000579f0  64 69 74 4a 6f 62 48 61  6e 64 6c 65 00 00 00 00  |ditJobHandle....|
00057a00  80 33 06 00 46 fd ff ff  58 98 b7 22 0e 01 00 00  |.3..F...X.."....|
00057a10  13 00 00 00 00 00 00 00  45 78 74 45 64 69 74 46  |........ExtEditF|
00057a20  6c 61 67 73 00 00 00 00  90 34 06 00 46 fd ff ff  |lags.....4..F...|
00057a30  53 0e ec 4d 20 02 00 00  13 00 00 00 00 00 00 00  |S..M ...........|
00057a40  45 78 74 45 64 69 74 43  75 72 73 6f 72 55 6e 69  |ExtEditCursorUni|
00057a50  74 73 00 00 b0 36 06 00  46 fd ff ff 8d 6e 50 b7  |ts...6..F....nP.|
00057a60  66 01 00 00 13 00 00 00  00 00 00 00 45 78 74 45  |f...........ExtE|
00057a70  64 69 74 44 61 74 61 74  79 70 65 73 00 00 00 00  |ditDatatypes....|
00057a80  18 38 06 00 46 fd ff ff  e2 57 26 b7 1b 01 00 00  |.8..F....W&.....|
00057a90  13 00 00 00 00 00 00 00  45 78 74 45 64 69 74 53  |........ExtEditS|
00057aa0  75 62 74 79 70 65 73 00  34 39 06 00 46 fd ff ff  |ubtypes.49..F...|
00057ab0  5a c5 0e fb c2 01 00 00  13 00 00 00 00 00 00 00  |Z...............|
00057ac0  45 78 74 45 64 69 74 4d  6f 64 65 72 61 74 6f 72  |ExtEditModerator|
00057ad0  00 00 00 00 44 41 54 41  db 00 00 00 51 75 69 74  |....DATA....Quit|
00057ae0  20 28 30 29 0a 4f 6e 20  72 65 63 65 69 76 69 6e  | (0).On receivin|
00057af0  67 20 74 68 69 73 20 62  72 6f 61 64 63 61 73 74  |g this broadcast|
00057b00  20 6d 65 73 73 61 67 65  2c 20 74 68 65 20 74 61  | message, the ta|
00057b10  73 6b 20 73 68 6f 75 6c  64 20 74 69 64 79 20 75  |sk should tidy u|
00057b20  70 2c 20 63 61 6c 6c 20  3c 57 69 6d 70 5f 43 6c  |p, call <Wimp_Cl|
00057b30  6f 73 65 44 6f 77 6e 3e  20 61 6e 64 20 3c 4f 53  |oseDown> and <OS|
00057b40  5f 45 78 69 74 3e 2e 0a  0a 49 66 20 74 61 73 6b  |_Exit>...If task|
00057b50  20 64 6f 65 73 6e 27 74  20 77 61 6e 74 20 74 6f  | doesn't want to|
00057b60  20 71 75 69 74 2c 20 69  74 20 73 68 6f 75 6c 64  | quit, it should|
00057b70  20 68 61 76 65 20 73 61  69 64 20 73 6f 20 77 68  | have said so wh|
00057b80  65 6e 20 69 74 20 72 65  63 65 69 76 65 64 20 74  |en it received t|
00057b90  68 65 20 3c 50 72 65 51  75 69 74 3d 3e 77 69 6d  |he <PreQuit=>wim|
00057ba0  70 5f 75 6d 38 3e 20 6d  65 73 73 61 67 65 2e 00  |p_um8> message..|
00057bb0  44 41 54 41 14 02 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
00057bc0  44 61 74 61 53 61 76 65  20 28 31 29 0a 44 61 74  |DataSave (1).Dat|
00057bd0  61 20 69 6e 20 62 6c 6f  63 6b 3a 0a 32 30 09 64  |a in block:.20.d|
00057be0  65 73 74 69 6e 61 74 69  6f 6e 09 77 69 6e 64 6f  |estination.windo|
00057bf0  77 20 68 61 6e 64 6c 65  0a 32 34 09 20 09 09 69  |w handle.24. ..i|
00057c00  63 6f 6e 20 68 61 6e 64  6c 65 0a 32 38 09 20 09  |con handle.28. .|
00057c10  09 73 63 72 65 65 6e 78  0a 33 32 09 20 09 09 73  |.screenx.32. ..s|
00057c20  63 72 65 65 6e 79 0a 33  36 09 65 73 74 69 6d 61  |creeny.36.estima|
00057c30  74 65 64 20 73 69 7a 65  0a 34 30 09 3c 66 69 6c  |ted size.40.<fil|
00057c40  65 74 79 70 65 3d 3e 46  69 6c 65 74 79 70 65 73  |etype=>Filetypes|
00057c50  3a 21 52 6f 6f 74 3e 20  6f 66 20 64 61 74 61 0a  |:!Root> of data.|
00057c60  34 34 09 70 72 6f 70 6f  73 65 64 20 6c 65 61 66  |44.proposed leaf|
00057c70  6e 61 6d 65 2c 20 30 2d  74 65 72 6d 69 6e 61 74  |name, 0-terminat|
00057c80  65 64 0a 0a 54 68 69 73  20 69 6e 64 69 63 61 74  |ed..This indicat|
00057c90  65 73 20 74 68 61 74 20  74 68 65 20 73 65 6e 64  |es that the send|
00057ca0  65 72 20 77 61 6e 74 73  20 74 6f 20 73 61 76 65  |er wants to save|
00057cb0  20 64 61 74 61 20 74 6f  20 74 68 65 20 72 65 63  | data to the rec|
00057cc0  65 69 76 65 72 0a 0a 4e  6f 72 6d 61 6c 20 75 73  |eiver..Normal us|
00057cd0  65 3a 0a 20 20 8f 09 55  73 65 72 20 68 61 73 20  |e:.  ..User has |
00057ce0  74 65 72 6d 69 6e 61 74  65 64 20 61 20 64 72 61  |terminated a dra|
00057cf0  67 2e 0a 20 20 8f 09 59  6f 75 20 67 65 74 20 74  |g..  ..You get t|
00057d00  68 65 20 66 69 72 73 74  20 66 6f 75 72 20 77 6f  |he first four wo|
00057d10  72 64 73 20 77 69 74 68  20 3c 57 69 6d 70 5f 47  |rds with <Wimp_G|
00057d20  65 74 50 6f 69 6e 74 65  72 49 6e 66 6f 3e 0a 20  |etPointerInfo>. |
00057d30  20 8f 09 59 6f 75 20 73  65 6e 64 20 6d 65 73 73  | ..You send mess|
00057d40  61 67 65 20 74 6f 20 6d  65 6e 74 69 6f 6e 65 64  |age to mentioned|
00057d50  20 77 69 6e 64 6f 77 2e  0a 0a 50 6f 73 73 69 62  | window...Possib|
00057d60  6c 65 20 72 65 73 70 6f  6e 73 65 73 20 66 72 6f  |le responses fro|
00057d70  6d 20 6f 74 68 65 72 20  74 61 73 6b 3a 0a 20 20  |m other task:.  |
00057d80  8f 09 49 74 20 73 65 6e  64 73 20 3c 44 61 74 61  |..It sends <Data|
00057d90  53 61 76 65 41 63 6b 3d  3e 77 69 6d 70 5f 75 6d  |SaveAck=>wimp_um|
00057da0  32 3e 0a 20 20 8f 09 49  74 20 73 65 6e 64 73 20  |2>.  ..It sends |
00057db0  3c 52 61 6d 46 65 74 63  68 3d 3e 77 69 6d 70 5f  |<RamFetch=>wimp_|
00057dc0  75 6d 36 3e 44 41 54 41  a3 02 00 00 4d 65 73 73  |um6>DATA....Mess|
00057dd0  61 67 65 5f 44 61 74 61  52 65 71 75 65 73 74 20  |age_DataRequest |
00057de0  20 28 26 31 30 29 0a 45  78 74 72 61 20 64 61 74  | (&10).Extra dat|
00057df0  61 20 69 6e 20 62 6c 6f  63 6b 20 3a 0a 20 2b 20  |a in block :. + |
00057e00  32 30 09 77 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |20.window handle|
00057e10  0a 20 2b 20 32 34 09 69  6e 74 65 72 6e 61 6c 20  |. + 24.internal |
00057e20  68 61 6e 64 6c 65 0a 20  2b 20 32 38 09 78 0a 20  |handle. + 28.x. |
00057e30  2b 20 33 32 09 79 0a 20  2b 20 33 36 09 3d 20 32  |+ 32.y. + 36.= 2|
00057e40  0a 20 2b 20 34 30 09 6c  69 73 74 20 6f 66 20 66  |. + 40.list of f|
00057e50  69 6c 65 74 79 70 65 73  20 69 6e 20 6f 72 64 65  |iletypes in orde|
00057e60  72 20 6f 66 20 70 72 65  66 65 72 65 6e 63 65 2c  |r of preference,|
00057e70  20 74 65 72 6d 69 6e 61  74 65 64 20 62 79 20 2d  | terminated by -|
00057e80  31 0a 0a 52 65 63 65 69  76 65 72 20 73 68 6f 75  |1..Receiver shou|
00057e90  6c 64 20 69 67 6e 6f 72  65 20 74 68 69 73 20 6d  |ld ignore this m|
00057ea0  65 73 73 61 67 65 20 69  66 20 62 69 74 20 32 20  |essage if bit 2 |
00057eb0  69 73 6e 27 74 20 73 65  74 2e 0a 0a 54 68 69 73  |isn't set...This|
00057ec0  20 6d 65 73 73 61 67 65  20 69 73 20 62 72 6f 61  | message is broa|
00057ed0  64 63 61 73 74 65 64 20  62 79 20 61 20 74 61 73  |dcasted by a tas|
00057ee0  6b 20 77 68 6f 20 77 61  6e 74 73 20 74 6f 20 70  |k who wants to p|
00057ef0  61 73 74 65 20 74 68 65  20 63 6f 6e 74 65 6e 74  |aste the content|
00057f00  73 20 6f 66 20 74 68 65  20 63 6c 69 70 62 6f 61  |s of the clipboa|
00057f10  72 64 20 69 6e 74 6f 20  69 74 73 20 6f 77 6e 20  |rd into its own |
00057f20  64 6f 63 75 6d 65 6e 74  2e 20 57 68 65 6e 20 74  |document. When t|
00057f30  68 65 20 6f 77 6e 65 72  20 6f 66 20 74 68 65 20  |he owner of the |
00057f40  63 6c 69 70 62 6f 61 72  64 20 72 65 63 65 69 76  |clipboard receiv|
00057f50  65 73 20 74 68 69 73 20  6d 65 73 73 61 67 65 2c  |es this message,|
00057f60  20 69 74 20 73 68 6f 75  6c 64 20 63 68 6f 6f 73  | it should choos|
00057f70  65 20 74 68 65 20 65 61  72 6c 69 65 73 74 20 66  |e the earliest f|
00057f80  69 6c 65 74 79 70 65 20  69 6e 20 74 68 65 20 6c  |iletype in the l|
00057f90  69 73 74 20 74 68 61 74  20 69 74 20 63 61 6e 20  |ist that it can |
00057fa0  70 72 6f 76 69 64 65 20  28 6f 72 20 75 73 65 20  |provide (or use |
00057fb0  6e 61 74 69 76 65 20 66  6f 72 6d 61 74 20 69 66  |native format if|
00057fc0  20 6e 6f 6e 65 29 20 61  6e 64 20 72 65 70 6c 79  | none) and reply|
00057fd0  20 77 69 74 68 20 61 20  3c 44 61 74 61 53 61 76  | with a <DataSav|
00057fe0  65 3d 3e 77 69 6d 70 5f  75 6d 31 3e 20 6d 65 73  |e=>wimp_um1> mes|
00057ff0  73 61 67 65 2e 0a 0a 57  68 65 6e 20 74 68 65 20  |sage...When the |
00058000  22 50 61 73 74 65 72 22  20 72 65 63 65 69 76 65  |"Paster" receive|
00058010  73 20 74 68 69 73 2c 20  69 74 20 73 68 6f 75 6c  |s this, it shoul|
00058020  64 20 63 68 65 63 6b 20  74 68 65 20 66 69 6c 65  |d check the file|
00058030  74 79 70 65 20 61 6e 64  20 6a 75 73 74 20 69 67  |type and just ig|
00058040  6e 6f 72 65 20 74 68 65  20 6d 65 73 73 61 67 65  |nore the message|
00058050  20 69 66 20 69 74 20 63  61 6e 27 74 20 68 61 6e  | if it can't han|
00058060  64 6c 65 20 69 74 2e 00  44 41 54 41 a0 01 00 00  |dle it..DATA....|
00058070  4d 65 73 73 61 67 65 5f  44 72 61 67 67 69 6e 67  |Message_Dragging|
00058080  20 20 28 26 31 31 29 0a  45 78 74 72 61 20 64 61  |  (&11).Extra da|
00058090  74 61 20 69 6e 20 62 6c  6f 63 6b 20 3a 0a 20 2b  |ta in block :. +|
000580a0  20 32 30 09 77 69 6e 64  6f 77 20 68 61 6e 64 6c  | 20.window handl|
000580b0  65 0a 20 2b 20 32 34 09  69 63 6f 6e 20 68 61 6e  |e. + 24.icon han|
000580c0  64 6c 65 0a 20 2b 20 32  38 09 78 0a 20 2b 20 33  |dle. + 28.x. + 3|
000580d0  32 09 79 0a 20 2b 20 33  36 09 3c 66 6c 61 67 73  |2.y. + 36.<flags|
000580e0  3d 3e 77 69 6d 70 5f 75  6d 31 31 5f 66 6c 61 67  |=>wimp_um11_flag|
000580f0  73 3e 0a 20 2b 20 34 30  09 62 6f 75 6e 64 69 6e  |s>. + 40.boundin|
00058100  67 20 62 6f 78 0a 20 2b  20 35 36 09 6c 69 73 74  |g box. + 56.list|
00058110  20 6f 66 20 66 69 6c 65  74 79 70 65 73 2c 20 74  | of filetypes, t|
00058120  65 72 6d 69 6e 61 74 65  64 20 77 69 74 68 20 2d  |erminated with -|
00058130  31 0a 0a 54 68 69 73 20  6d 65 73 73 61 67 65 20  |1..This message |
00058140  69 73 20 73 65 6e 74 20  63 6f 6e 74 69 6e 75 6f  |is sent continuo|
00058150  75 73 6c 79 20 62 79 20  74 68 65 20 74 61 73 6b  |usly by the task|
00058160  20 77 68 69 63 68 20 69  73 20 64 6f 69 6e 67 20  | which is doing |
00058170  74 68 65 20 64 72 61 67  67 69 6e 67 2e 20 49 6e  |the dragging. In|
00058180  69 74 69 61 6c 6c 79 20  69 74 20 69 73 20 62 72  |itially it is br|
00058190  6f 61 64 63 61 73 74 65  64 2c 20 62 75 74 20 61  |oadcasted, but a|
000581a0  66 74 65 72 20 61 20 74  61 73 6b 20 63 6c 61 69  |fter a task clai|
000581b0  6d 73 20 74 68 65 20 6d  65 73 73 61 67 65 2c 20  |ms the message, |
000581c0  69 74 20 69 73 20 6f 6e  6c 79 20 73 65 6e 74 20  |it is only sent |
000581d0  74 6f 20 74 68 61 74 2e  20 43 6c 61 69 6d 20 62  |to that. Claim b|
000581e0  79 20 73 65 6e 64 69 6e  67 20 3c 44 72 61 67 43  |y sending <DragC|
000581f0  6c 61 69 6d 3d 3e 77 69  6d 70 5f 75 6d 31 32 3e  |laim=>wimp_um12>|
00058200  20 6d 65 73 73 61 67 65  44 41 54 41 c2 00 00 00  | messageDATA....|
00058210  46 6c 61 67 73 0a 42 69  74 09 4d 65 61 6e 69 6e  |Flags.Bit.Meanin|
00058220  67 20 77 68 65 6e 20 73  65 74 0a 23 4c 69 6e 65  |g when set.#Line|
00058230  0a 20 31 09 53 65 6e 64  69 6e 67 20 64 61 74 61  |. 1.Sending data|
00058240  20 66 72 6f 6d 20 73 65  6c 65 63 74 69 6f 6e 0a  | from selection.|
00058250  20 32 09 53 65 6e 64 69  6e 67 20 64 61 74 61 20  | 2.Sending data |
00058260  66 72 6f 6d 20 63 6c 69  70 62 6f 61 72 64 0a 20  |from clipboard. |
00058270  33 09 53 6f 75 72 63 65  20 64 61 74 61 20 77 69  |3.Source data wi|
00058280  6c 6c 20 62 65 20 64 65  6c 65 74 65 64 0a 20 34  |ll be deleted. 4|
00058290  09 44 6f 20 4e 4f 54 20  63 6c 61 69 6d 20 74 68  |.Do NOT claim th|
000582a0  69 73 20 6d 65 73 73 61  67 65 0a 0a 41 6c 6c 20  |is message..All |
000582b0  6f 74 68 65 72 20 62 69  74 73 20 72 65 73 65 72  |other bits reser|
000582c0  76 65 64 20 61 6e 64 20  30 2e 00 00 44 41 54 41  |ved and 0...DATA|
000582d0  f4 00 00 00 4d 65 73 73  61 67 65 5f 44 72 61 67  |....Message_Drag|
000582e0  43 6c 61 69 6d 20 20 28  26 31 32 29 0a 45 78 74  |Claim  (&12).Ext|
000582f0  72 61 20 64 61 74 61 20  69 6e 20 62 6c 6f 63 6b  |ra data in block|
00058300  20 3a 0a 20 2b 20 32 30  09 3c 66 6c 61 67 73 3d  | :. + 20.<flags=|
00058310  3e 77 69 6d 70 5f 75 6d  31 32 5f 66 6c 61 67 73  |>wimp_um12_flags|
00058320  3e 0a 20 2b 20 32 34 09  6c 69 73 74 20 6f 66 20  |>. + 24.list of |
00058330  66 69 6c 65 74 79 70 65  73 2c 20 74 65 72 6d 69  |filetypes, termi|
00058340  6e 61 74 65 64 20 77 69  74 68 20 2d 31 0a 0a 54  |nated with -1..T|
00058350  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 73  |his message is s|
00058360  65 6e 74 20 61 73 20 61  20 72 65 70 6c 79 20 74  |ent as a reply t|
00058370  6f 20 61 20 3c 44 72 61  67 67 69 6e 67 3d 3e 77  |o a <Dragging=>w|
00058380  69 6d 70 5f 75 6d 31 31  3e 20 6d 65 73 73 61 67  |imp_um11> messag|
00058390  65 20 74 6f 20 69 6e 66  6f 72 6d 20 74 68 65 20  |e to inform the |
000583a0  73 65 6e 64 65 72 20 74  68 61 74 20 77 65 20 63  |sender that we c|
000583b0  61 6e 20 72 65 63 65 69  76 65 20 64 61 74 61 2e  |an receive data.|
000583c0  44 41 54 41 99 00 00 00  46 6c 61 67 73 0a 42 69  |DATA....Flags.Bi|
000583d0  74 09 4d 65 61 6e 69 6e  67 20 77 68 65 6e 20 73  |t.Meaning when s|
000583e0  65 74 0a 23 4c 69 6e 65  0a 20 30 09 48 61 76 65  |et.#Line. 0.Have|
000583f0  20 63 68 61 6e 67 65 64  20 70 6f 69 6e 74 65 72  | changed pointer|
00058400  20 73 68 61 70 65 0a 20  31 09 52 65 6d 6f 76 65  | shape. 1.Remove|
00058410  20 77 69 6d 70 20 64 72  61 67 62 6f 78 0a 20 33  | wimp dragbox. 3|
00058420  09 53 6f 75 72 63 65 20  73 68 6f 75 6c 64 20 62  |.Source should b|
00058430  65 20 64 65 6c 65 74 65  64 0a 0a 41 6c 6c 20 6f  |e deleted..All o|
00058440  74 68 65 72 20 62 69 74  73 20 72 65 73 65 72 76  |ther bits reserv|
00058450  65 64 20 61 6e 64 20 30  2e 00 00 00 44 41 54 41  |ed and 0....DATA|
00058460  2f 01 00 00 4d 65 73 73  61 67 65 5f 44 61 74 61  |/...Message_Data|
00058470  53 61 76 65 41 63 6b 20  28 32 29 0a 44 61 74 61  |SaveAck (2).Data|
00058480  20 69 6e 20 62 6c 6f 63  6b 3a 0a 32 30 09 64 65  | in block:.20.de|
00058490  73 74 69 6e 61 74 69 6f  6e 09 77 69 6e 64 6f 77  |stination.window|
000584a0  20 68 61 6e 64 6c 65 0a  32 34 09 20 09 09 69 63  | handle.24. ..ic|
000584b0  6f 6e 20 68 61 6e 64 6c  65 0a 32 38 09 20 09 09  |on handle.28. ..|
000584c0  73 63 72 65 65 6e 78 0a  33 32 09 20 09 09 73 63  |screenx.32. ..sc|
000584d0  72 65 65 6e 79 0a 33 36  09 65 73 74 69 6d 61 74  |reeny.36.estimat|
000584e0  65 64 20 73 69 7a 65 20  6f 72 20 2d 31 20 69 66  |ed size or -1 if|
000584f0  20 27 75 6e 73 61 66 65  27 0a 34 30 09 3c 66 69  | 'unsafe'.40.<fi|
00058500  6c 65 74 79 70 65 3d 3e  46 69 6c 65 74 79 70 65  |letype=>Filetype|
00058510  73 3a 21 52 6f 6f 74 3e  20 6f 66 20 64 61 74 61  |s:!Root> of data|
00058520  0a 34 34 09 66 75 6c 6c  20 70 61 74 68 6e 61 6d  |.44.full pathnam|
00058530  65 20 28 6f 72 20 22 5c  3c 57 69 6d 70 24 53 63  |e (or "\<Wimp$Sc|
00058540  72 61 70 5c 3e 22 29 0a  0a 57 6f 72 64 73 20 61  |rap\>")..Words a|
00058550  74 20 32 30 20 74 6f 20  33 32 20 61 72 65 20 70  |t 20 to 32 are p|
00058560  72 65 73 65 72 76 65 64  20 66 72 6f 6d 20 3c 44  |reserved from <D|
00058570  61 74 61 53 61 76 65 3d  3e 57 69 6d 70 5f 75 6d  |ataSave=>Wimp_um|
00058580  31 3e 20 6d 65 73 73 61  67 65 2e 00 44 41 54 41  |1> message..DATA|
00058590  1c 01 00 00 4d 65 73 73  61 67 65 5f 44 61 74 61  |....Message_Data|
000585a0  4c 6f 61 64 20 20 28 33  29 0a 45 78 74 72 61 20  |Load  (3).Extra |
000585b0  64 61 74 61 20 69 6e 20  62 6c 6f 63 6b 3a 0a 20  |data in block:. |
000585c0  20 32 30 09 44 65 73 74  20 77 69 6e 64 6f 77 20  | 20.Dest window |
000585d0  68 61 6e 64 6c 65 0a 20  20 32 34 09 20 20 20 69  |handle.  24.   i|
000585e0  63 6f 6e 20 68 61 6e 64  6c 65 0a 20 20 32 38 09  |con handle.  28.|
000585f0  20 20 20 78 20 63 6f 6f  72 64 0a 20 20 33 32 09  |   x coord.  32.|
00058600  20 20 20 79 20 63 6f 6f  72 64 0a 20 20 33 36 09  |   y coord.  36.|
00058610  45 73 74 69 6d 61 74 65  64 20 73 69 7a 65 0a 20  |Estimated size. |
00058620  20 34 30 09 3c 66 69 6c  65 74 79 70 65 3d 3e 46  | 40.<filetype=>F|
00058630  69 6c 65 74 79 70 65 73  3a 21 52 6f 6f 74 3e 0a  |iletypes:!Root>.|
00058640  20 20 34 34 09 66 75 6c  6c 20 70 61 74 68 6e 61  |  44.full pathna|
00058650  6d 65 0a 0a 52 65 63 65  69 76 65 72 20 6f 66 20  |me..Receiver of |
00058660  6d 65 73 73 61 67 65 20  73 68 6f 75 6c 64 20 6c  |message should l|
00058670  6f 61 64 2c 20 61 6e 64  20 61 6e 73 77 65 72 20  |oad, and answer |
00058680  77 69 74 68 20 3c 44 61  74 61 4c 6f 61 64 41 63  |with <DataLoadAc|
00058690  6b 3d 3e 77 69 6d 70 5f  75 6d 34 3e 20 69 66 20  |k=>wimp_um4> if |
000586a0  73 75 63 63 65 73 73 2e  44 41 54 41 60 01 00 00  |success.DATA`...|
000586b0  4d 65 73 73 61 67 65 5f  44 61 74 61 4c 6f 61 64  |Message_DataLoad|
000586c0  41 63 6b 20 20 28 34 29  0a 45 78 74 72 61 20 64  |Ack  (4).Extra d|
000586d0  61 74 61 20 69 6e 20 62  6c 6f 63 6b 3a 0a 20 20  |ata in block:.  |
000586e0  32 30 09 44 65 73 74 20  77 69 6e 64 6f 77 20 68  |20.Dest window h|
000586f0  61 6e 64 6c 65 0a 20 20  32 34 09 20 20 20 69 63  |andle.  24.   ic|
00058700  6f 6e 20 68 61 6e 64 6c  65 0a 20 20 32 38 09 20  |on handle.  28. |
00058710  20 20 78 20 63 6f 6f 72  64 0a 20 20 33 32 09 20  |  x coord.  32. |
00058720  20 20 79 20 63 6f 6f 72  64 0a 20 20 33 36 09 45  |  y coord.  36.E|
00058730  73 74 69 6d 61 74 65 64  20 73 69 7a 65 0a 20 20  |stimated size.  |
00058740  34 30 09 3c 66 69 6c 65  74 79 70 65 3d 3e 46 69  |40.<filetype=>Fi|
00058750  6c 65 74 79 70 65 73 3a  21 52 6f 6f 74 3e 0a 20  |letypes:!Root>. |
00058760  20 34 34 09 66 75 6c 6c  20 70 61 74 68 6e 61 6d  | 44.full pathnam|
00058770  65 0a 0a 54 68 69 73 20  69 73 20 73 65 6e 74 20  |e..This is sent |
00058780  61 73 20 61 6e 20 61 6e  73 77 65 72 20 74 6f 20  |as an answer to |
00058790  61 20 3c 44 61 74 61 4c  6f 61 64 3d 3e 57 69 6d  |a <DataLoad=>Wim|
000587a0  70 5f 75 6d 33 3e 20 6d  65 73 73 61 67 65 2e 20  |p_um3> message. |
000587b0  41 6c 6c 20 74 68 61 74  20 73 68 6f 75 6c 64 20  |All that should |
000587c0  62 65 20 64 6f 6e 65 2c  20 69 73 20 74 6f 20 63  |be done, is to c|
000587d0  68 61 6e 67 65 20 6d 65  73 73 61 67 65 20 74 79  |hange message ty|
000587e0  70 65 20 74 6f 20 34 2c  20 61 6e 64 20 66 69 6c  |pe to 4, and fil|
000587f0  6c 20 69 6e 20 74 68 65  20 79 6f 75 72 5f 72 65  |l in the your_re|
00058800  66 20 66 69 65 6c 64 2e  44 41 54 41 91 00 00 00  |f field.DATA....|
00058810  4d 65 73 73 61 67 65 20  46 69 6c 65 72 4f 70 65  |Message FilerOpe|
00058820  6e 44 69 72 20 28 26 34  30 30 29 0a 65 78 74 72  |nDir (&400).extr|
00058830  61 20 64 61 74 61 20 69  6e 20 62 6c 6f 63 6b 3a  |a data in block:|
00058840  0a 0a 32 30 09 66 69 6c  69 6e 67 20 73 79 73 74  |..20.filing syst|
00058850  65 6d 20 6e 75 6d 62 65  72 0a 32 34 09 30 20 20  |em number.24.0  |
00058860  28 72 65 73 65 72 76 65  64 20 66 6f 72 20 66 6c  |(reserved for fl|
00058870  61 67 73 29 0a 32 38 09  6e 61 6d 65 20 6f 66 20  |ags).28.name of |
00058880  64 69 72 65 63 74 6f 72  79 2c 20 5c 30 20 74 65  |directory, \0 te|
00058890  72 6d 69 6e 61 74 65 64  2e 00 00 00 44 41 54 41  |rminated....DATA|
000588a0  4c 01 00 00 4e 6f 74 69  66 79 20 28 26 34 30 30  |L...Notify (&400|
000588b0  34 30 29 0a 45 78 74 72  61 20 64 61 74 61 20 69  |40).Extra data i|
000588c0  6e 20 62 6c 6f 63 6b 20  3a 0a 20 20 32 30 09 53  |n block :.  20.S|
000588d0  65 6e 64 69 6e 67 20 73  74 61 74 69 6f 6e 20 6e  |ending station n|
000588e0  75 6d 62 65 72 0a 20 20  32 31 09 49 74 73 20 6e  |umber.  21.Its n|
000588f0  65 74 77 6f 72 6b 20 6e  75 6d 62 65 72 0a 20 20  |etwork number.  |
00058900  32 32 09 46 69 76 65 2d  62 79 74 65 20 72 65 61  |22.Five-byte rea|
00058910  6c 20 74 69 6d 65 20 6f  6e 20 72 65 63 69 65 70  |l time on reciep|
00058920  74 0a 20 20 32 37 09 4d  65 73 73 61 67 65 0a 0a  |t.  27.Message..|
00058930  54 68 69 73 20 6d 65 73  73 61 67 65 20 69 73 20  |This message is |
00058940  62 72 6f 61 64 63 61 73  74 65 64 20 62 79 20 74  |broadcasted by t|
00058950  68 65 20 4e 65 74 46 69  6c 65 72 20 74 6f 20 65  |he NetFiler to e|
00058960  6e 61 62 6c 65 20 73 6f  6d 65 20 74 61 73 6b 20  |nable some task |
00058970  74 6f 20 64 69 73 70 6c  61 79 20 61 20 2a 4e 6f  |to display a *No|
00058980  74 69 66 79 20 63 6f 6d  6d 61 6e 64 2e 20 49 66  |tify command. If|
00058990  20 6e 6f 20 6f 6e 65 20  61 63 6b 6e 6f 77 6c 65  | no one acknowle|
000589a0  64 67 65 73 20 74 68 65  20 6d 65 73 73 61 67 65  |dges the message|
000589b0  2c 20 74 68 65 20 4e 65  74 46 69 6c 65 72 20 77  |, the NetFiler w|
000589c0  69 6c 6c 20 64 69 73 70  6c 61 79 20 69 74 20 75  |ill display it u|
000589d0  73 69 6e 67 20 3c 57 69  6d 70 5f 52 65 70 6f 72  |sing <Wimp_Repor|
000589e0  74 45 72 72 6f 72 3e 2e  44 41 54 41 ea 01 00 00  |tError>.DATA....|
000589f0  4d 65 73 73 61 67 65 5f  4d 65 6e 75 57 61 72 6e  |Message_MenuWarn|
00058a00  69 6e 67 20 20 28 26 34  30 30 43 30 29 0a 65 78  |ing  (&400C0).ex|
00058a10  74 72 61 20 64 61 74 61  20 69 6e 20 62 6c 6f 63  |tra data in bloc|
00058a20  6b 3a 0a 20 20 32 30 09  27 53 75 62 6d 65 6e 75  |k:.  20.'Submenu|
00058a30  20 70 74 72 27 20 66 72  6f 6d 20 6d 65 6e 75 20  | ptr' from menu |
00058a40  69 74 65 6d 0a 20 20 32  34 09 78 20 63 6f 6f 72  |item.  24.x coor|
00058a50  64 20 6f 66 20 74 6f 70  20 6c 65 66 74 20 6e 65  |d of top left ne|
00058a60  77 20 73 75 62 6d 65 6e  75 0a 20 20 32 38 09 79  |w submenu.  28.y|
00058a70  20 63 6f 6f 72 64 20 6f  66 20 74 6f 70 20 6c 65  | coord of top le|
00058a80  66 74 20 6e 65 77 20 73  75 62 6d 65 6e 75 0a 20  |ft new submenu. |
00058a90  20 33 32 2e 2e 09 53 65  6c 65 63 74 69 6f 6e 20  | 32...Selection |
00058aa0  6c 69 73 74 20 28 61 73  20 69 6e 20 3c 4d 65 6e  |list (as in <Men|
00058ab0  75 53 65 6c 65 63 74 69  6f 6e 3d 3e 77 69 6d 70  |uSelection=>wimp|
00058ac0  5f 70 6f 6c 6c 39 3e 29  0a 0a 59 6f 75 20 72 65  |_poll9>)..You re|
00058ad0  63 65 69 76 65 20 74 68  69 73 20 6d 65 73 73 61  |ceive this messa|
00058ae0  67 65 20 77 68 65 6e 20  70 6f 69 6e 74 65 72 20  |ge when pointer |
00058af0  6d 6f 76 65 73 20 6f 76  65 72 20 74 68 65 20 73  |moves over the s|
00058b00  75 62 6d 65 6e 75 20 61  72 72 6f 77 20 69 6e 20  |ubmenu arrow in |
00058b10  61 20 6d 65 6e 75 20 65  6e 74 72 79 20 77 69 74  |a menu entry wit|
00058b20  68 20 74 68 65 20 27 67  65 6e 65 72 61 74 65 20  |h the 'generate |
00058b30  6d 65 73 73 61 67 65 27  20 62 69 74 20 73 65 74  |message' bit set|
00058b40  2e 0a 0a 59 6f 75 20 63  61 6e 20 75 73 65 20 74  |...You can use t|
00058b50  68 65 20 27 73 75 62 6d  65 6e 75 20 70 74 72 27  |he 'submenu ptr'|
00058b60  20 61 6e 64 2f 6f 72 20  74 68 65 20 73 65 6c 65  | and/or the sele|
00058b70  63 74 69 6f 6e 20 6c 69  73 74 2c 20 74 6f 20 64  |ction list, to d|
00058b80  65 63 69 64 65 20 77 68  69 63 68 20 77 69 6e 64  |ecide which wind|
00058b90  6f 77 20 6f 72 20 6d 65  6e 75 20 74 6f 20 6f 70  |ow or menu to op|
00058ba0  65 6e 2e 20 41 6e 64 20  74 68 65 6e 20 63 61 6c  |en. And then cal|
00058bb0  6c 20 3c 57 69 6d 70 5f  43 72 65 61 74 65 53 75  |l <Wimp_CreateSu|
00058bc0  62 4d 65 6e 75 3e 20 74  6f 20 6f 70 65 6e 20 69  |bMenu> to open i|
00058bd0  74 2e 00 00 44 41 54 41  7b 01 00 00 4d 65 73 73  |t...DATA{...Mess|
00058be0  61 67 65 5f 4d 6f 64 65  43 68 61 6e 67 65 20 28  |age_ModeChange (|
00058bf0  26 34 30 30 43 31 29 0a  3c 57 69 6d 70 5f 53 65  |&400C1).<Wimp_Se|
00058c00  74 4d 6f 64 65 3e 20 63  61 75 73 65 73 20 74 68  |tMode> causes th|
00058c10  69 73 20 6d 65 73 73 61  67 65 20 74 6f 20 62 65  |is message to be|
00058c20  20 62 72 6f 61 64 63 61  73 74 65 64 2e 20 59 6f  | broadcasted. Yo|
00058c30  75 20 73 68 6f 75 6c 64  20 2a 6e 6f 74 2a 20 61  |u should *not* a|
00058c40  63 6e 6f 77 6c 65 64 67  65 20 74 68 69 73 20 6d  |cnowledge this m|
00058c50  65 73 73 61 67 65 2e 0a  0a 41 66 74 65 72 20 73  |essage...After s|
00058c60  65 6e 64 69 6e 67 20 74  68 69 73 20 6d 65 73 73  |ending this mess|
00058c70  61 67 65 2c 20 74 68 65  20 57 69 6d 70 20 73 65  |age, the Wimp se|
00058c80  6e 64 73 20 61 6e 20 4f  70 65 6e 5f 57 69 6e 64  |nds an Open_Wind|
00058c90  6f 77 5f 52 65 71 75 65  73 74 20 65 76 65 6e 74  |ow_Request event|
00058ca0  20 66 6f 72 20 65 61 63  68 20 77 69 6e 64 6f 77  | for each window|
00058cb0  2e 0a 3d 3e 09 59 6f 75  20 6d 75 73 74 20 6e 6f  |..=>.You must no|
00058cc0  74 20 64 65 6c 65 74 65  20 61 6e 79 20 77 69 6e  |t delete any win|
00058cd0  64 6f 77 2e 20 49 66 20  79 6f 75 20 77 61 6e 74  |dow. If you want|
00058ce0  20 74 6f 20 64 65 6c 65  74 65 20 61 20 77 69 6e  | to delete a win|
00058cf0  64 6f 77 2c 20 74 68 65  6e 20 6a 75 73 74 20 6d  |dow, then just m|
00058d00  61 72 6b 20 69 74 20 74  6f 20 62 65 20 64 65 6c  |ark it to be del|
00058d10  65 74 65 64 2c 20 61 6e  64 20 64 6f 20 74 68 65  |eted, and do the|
00058d20  20 64 65 65 64 20 77 68  65 6e 20 79 6f 75 20 72  | deed when you r|
00058d30  65 63 65 69 76 65 20 74  68 65 20 4f 70 65 6e 5f  |eceive the Open_|
00058d40  57 69 6e 64 6f 77 5f 52  65 71 75 65 73 74 2e 00  |Window_Request..|
00058d50  44 41 54 41 04 01 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
00058d60  54 61 73 6b 49 6e 69 74  69 61 6c 69 73 65 20 28  |TaskInitialise (|
00058d70  26 34 30 30 43 32 29 0a  44 61 74 61 20 69 6e 20  |&400C2).Data in |
00058d80  62 6c 6f 63 6b 20 3a 0a  23 4c 69 6e 65 0a 20 20  |block :.#Line.  |
00058d90  20 34 09 54 61 73 6b 20  68 61 6e 64 6c 65 0a 0a  | 4.Task handle..|
00058da0  20 20 32 30 09 43 41 4f  20 28 43 75 72 72 65 6e  |  20.CAO (Curren|
00058db0  74 20 41 63 74 69 76 65  20 4f 62 6a 65 63 74 29  |t Active Object)|
00058dc0  20 70 6f 69 6e 74 65 72  0a 20 20 32 34 09 49 74  | pointer.  24.It|
00058dd0  73 20 73 6c 6f 74 20 73  69 7a 65 0a 20 20 32 38  |s slot size.  28|
00058de0  09 54 61 73 6b 20 6e 61  6d 65 20 67 69 76 65 6e  |.Task name given|
00058df0  20 74 6f 20 57 69 6d 70  5f 49 6e 69 74 69 61 6c  | to Wimp_Initial|
00058e00  69 73 65 2c 20 5c 30 20  74 65 72 6d 69 6e 61 74  |ise, \0 terminat|
00058e10  65 64 0a 0a 54 68 69 73  20 6d 65 73 73 61 67 65  |ed..This message|
00058e20  20 69 73 20 62 72 6f 61  64 63 61 73 74 65 64 20  | is broadcasted |
00058e30  77 68 65 6e 20 61 20 74  61 73 6b 20 63 61 6c 6c  |when a task call|
00058e40  73 20 3c 57 69 6d 70 5f  49 6e 69 74 69 61 6c 69  |s <Wimp_Initiali|
00058e50  73 65 3e 2e 44 41 54 41  87 00 00 00 4d 65 73 73  |se>.DATA....Mess|
00058e60  61 67 65 5f 54 61 73 6b  43 6c 6f 73 65 44 6f 77  |age_TaskCloseDow|
00058e70  6e 20 28 26 34 30 30 43  33 29 0a 44 61 74 61 20  |n (&400C3).Data |
00058e80  69 6e 20 62 6c 6f 63 6b  20 3a 0a 20 20 34 09 54  |in block :.  4.T|
00058e90  61 73 6b 20 68 61 6e 64  6c 65 0a 0a 54 68 69 73  |ask handle..This|
00058ea0  20 6d 65 73 73 61 67 65  20 69 73 20 62 72 6f 61  | message is broa|
00058eb0  64 63 61 73 74 65 64 20  77 68 65 6e 20 61 20 74  |dcasted when a t|
00058ec0  61 73 6b 20 63 61 6c 6c  73 20 3c 57 69 6d 70 5f  |ask calls <Wimp_|
00058ed0  43 6c 6f 73 65 44 6f 77  6e 3e 2e 00 44 41 54 41  |CloseDown>..DATA|
00058ee0  22 01 00 00 53 6c 6f 74  53 69 7a 65 20 28 26 34  |"...SlotSize (&4|
00058ef0  30 30 43 34 29 0a 45 78  74 72 61 20 64 61 74 61  |00C4).Extra data|
00058f00  20 69 6e 20 62 6c 6f 63  6b 20 3a 0a 20 34 09 48  | in block :. 4.H|
00058f10  61 6e 64 6c 65 20 6f 66  20 74 61 73 6b 20 77 68  |andle of task wh|
00058f20  69 63 68 20 6f 77 6e 73  20 73 6c 6f 74 0a 20 32  |ich owns slot. 2|
00058f30  30 09 4e 65 77 20 73 6c  6f 74 73 69 7a 65 0a 20  |0.New slotsize. |
00058f40  32 34 09 4e 65 77 20 73  69 7a 65 20 6f 66 20 74  |24.New size of t|
00058f50  68 65 20 4e 65 78 74 20  73 6c 6f 74 0a 0a 54 68  |he Next slot..Th|
00058f60  69 73 20 6d 65 73 73 61  67 65 20 69 73 20 62 72  |is message is br|
00058f70  6f 61 64 63 61 73 74 65  64 20 61 66 74 65 72 20  |oadcasted after |
00058f80  3c 57 69 6d 70 5f 53 6c  6f 74 53 69 7a 65 3e 20  |<Wimp_SlotSize> |
00058f90  69 73 20 63 61 6c 6c 65  64 2e 20 49 74 27 73 20  |is called. It's |
00058fa0  6d 61 69 6e 6c 79 20 75  73 65 64 20 62 79 20 74  |mainly used by t|
00058fb0  68 65 20 74 61 73 6b 20  6d 61 6e 61 67 65 72 20  |he task manager |
00058fc0  74 6f 20 75 70 64 61 74  65 20 69 74 73 20 64 69  |to update its di|
00058fd0  73 70 6c 61 79 2e 20 54  68 65 20 6d 65 73 73 61  |splay. The messa|
00058fe0  67 65 20 73 68 6f 75 6c  64 20 6e 6f 74 20 62 65  |ge should not be|
00058ff0  20 61 63 6b 6e 6f 77 6c  65 64 67 65 64 2e 00 00  | acknowledged...|
00059000  44 41 54 41 86 02 00 00  53 65 74 53 6c 6f 74 20  |DATA....SetSlot |
00059010  28 26 34 30 30 43 35 29  0a 45 78 74 72 61 20 64  |(&400C5).Extra d|
00059020  61 74 61 20 69 6e 20 62  6c 6f 63 6b 20 3a 0a 20  |ata in block :. |
00059030  32 30 09 4e 65 77 20 73  6c 6f 74 73 69 7a 65 0a  |20.New slotsize.|
00059040  20 32 34 09 4f 77 6e 65  72 73 20 74 61 73 6b 68  | 24.Owners taskh|
00059050  61 6e 64 6c 65 0a 0a 54  68 69 73 20 6d 65 73 73  |andle..This mess|
00059060  61 67 65 20 69 73 20 62  72 6f 61 64 63 61 73 74  |age is broadcast|
00059070  65 64 20 77 68 65 6e 20  74 68 65 20 75 73 65 72  |ed when the user|
00059080  20 74 72 69 65 73 20 74  6f 20 61 6c 74 65 72 20  | tries to alter |
00059090  61 20 74 61 73 6b 73 20  73 6c 6f 74 20 73 69 7a  |a tasks slot siz|
000590a0  65 20 62 79 20 64 72 61  67 67 69 6e 67 20 74 68  |e by dragging th|
000590b0  65 20 22 6d 65 6d 6f 72  79 62 61 72 22 20 69 6e  |e "memorybar" in|
000590c0  20 74 68 65 20 74 61 73  6b 20 6d 61 6e 61 67 65  | the task manage|
000590d0  72 2e 20 49 66 20 61 20  74 61 73 6b 20 63 61 6e  |r. If a task can|
000590e0  20 63 6f 70 65 20 77 69  74 68 20 74 68 69 73 2c  | cope with this,|
000590f0  20 69 74 20 73 68 6f 75  6c 64 20 66 69 72 73 74  | it should first|
00059100  20 63 68 65 63 6b 20 74  68 65 20 74 61 73 6b 68  | check the taskh|
00059110  61 6e 64 6c 65 2c 20 61  63 6b 6e 6f 77 6c 65 64  |andle, acknowled|
00059120  67 65 20 74 68 65 20 6d  65 73 73 61 67 65 20 61  |ge the message a|
00059130  6e 64 20 74 68 65 6e 20  63 61 6c 6c 20 3c 57 69  |nd then call <Wi|
00059140  6d 70 5f 53 6c 6f 74 53  69 7a 65 3e 2e 0a 0a 54  |mp_SlotSize>...T|
00059150  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 61  |his message is a|
00059160  6c 73 6f 20 73 65 6e 74  20 62 79 20 74 68 65 20  |lso sent by the |
00059170  74 61 73 6b 20 6d 61 6e  61 67 65 72 20 77 68 65  |task manager whe|
00059180  6e 20 74 68 65 20 74 61  73 6b 20 69 73 20 73 74  |n the task is st|
00059190  61 72 74 65 64 2e 20 49  66 20 74 68 69 73 2c 20  |arted. If this, |
000591a0  6f 72 20 61 6e 79 20 6c  61 74 65 72 20 6d 65 73  |or any later mes|
000591b0  73 61 67 65 2c 20 69 73  20 2a 6e 6f 74 2a 20 61  |sage, is *not* a|
000591c0  63 6b 6e 6f 77 6c 65 64  67 65 64 2c 20 74 68 65  |cknowledged, the|
000591d0  20 74 61 73 6b 20 77 69  6c 6c 20 67 65 74 20 61  | task will get a|
000591e0  20 67 72 65 65 6e 20 6d  65 6d 6f 72 79 62 61 72  | green memorybar|
000591f0  20 69 6e 20 74 68 65 20  74 61 73 6b 20 6d 61 6e  | in the task man|
00059200  61 67 65 72 20 28 69 6e  73 74 65 61 64 20 6f 66  |ager (instead of|
00059210  20 61 20 72 65 64 20 6f  6e 65 29 20 61 6e 64 20  | a red one) and |
00059220  77 69 6c 6c 20 6e 6f 74  20 72 65 63 65 69 76 65  |will not receive|
00059230  20 74 68 69 73 20 6d 65  73 73 61 67 65 20 61 67  | this message ag|
00059240  61 69 6e 3b 20 49 74 20  77 69 6c 6c 20 6e 6f 74  |ain; It will not|
00059250  20 62 65 20 70 6f 73 73  69 62 6c 65 20 66 6f 72  | be possible for|
00059260  20 74 68 65 20 75 73 65  72 20 74 6f 20 61 6c 74  | the user to alt|
00059270  65 72 20 74 68 65 20 74  61 73 6b 73 20 73 6c 6f  |er the tasks slo|
00059280  74 73 69 7a 65 2e 00 00  44 41 54 41 16 01 00 00  |tsize...DATA....|
00059290  54 61 73 6b 4e 61 6d 65  52 71 20 28 26 34 30 30  |TaskNameRq (&400|
000592a0  43 36 29 0a 45 78 74 72  61 20 64 61 74 61 20 69  |C6).Extra data i|
000592b0  6e 20 62 6c 6f 63 6b 20  3a 0a 20 20 32 30 09 48  |n block :.  20.H|
000592c0  61 6e 64 6c 65 20 6f 66  20 6f 74 68 65 72 20 74  |andle of other t|
000592d0  61 73 6b 0a 0a 54 68 69  73 20 6d 65 73 73 61 67  |ask..This messag|
000592e0  65 20 63 61 6e 20 62 65  20 75 73 65 64 20 69 66  |e can be used if|
000592f0  20 79 6f 75 72 20 74 61  73 6b 20 77 61 6e 74 20  | your task want |
00059300  74 6f 20 66 69 6e 64 20  6f 75 74 20 74 68 65 20  |to find out the |
00059310  6e 61 6d 65 20 6f 66 20  61 6e 6f 74 68 65 72 20  |name of another |
00059320  74 61 73 6b 2e 20 42 72  6f 61 64 63 61 73 74 20  |task. Broadcast |
00059330  74 68 69 73 20 6d 65 73  73 61 67 65 20 77 69 74  |this message wit|
00059340  68 20 63 6f 72 72 65 63  74 20 68 61 6e 64 6c 65  |h correct handle|
00059350  2c 20 61 6e 64 20 74 68  65 20 74 61 73 6b 20 6d  |, and the task m|
00059360  61 6d 61 67 65 72 20 77  69 6c 6c 20 72 65 73 70  |amager will resp|
00059370  6f 6e 64 20 77 69 74 68  20 61 20 3c 54 61 73 6b  |ond with a <Task|
00059380  4e 61 6d 65 49 73 3d 3e  77 69 6d 70 5f 75 6d 34  |NameIs=>wimp_um4|
00059390  30 30 43 37 3e 20 6d 65  73 73 61 67 65 2e 00 00  |00C7> message...|
000593a0  44 41 54 41 c7 00 00 00  54 61 73 6b 4e 61 6d 65  |DATA....TaskName|
000593b0  49 73 20 28 26 34 30 30  43 37 29 0a 45 78 74 72  |Is (&400C7).Extr|
000593c0  61 20 64 61 74 61 20 69  6e 20 62 6c 6f 63 6b 20  |a data in block |
000593d0  3a 0a 20 20 32 30 09 48  61 6e 64 6c 65 20 6f 66  |:.  20.Handle of|
000593e0  20 74 61 73 6b 0a 20 20  32 34 09 54 61 73 6b 27  | task.  24.Task'|
000593f0  73 20 73 6c 6f 74 73 69  7a 65 0a 20 20 32 38 09  |s slotsize.  28.|
00059400  54 61 73 6b 6e 61 6d 65  0a 0a 54 68 69 73 20 6d  |Taskname..This m|
00059410  65 73 73 61 67 65 20 69  73 20 73 65 6e 74 20 62  |essage is sent b|
00059420  79 20 74 68 65 20 74 61  73 6b 20 6d 61 6e 61 67  |y the task manag|
00059430  65 72 20 69 6e 20 72 65  73 70 6f 6e 73 65 20 74  |er in response t|
00059440  6f 20 61 20 3c 54 61 73  6b 4e 61 6d 65 52 71 3d  |o a <TaskNameRq=|
00059450  3e 77 69 6d 70 5f 75 6d  34 30 30 43 36 3e 20 6d  |>wimp_um400C6> m|
00059460  65 73 73 61 67 65 2e 00  44 41 54 41 ad 00 00 00  |essage..DATA....|
00059470  4d 65 73 73 61 67 65 5f  4d 65 6e 75 73 44 65 6c  |Message_MenusDel|
00059480  65 74 65 64 20 20 28 26  34 30 30 43 39 29 0a 20  |eted  (&400C9). |
00059490  2b 20 32 30 09 50 6f 69  6e 74 65 72 20 74 6f 20  |+ 20.Pointer to |
000594a0  6d 65 6e 75 20 62 6c 6f  63 6b 20 28 3c 57 69 6d  |menu block (<Wim|
000594b0  70 5f 43 72 65 61 74 65  4d 65 6e 75 3e 29 0a 0a  |p_CreateMenu>)..|
000594c0  54 68 69 73 20 6d 65 73  73 61 67 65 20 69 73 20  |This message is |
000594d0  73 65 6e 74 20 77 68 65  6e 20 79 6f 75 72 20 6d  |sent when your m|
000594e0  65 6e 75 20 77 61 73 20  63 6c 6f 73 65 64 20 77  |enu was closed w|
000594f0  69 74 68 6f 75 74 20 61  20 73 65 6c 65 63 74 69  |ithout a selecti|
00059500  6f 6e 20 68 61 76 69 6e  67 20 62 65 65 6e 20 6d  |on having been m|
00059510  61 64 65 2e 20 00 00 00  44 41 54 41 cd 00 00 00  |ade. ...DATA....|
00059520  4d 65 73 73 61 67 65 20  46 69 6c 65 72 43 6c 6f  |Message FilerClo|
00059530  73 65 44 69 72 20 28 26  34 30 31 29 0a 65 78 74  |seDir (&401).ext|
00059540  72 61 20 64 61 74 61 20  69 6e 20 62 6c 6f 63 6b  |ra data in block|
00059550  3a 0a 0a 32 30 09 66 69  6c 69 6e 67 20 73 79 73  |:..20.filing sys|
00059560  74 65 6d 20 6e 75 6d 62  65 72 0a 32 34 09 30 20  |tem number.24.0 |
00059570  20 28 72 65 73 65 72 76  65 64 20 66 6f 72 20 66  | (reserved for f|
00059580  6c 61 67 73 29 0a 32 38  09 6e 61 6d 65 20 6f 66  |lags).28.name of|
00059590  20 64 69 72 65 63 74 6f  72 79 2c 20 5c 30 20 74  | directory, \0 t|
000595a0  65 72 6d 69 6e 61 74 65  64 2e 0a 0a 41 6c 6c 20  |erminated...All |
000595b0  64 69 72 65 63 74 6f 72  69 65 73 20 73 74 61 72  |directories star|
000595c0  74 69 6e 67 20 77 69 74  68 20 67 69 76 65 6e 20  |ting with given |
000595d0  6e 61 6d 65 2c 20 77 69  6c 6c 20 62 65 20 63 6c  |name, will be cl|
000595e0  6f 73 65 64 2e 00 00 00  44 41 54 41 38 00 00 00  |osed....DATA8...|
000595f0  44 44 45 55 74 69 6c 73  5f 54 68 72 6f 77 62 61  |DDEUtils_Throwba|
00059600  63 6b 53 74 61 72 74 20  20 28 26 34 32 35 38 30  |ckStart  (&42580|
00059610  29 0a 20 6e 6f 20 65 78  74 72 61 20 64 61 74 61  |). no extra data|
00059620  44 41 54 41 38 00 00 00  44 44 45 55 74 69 6c 73  |DATA8...DDEUtils|
00059630  5f 50 72 6f 63 65 73 73  69 6e 67 46 69 6c 65 20  |_ProcessingFile |
00059640  20 28 26 34 32 35 38 31  29 0a 20 2b 20 32 30 09  | (&42581). + 20.|
00059650  46 69 6c 65 6e 61 6d 65  44 41 54 41 32 00 00 00  |FilenameDATA2...|
00059660  44 44 45 55 74 69 6c 73  5f 45 72 72 6f 72 73 49  |DDEUtils_ErrorsI|
00059670  6e 20 20 28 26 34 32 35  38 32 29 0a 20 2b 20 32  |n  (&42582). + 2|
00059680  30 09 46 69 6c 65 6e 61  6d 65 00 00 44 41 54 41  |0.Filename..DATA|
00059690  70 00 00 00 44 44 45 55  74 69 6c 73 5f 45 72 72  |p...DDEUtils_Err|
000596a0  6f 72 44 65 74 61 69 6c  73 20 20 28 26 34 32 35  |orDetails  (&425|
000596b0  38 33 29 0a 20 2b 20 32  30 09 4c 69 6e 65 6e 75  |83). + 20.Linenu|
000596c0  6d 62 65 72 0a 20 2b 20  32 34 09 30 2c 31 2c 32  |mber. + 24.0,1,2|
000596d0  20 66 6f 72 20 77 61 72  6e 69 6e 67 2c 65 72 72  | for warning,err|
000596e0  6f 72 2c 73 65 72 69 6f  75 73 0a 20 2b 20 32 38  |or,serious. + 28|
000596f0  09 44 65 73 63 72 69 70  74 69 6f 6e 44 41 54 41  |.DescriptionDATA|
00059700  37 00 00 00 44 44 45 55  74 69 6c 73 5f 54 68 72  |7...DDEUtils_Thr|
00059710  6f 77 62 61 63 6b 45 6e  64 20 20 28 26 34 32 35  |owbackEnd  (&425|
00059720  38 34 29 0a 20 20 6e 6f  20 65 78 74 72 61 20 64  |84).  no extra d|
00059730  61 74 61 00 44 41 54 41  37 00 00 00 44 44 45 55  |ata.DATA7...DDEU|
00059740  74 69 6c 73 5f 49 6e 66  6f 46 6f 72 46 69 6c 65  |tils_InfoForFile|
00059750  20 20 28 26 34 32 35 38  35 29 0a 20 20 2b 20 32  |  (&42585).  + 2|
00059760  30 20 20 46 69 6c 65 6e  61 6d 65 00 44 41 54 41  |0  Filename.DATA|
00059770  51 00 00 00 44 44 45 55  74 69 6c 73 5f 49 6e 66  |Q...DDEUtils_Inf|
00059780  6f 44 65 74 61 69 6c 73  20 20 28 26 34 32 35 38  |oDetails  (&4258|
00059790  36 29 0a 20 2b 20 32 30  09 4c 69 6e 65 6e 75 6d  |6). + 20.Linenum|
000597a0  62 65 72 0a 20 2b 20 32  34 09 30 0a 20 2b 20 32  |ber. + 24.0. + 2|
000597b0  38 09 44 65 73 63 72 69  70 74 69 6f 6e 00 00 00  |8.Description...|
000597c0  44 41 54 41 3f 02 00 00  4d 65 73 73 61 67 65 5f  |DATA?...Message_|
000597d0  45 64 69 74 52 71 20 20  28 26 34 35 44 38 30 29  |EditRq  (&45D80)|
000597e0  0a 44 61 74 61 20 69 6e  20 62 6c 6f 63 6b 20 3a  |.Data in block :|
000597f0  0a 20 20 2b 20 32 30 09  3c 44 61 74 61 20 74 79  |.  + 20.<Data ty|
00059800  70 65 20 77 6f 72 64 3d  3e 77 69 6d 70 5f 75 6d  |pe word=>wimp_um|
00059810  45 78 74 45 64 69 74 44  61 74 61 74 79 70 65 73  |ExtEditDatatypes|
00059820  3e 20 28 66 69 6c 65 74  79 70 65 20 2b 20 73 75  |> (filetype + su|
00059830  62 74 79 70 65 29 0a 20  20 2b 20 32 34 09 3c 4a  |btype).  + 24.<J|
00059840  6f 62 20 68 61 6e 64 6c  65 3d 3e 77 69 6d 70 5f  |ob handle=>wimp_|
00059850  75 6d 45 78 74 45 64 69  74 4a 6f 62 48 61 6e 64  |umExtEditJobHand|
00059860  6c 65 3e 0a 20 20 2b 20  32 38 09 3c 46 6c 61 67  |le>.  + 28.<Flag|
00059870  20 77 6f 72 64 3d 3e 77  69 6d 70 5f 75 6d 45 78  | word=>wimp_umEx|
00059880  74 45 64 69 74 46 6c 61  67 73 3e 0a 20 20 2b 20  |tEditFlags>.  + |
00059890  33 32 09 4e 61 6d 65 20  6f 66 20 70 61 72 65 6e  |32.Name of paren|
000598a0  74 09 28 6d 61 78 20 32  30 20 63 68 61 72 20 69  |t.(max 20 char i|
000598b0  6e 63 6c 20 5c 5c 30 29  0a 20 20 2b 20 35 32 09  |ncl \\0).  + 52.|
000598c0  4e 61 6d 65 20 6f 66 20  66 69 6c 65 09 28 6d 61  |Name of file.(ma|
000598d0  78 20 32 30 20 63 68 61  72 20 69 6e 63 6c 20 5c  |x 20 char incl \|
000598e0  5c 30 29 0a 0a 54 68 69  73 20 6d 65 73 73 61 67  |\0)..This messag|
000598f0  65 20 69 73 20 62 72 6f  61 64 63 61 73 74 65 64  |e is broadcasted|
00059900  20 62 79 20 61 20 22 63  6c 69 65 6e 74 22 20 77  | by a "client" w|
00059910  68 65 6e 20 69 74 20 77  69 73 68 65 73 20 73 6f  |hen it wishes so|
00059920  6d 65 6f 6e 65 20 74 6f  20 65 64 69 74 20 69 74  |meone to edit it|
00059930  73 20 64 61 74 61 2e 20  49 66 20 22 65 64 69 74  |s data. If "edit|
00059940  6f 72 22 20 72 65 63 6f  67 6e 69 73 65 73 20 66  |or" recognises f|
00059950  69 6c 65 74 79 70 65 20  61 6e 64 20 73 75 62 74  |iletype and subt|
00059960  79 70 65 2c 20 69 74 20  73 68 6f 75 6c 64 20 61  |ype, it should a|
00059970  63 6b 6e 6f 77 6c 65 64  67 65 20 74 68 69 73 20  |cknowledge this |
00059980  6d 65 73 73 61 67 65 20  62 79 20 73 65 6e 64 69  |message by sendi|
00059990  6e 67 20 61 6e 20 3c 45  64 69 74 41 63 6b 3d 3e  |ng an <EditAck=>|
000599a0  77 69 6d 70 5f 75 6d 34  35 64 38 31 3e 20 6d 65  |wimp_um45d81> me|
000599b0  73 73 61 67 65 2e 0a 0a  54 68 69 73 20 6d 65 73  |ssage...This mes|
000599c0  73 61 67 65 20 69 73 20  70 61 72 74 20 6f 66 20  |sage is part of |
000599d0  74 68 65 20 22 3c 45 78  74 65 72 6e 61 6c 20 45  |the "<External E|
000599e0  64 69 74 3d 3e 77 69 6d  70 5f 75 6d 45 78 74 45  |dit=>wimp_umExtE|
000599f0  64 69 74 3e 22 20 70 72  6f 74 6f 63 6f 6c 2e 00  |dit>" protocol..|
00059a00  44 41 54 41 ed 02 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
00059a10  45 64 69 74 41 63 6b 20  20 28 26 34 35 44 38 31  |EditAck  (&45D81|
00059a20  29 0a 44 61 74 61 20 69  6e 20 62 6c 6f 63 6b 20  |).Data in block |
00059a30  3a 0a 20 20 2b 20 32 30  09 3c 44 61 74 61 20 74  |:.  + 20.<Data t|
00059a40  79 70 65 20 77 6f 72 64  3d 3e 77 69 6d 70 5f 75  |ype word=>wimp_u|
00059a50  6d 45 78 74 45 64 69 74  44 61 74 61 74 79 70 65  |mExtEditDatatype|
00059a60  73 3e 20 28 66 69 6c 65  74 79 70 65 20 2b 20 73  |s> (filetype + s|
00059a70  75 62 74 79 70 65 29 0a  20 20 2b 20 32 34 09 3c  |ubtype).  + 24.<|
00059a80  4a 6f 62 20 68 61 6e 64  6c 65 3d 3e 77 69 6d 70  |Job handle=>wimp|
00059a90  5f 75 6d 45 78 74 45 64  69 74 4a 6f 62 48 61 6e  |_umExtEditJobHan|
00059aa0  64 6c 65 3e 0a 20 20 2b  20 32 38 09 3c 46 6c 61  |dle>.  + 28.<Fla|
00059ab0  67 20 77 6f 72 64 3d 3e  77 69 6d 70 5f 75 6d 45  |g word=>wimp_umE|
00059ac0  78 74 45 64 69 74 46 6c  61 67 73 3e 0a 0a 54 68  |xtEditFlags>..Th|
00059ad0  69 73 20 6d 65 73 73 61  67 65 20 69 73 20 72 65  |is message is re|
00059ae0  74 75 72 6e 65 64 20 62  79 20 74 68 65 20 22 65  |turned by the "e|
00059af0  64 69 74 6f 72 22 20 61  66 74 65 72 20 72 65 63  |ditor" after rec|
00059b00  65 69 76 69 6e 67 20 61  6e 20 3c 45 64 69 74 52  |eiving an <EditR|
00059b10  71 3d 3e 77 69 6d 70 5f  75 6d 34 35 64 38 30 3e  |q=>wimp_um45d80>|
00059b20  20 6d 65 73 73 61 67 65  20 66 72 6f 6d 20 61 20  | message from a |
00059b30  22 63 6c 69 65 6e 74 22  2e 20 45 64 69 74 6f 72  |"client". Editor|
00059b40  20 73 65 74 73 20 74 68  65 20 74 6f 70 20 31 36  | sets the top 16|
00059b50  20 62 69 74 73 20 6f 66  20 74 68 65 20 4a 6f 62  | bits of the Job|
00059b60  20 48 61 6e 64 6c 65 20  74 6f 20 61 20 75 6e 69  | Handle to a uni|
00059b70  71 75 65 20 76 61 6c 75  65 2c 20 61 6e 64 20 62  |que value, and b|
00059b80  6f 74 68 20 74 61 73 6b  73 20 77 69 6c 6c 20 66  |oth tasks will f|
00059b90  72 6f 6d 20 6e 6f 77 20  6f 6e 20 75 73 65 20 74  |rom now on use t|
00059ba0  68 65 20 66 75 6c 6c 20  33 32 20 62 69 74 20 77  |he full 32 bit w|
00059bb0  6f 72 64 20 61 73 20 61  20 75 6e 69 71 75 65 20  |ord as a unique |
00059bc0  6a 6f 62 20 68 61 6e 64  6c 65 2e 20 45 64 69 74  |job handle. Edit|
00059bd0  6f 72 20 6d 61 79 20 61  6c 73 6f 20 63 68 61 6e  |or may also chan|
00059be0  67 65 20 73 6f 6d 65 20  62 69 74 73 20 69 6e 20  |ge some bits in |
00059bf0  74 68 65 20 46 6c 61 67  20 57 6f 72 64 2e 0a 0a  |the Flag Word...|
00059c00  45 64 69 74 6f 72 20 73  68 6f 75 6c 64 20 63 72  |Editor should cr|
00059c10  65 61 74 65 20 61 6e 64  20 6f 70 65 6e 20 61 6e  |eate and open an|
00059c20  20 65 6d 70 74 79 20 64  6f 63 75 6d 65 6e 74 2e  | empty document.|
00059c30  20 49 66 20 74 68 65 20  22 63 6c 69 65 6e 74 22  | If the "client"|
00059c40  20 77 61 6e 74 73 20 74  6f 2c 20 69 74 20 6d 69  | wants to, it mi|
00059c50  67 68 74 20 66 69 6c 6c  20 74 68 65 20 65 6d 70  |ght fill the emp|
00059c60  74 79 20 64 6f 63 20 77  69 74 68 20 64 61 74 61  |ty doc with data|
00059c70  20 62 79 20 73 65 6e 64  69 6e 67 20 61 6e 20 3c  | by sending an <|
00059c80  45 64 69 74 44 61 74 61  53 61 76 65 3d 3e 77 69  |EditDataSave=>wi|
00059c90  6d 70 5f 75 6d 34 35 64  38 34 3e 20 6d 65 73 73  |mp_um45d84> mess|
00059ca0  61 67 65 2e 0a 0a 54 68  69 73 20 6d 65 73 73 61  |age...This messa|
00059cb0  67 65 20 69 73 20 70 61  72 74 20 6f 66 20 74 68  |ge is part of th|
00059cc0  65 20 22 3c 45 78 74 65  72 6e 61 6c 20 45 64 69  |e "<External Edi|
00059cd0  74 3d 3e 77 69 6d 70 5f  75 6d 45 78 74 45 64 69  |t=>wimp_umExtEdi|
00059ce0  74 3e 22 20 70 72 6f 74  6f 63 6f 6c 2e 00 00 00  |t>" protocol....|
00059cf0  44 41 54 41 9f 01 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
00059d00  45 64 69 74 52 65 74 75  72 6e 20 20 28 26 34 35  |EditReturn  (&45|
00059d10  44 38 32 29 0a 44 61 74  61 20 69 6e 20 62 6c 6f  |D82).Data in blo|
00059d20  63 6b 20 3a 0a 20 20 2b  20 32 30 09 3c 44 61 74  |ck :.  + 20.<Dat|
00059d30  61 20 74 79 70 65 20 77  6f 72 64 3d 3e 77 69 6d  |a type word=>wim|
00059d40  70 5f 75 6d 45 78 74 45  64 69 74 44 61 74 61 74  |p_umExtEditDatat|
00059d50  79 70 65 73 3e 20 28 66  69 6c 65 74 79 70 65 20  |ypes> (filetype |
00059d60  2b 20 73 75 62 74 79 70  65 29 0a 20 20 2b 20 32  |+ subtype).  + 2|
00059d70  34 09 3c 4a 6f 62 20 68  61 6e 64 6c 65 3d 3e 77  |4.<Job handle=>w|
00059d80  69 6d 70 5f 75 6d 45 78  74 45 64 69 74 4a 6f 62  |imp_umExtEditJob|
00059d90  48 61 6e 64 6c 65 3e 0a  20 20 2b 20 32 38 09 3c  |Handle>.  + 28.<|
00059da0  46 6c 61 67 20 77 6f 72  64 3d 3e 77 69 6d 70 5f  |Flag word=>wimp_|
00059db0  75 6d 45 78 74 45 64 69  74 46 6c 61 67 73 3e 0a  |umExtEditFlags>.|
00059dc0  0a 54 68 69 73 20 6d 65  73 73 61 67 65 20 69 73  |.This message is|
00059dd0  20 73 65 6e 74 20 62 79  20 74 68 65 20 22 63 6c  | sent by the "cl|
00059de0  69 65 6e 74 22 20 77 68  65 6e 20 69 74 20 77 61  |ient" when it wa|
00059df0  6e 74 73 20 69 74 73 20  64 61 74 61 20 62 61 63  |nts its data bac|
00059e00  6b 2e 20 45 64 69 74 6f  72 20 73 68 6f 75 6c 64  |k. Editor should|
00059e10  20 72 65 73 70 6f 6e 64  20 77 69 74 68 20 61 6e  | respond with an|
00059e20  20 3c 45 64 69 74 44 61  74 61 53 61 76 65 3d 3e  | <EditDataSave=>|
00059e30  77 69 6d 70 5f 75 6d 34  35 64 38 34 3e 20 6d 65  |wimp_um45d84> me|
00059e40  73 73 61 67 65 2e 0a 0a  54 68 69 73 20 6d 65 73  |ssage...This mes|
00059e50  73 61 67 65 20 69 73 20  70 61 72 74 20 6f 66 20  |sage is part of |
00059e60  74 68 65 20 22 3c 45 78  74 65 72 6e 61 6c 20 45  |the "<External E|
00059e70  64 69 74 3d 3e 77 69 6d  70 5f 75 6d 45 78 74 45  |dit=>wimp_umExtE|
00059e80  64 69 74 3e 22 20 70 72  6f 74 6f 63 6f 6c 2e 00  |dit>" protocol..|
00059e90  44 41 54 41 51 01 00 00  4d 65 73 73 61 67 65 5f  |DATAQ...Message_|
00059ea0  45 64 69 74 41 62 6f 72  74 20 20 28 26 34 35 44  |EditAbort  (&45D|
00059eb0  38 33 29 0a 44 61 74 61  20 69 6e 20 62 6c 6f 63  |83).Data in bloc|
00059ec0  6b 20 3a 0a 20 20 2b 20  32 30 09 30 0a 20 20 2b  |k :.  + 20.0.  +|
00059ed0  20 32 34 09 3c 4a 6f 62  20 48 61 6e 64 6c 65 3d  | 24.<Job Handle=|
00059ee0  3e 77 69 6d 70 5f 75 6d  45 78 74 45 64 69 74 4a  |>wimp_umExtEditJ|
00059ef0  6f 62 48 61 6e 64 6c 65  3e 0a 0a 54 68 69 73 20  |obHandle>..This |
00059f00  6d 65 73 73 61 67 65 20  63 61 6e 20 62 65 20 73  |message can be s|
00059f10  65 6e 74 20 62 79 20 62  6f 74 68 20 22 63 6c 69  |ent by both "cli|
00059f20  65 6e 74 22 20 61 6e 64  20 22 65 64 69 74 6f 72  |ent" and "editor|
00059f30  22 2e 20 4e 6f 20 71 75  65 73 74 69 6f 6e 73 20  |". No questions |
00059f40  73 68 6f 75 6c 64 20 62  65 20 61 73 6b 65 64 2e  |should be asked.|
00059f50  20 54 68 65 20 73 65 6e  64 65 72 20 6f 66 20 74  | The sender of t|
00059f60  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 72  |his message is r|
00059f70  65 73 70 6f 6e 73 69 62  6c 65 20 66 6f 72 20 61  |esponsible for a|
00059f80  6e 79 20 6d 65 73 73 61  67 65 73 20 74 6f 20 74  |ny messages to t|
00059f90  68 65 20 75 73 65 72 2e  0a 0a 54 68 69 73 20 6d  |he user...This m|
00059fa0  65 73 73 61 67 65 20 69  73 20 70 61 72 74 20 6f  |essage is part o|
00059fb0  66 20 74 68 65 20 22 3c  45 78 74 65 72 6e 61 6c  |f the "<External|
00059fc0  20 45 64 69 74 3d 3e 77  69 6d 70 5f 75 6d 45 78  | Edit=>wimp_umEx|
00059fd0  74 45 64 69 74 3e 22 20  70 72 6f 74 6f 63 6f 6c  |tEdit>" protocol|
00059fe0  2e 00 00 00 44 41 54 41  4e 02 00 00 4d 65 73 73  |....DATAN...Mess|
00059ff0  61 67 65 5f 45 64 69 74  44 61 74 61 53 61 76 65  |age_EditDataSave|
0005a000  20 28 26 34 35 44 38 34  29 0a 44 61 74 61 20 69  | (&45D84).Data i|
0005a010  6e 20 62 6c 6f 63 6b 20  3a 0a 20 20 2b 20 32 30  |n block :.  + 20|
0005a020  09 3c 4a 6f 62 20 68 61  6e 64 6c 65 3d 3e 77 69  |.<Job handle=>wi|
0005a030  6d 70 5f 75 6d 45 78 74  45 64 69 74 4a 6f 62 48  |mp_umExtEditJobH|
0005a040  61 6e 64 6c 65 3e 0a 20  20 2b 20 32 34 09 72 65  |andle>.  + 24.re|
0005a050  73 65 72 76 65 64 0a 20  20 2b 20 32 38 09 72 65  |served.  + 28.re|
0005a060  73 65 72 76 65 64 0a 20  20 2b 20 33 32 09 72 65  |served.  + 32.re|
0005a070  73 65 72 76 65 64 0a 20  20 2b 20 33 36 09 45 73  |served.  + 36.Es|
0005a080  74 69 6d 61 74 65 64 20  73 69 7a 65 0a 20 20 2b  |timated size.  +|
0005a090  20 34 30 09 3c 46 69 6c  65 74 79 70 65 3d 3e 46  | 40.<Filetype=>F|
0005a0a0  69 6c 65 74 79 70 65 73  3a 21 52 6f 6f 74 3e 20  |iletypes:!Root> |
0005a0b0  28 7b 2a 7d 4e 6f 74 7b  2a 7d 20 44 61 74 61 74  |({*}Not{*} Datat|
0005a0c0  79 70 65 29 0a 20 20 2b  20 34 34 09 50 72 6f 70  |ype).  + 44.Prop|
0005a0d0  6f 73 65 64 20 6c 65 61  66 6e 61 6d 65 0a 0a 54  |osed leafname..T|
0005a0e0  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 76  |his message is v|
0005a0f0  65 72 79 20 73 69 6d 69  6c 61 72 20 74 6f 20 74  |ery similar to t|
0005a100  68 65 20 73 74 61 6e 64  61 72 64 20 3c 44 61 74  |he standard <Dat|
0005a110  61 53 61 76 65 3d 3e 77  69 6d 70 5f 75 6d 31 3e  |aSave=>wimp_um1>|
0005a120  20 6d 65 73 73 61 67 65  2c 20 61 6e 64 20 66 72  | message, and fr|
0005a130  6f 6d 20 68 65 72 65 20  6f 6e 20 74 68 65 20 73  |om here on the s|
0005a140  74 61 6e 64 61 72 64 20  44 61 74 61 20 54 72 61  |tandard Data Tra|
0005a150  6e 73 66 65 72 20 50 72  6f 74 6f 63 6f 6c 20 69  |nsfer Protocol i|
0005a160  73 20 75 73 65 64 2e 20  28 69 65 3a 20 69 74 20  |s used. (ie: it |
0005a170  69 73 20 61 6e 73 77 65  72 65 64 20 77 69 74 68  |is answered with|
0005a180  20 3c 44 61 74 61 53 61  76 65 41 63 6b 3d 3e 77  | <DataSaveAck=>w|
0005a190  69 6d 70 5f 75 6d 32 3e  20 6f 72 20 3c 52 61 6d  |imp_um2> or <Ram|
0005a1a0  46 65 74 63 68 3d 3e 77  69 6d 70 5f 75 6d 36 3e  |Fetch=>wimp_um6>|
0005a1b0  29 0a 4e 6f 74 65 20 74  68 61 74 20 22 63 6c 69  |).Note that "cli|
0005a1c0  65 6e 74 22 20 63 61 6e  20 73 65 6e 64 20 74 68  |ent" can send th|
0005a1d0  69 73 20 6d 65 73 73 61  67 65 20 73 65 76 65 72  |is message sever|
0005a1e0  61 6c 20 74 69 6d 65 73  2e 0a 0a 54 68 69 73 20  |al times...This |
0005a1f0  6d 65 73 73 61 67 65 20  69 73 20 70 61 72 74 20  |message is part |
0005a200  6f 66 20 74 68 65 20 22  3c 45 78 74 65 72 6e 61  |of the "<Externa|
0005a210  6c 20 45 64 69 74 3d 3e  77 69 6d 70 5f 75 6d 45  |l Edit=>wimp_umE|
0005a220  78 74 45 64 69 74 3e 22  20 70 72 6f 74 6f 63 6f  |xtEdit>" protoco|
0005a230  6c 2e 00 00 44 41 54 41  5f 04 00 00 4d 65 73 73  |l...DATA_...Mess|
0005a240  61 67 65 5f 45 64 69 74  43 75 72 73 6f 72 20 28  |age_EditCursor (|
0005a250  26 34 35 44 38 35 29 0a  44 61 74 61 20 69 6e 20  |&45D85).Data in |
0005a260  62 6c 6f 63 6b 20 3a 0a  20 20 2b 20 32 30 09 72  |block :.  + 20.r|
0005a270  65 73 65 72 76 65 64 0a  20 20 2b 20 32 34 09 3c  |eserved.  + 24.<|
0005a280  4a 6f 62 20 68 61 6e 64  6c 65 3d 3e 77 69 6d 70  |Job handle=>wimp|
0005a290  5f 75 6d 45 78 74 45 64  69 74 4a 6f 62 48 61 6e  |_umExtEditJobHan|
0005a2a0  64 6c 65 3e 0a 20 20 2b  20 32 38 09 3c 46 6c 61  |dle>.  + 28.<Fla|
0005a2b0  67 20 77 6f 72 64 3d 3e  77 69 6d 70 5f 75 6d 45  |g word=>wimp_umE|
0005a2c0  78 74 45 64 69 74 46 6c  61 67 73 3e 0a 20 20 2b  |xtEditFlags>.  +|
0005a2d0  20 33 32 09 4e 65 77 20  63 75 72 73 6f 72 20 70  | 32.New cursor p|
0005a2e0  6f 73 69 74 69 6f 6e 2a  0a 20 20 2b 20 33 36 09  |osition*.  + 36.|
0005a2f0  4e 65 77 20 73 74 61 72  74 20 6f 66 20 73 65 6c  |New start of sel|
0005a300  65 63 74 69 6f 6e 2a 0a  20 20 2b 20 34 30 09 4e  |ection*.  + 40.N|
0005a310  65 77 20 65 6e 64 20 6f  66 20 73 65 6c 65 63 74  |ew end of select|
0005a320  69 6f 6e 2a 0a 20 20 2b  20 34 34 09 4f 6c 64 20  |ion*.  + 44.Old |
0005a330  63 75 72 73 6f 72 2a 20  28 72 65 70 6c 79 20 6f  |cursor* (reply o|
0005a340  6e 6c 79 29 0a 20 20 2b  20 34 38 09 4f 6c 64 20  |nly).  + 48.Old |
0005a350  73 74 61 72 74 20 6f 66  20 73 65 6c 65 63 74 69  |start of selecti|
0005a360  6f 6e 2a 20 28 72 65 70  6c 79 20 6f 6e 6c 79 29  |on* (reply only)|
0005a370  0a 20 20 2b 20 35 32 09  4f 6c 64 20 65 6e 64 20  |.  + 52.Old end |
0005a380  6f 66 20 73 65 6c 65 63  74 69 6f 6e 2a 20 28 72  |of selection* (r|
0005a390  65 70 6c 79 20 6f 6e 6c  79 29 0a 0a 54 68 69 73  |eply only)..This|
0005a3a0  20 6d 65 73 73 61 67 65  20 69 73 20 73 65 6e 74  | message is sent|
0005a3b0  20 62 79 20 61 20 63 6c  69 65 6e 74 20 77 68 6f  | by a client who|
0005a3c0  20 77 69 73 68 65 73 20  74 68 65 20 65 64 69 74  | wishes the edit|
0005a3d0  6f 72 20 74 6f 20 70 6f  73 69 74 69 6f 6e 20 69  |or to position i|
0005a3e0  74 27 73 a0 63 75 72 73  6f 72 20 65 78 61 63 74  |t's.cursor exact|
0005a3f0  6c 79 2e 20 54 68 65 20  72 65 70 6c 79 20 69 73  |ly. The reply is|
0005a400  20 74 68 65 6e 20 72 74  75 72 6e 65 64 20 62 79  | then rturned by|
0005a410  20 74 68 65 20 65 64 69  74 6f 72 20 74 6f 20 69  | the editor to i|
0005a420  6e 64 69 63 61 74 65 20  74 68 65 20 6f 6c 64 20  |ndicate the old |
0005a430  63 75 72 73 6f 72 2c 20  73 74 61 72 74 20 61 6e  |cursor, start an|
0005a440  64 20 65 6e 64 20 70 6f  73 69 74 69 6f 6e 73 2e  |d end positions.|
0005a450  0a 0a 41 6c 6c 20 64 61  74 61 20 68 61 73 20 70  |..All data has p|
0005a460  6f 73 69 74 69 6f 6e 73  20 73 74 61 72 74 69 6e  |ositions startin|
0005a470  67 20 77 69 74 68 20 74  68 65 20 66 69 72 73 74  |g with the first|
0005a480  20 75 6e 69 74 20 61 73  20 31 2c 20 74 68 65 20  | unit as 1, the |
0005a490  6e 65 78 74 20 61 73 20  32 20 61 6e 64 20 73 6f  |next as 2 and so|
0005a4a0  20 6f 6e 2e 20 54 6f 20  70 6f 73 69 74 69 6f 6e  | on. To position|
0005a4b0  20 61 20 70 6f 69 6e 74  65 72 20 62 65 66 6f 72  | a pointer befor|
0005a4c0  65 20 74 68 65 20 73 74  61 72 74 20 6f 66 20 74  |e the start of t|
0005a4d0  68 65 20 64 61 74 61 20  75 73 65 20 30 2c 20 61  |he data use 0, a|
0005a4e0  6e 64 20 61 66 74 65 72  20 74 68 65 20 65 6e 64  |nd after the end|
0005a4f0  20 75 73 65 20 2d 32 2e  0a 0a 7b 66 48 34 7d 53  | use -2...{fH4}S|
0005a500  70 65 63 69 61 6c 20 63  75 72 73 6f 72 20 6d 65  |pecial cursor me|
0005a510  61 6e 69 6e 67 73 7b 66  7d 0a 54 6f 20 6c 65 61  |anings{f}.To lea|
0005a520  76 65 20 61 20 66 69 65  6c 64 20 75 6e 63 68 61  |ve a field uncha|
0005a530  6e 67 65 64 20 69 74 20  73 68 6f 75 6c 64 20 75  |nged it should u|
0005a540  73 65 20 2d 31 2c 20 74  68 65 72 65 66 6f 72 65  |se -1, therefore|
0005a550  20 74 68 72 65 65 20 2d  31 27 73 20 77 69 6c 6c  | three -1's will|
0005a560  20 72 65 61 64 20 74 68  65 20 63 75 72 72 65 6e  | read the curren|
0005a570  74 20 70 6f 73 69 74 69  6f 6e 20 6f 66 20 74 68  |t position of th|
0005a580  65 20 63 75 72 73 6f 72  2e 20 49 66 20 74 68 65  |e cursor. If the|
0005a590  72 65 20 69 73 20 6e 6f  20 63 6f 6e 63 65 70 74  |re is no concept|
0005a5a0  20 6f 66 20 63 75 72 73  6f 72 20 6f 72 20 73 65  | of cursor or se|
0005a5b0  6c 65 63 74 69 6f 6e 20  74 68 65 6e 20 74 68 65  |lection then the|
0005a5c0  20 61 70 70 72 6f 70 72  69 61 74 65 20 66 69 65  | appropriate fie|
0005a5d0  6c 64 73 20 6d 75 73 74  20 62 65 20 73 65 74 20  |lds must be set |
0005a5e0  74 6f 20 2d 31 20 62 79  20 74 68 65 20 65 64 69  |to -1 by the edi|
0005a5f0  74 6f 72 2e 20 54 68 65  20 65 64 69 74 6f 72 20  |tor. The editor |
0005a600  73 68 6f 75 6c 64 20 6e  65 76 65 72 20 72 65 74  |should never ret|
0005a610  75 72 6e 20 2d 32 20 61  73 20 61 20 70 6f 73 69  |urn -2 as a posi|
0005a620  74 69 6f 6e 2e 0a 0a 55  6e 69 74 20 6d 65 61 6e  |tion...Unit mean|
0005a630  69 6e 67 73 20 61 72 65  20 64 69 66 66 65 72 65  |ings are differe|
0005a640  6e 74 20 64 65 70 65 6e  64 69 6e 67 20 6f 6e 20  |nt depending on |
0005a650  74 68 65 20 66 69 6c 65  74 79 70 65 2c 20 63 6c  |the filetype, cl|
0005a660  69 63 6b 20 3c 68 65 72  65 3d 3e 57 69 6d 70 5f  |ick <here=>Wimp_|
0005a670  75 6d 45 78 74 45 64 69  74 43 75 72 73 6f 72 55  |umExtEditCursorU|
0005a680  6e 69 74 73 3e 20 66 6f  72 20 64 65 74 61 69 6c  |nits> for detail|
0005a690  73 2e 0a 00 44 41 54 41  c9 01 00 00 4d 65 73 73  |s...DATA....Mess|
0005a6a0  61 67 65 5f 44 61 74 61  4f 70 65 6e 20 20 28 35  |age_DataOpen  (5|
0005a6b0  29 0a 45 78 74 72 61 20  64 61 74 61 20 69 6e 20  |).Extra data in |
0005a6c0  62 6c 6f 63 6b 3a 0a 20  20 32 30 09 57 69 6e 64  |block:.  20.Wind|
0005a6d0  6f 77 20 68 61 6e 64 6c  65 20 6f 66 20 64 69 72  |ow handle of dir|
0005a6e0  65 63 74 6f 72 79 20 76  69 65 77 65 72 0a 20 20  |ectory viewer.  |
0005a6f0  32 34 09 75 6e 75 73 65  64 0a 20 20 32 38 09 78  |24.unused.  28.x|
0005a700  20 6f 66 66 73 65 74 20  6f 66 20 69 63 6f 6e 20  | offset of icon |
0005a710  63 6c 69 63 6b 65 64 0a  20 20 33 32 09 79 20 2d  |clicked.  32.y -|
0005a720  2d 2d 2d 2d 2d 2d 2d 2d  2d 22 2d 2d 2d 2d 2d 2d  |---------"------|
0005a730  2d 2d 2d 2d 2d 0a 20 20  33 36 09 30 0a 20 20 34  |-----.  36.0.  4|
0005a740  30 09 66 69 6c 65 74 79  70 65 0a 20 20 34 34 09  |0.filetype.  44.|
0005a750  66 75 6c 6c 20 70 61 74  68 6e 61 6d 65 0a 0a 54  |full pathname..T|
0005a760  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 62  |his message is b|
0005a770  72 6f 61 64 63 61 73 74  65 64 20 77 68 65 6e 20  |roadcasted when |
0005a780  74 68 65 20 75 73 65 72  20 64 6f 75 62 6c 65 63  |the user doublec|
0005a790  6c 69 63 6b 73 20 6f 6e  20 61 20 66 69 6c 65 2e  |licks on a file.|
0005a7a0  20 49 66 20 74 68 65 20  72 65 63 65 69 76 65 72  | If the receiver|
0005a7b0  20 77 61 6e 74 73 20 74  6f 20 6c 6f 61 64 20 74  | wants to load t|
0005a7c0  68 65 20 66 69 6c 65 2c  20 68 65 20 73 68 6f 75  |he file, he shou|
0005a7d0  6c 64 20 61 63 6b 6e 6f  77 6c 65 64 67 65 20 74  |ld acknowledge t|
0005a7e0  68 69 73 20 6d 65 73 73  61 67 65 20 62 79 20 72  |his message by r|
0005a7f0  65 74 75 72 6e 69 6e 67  20 61 20 3c 44 61 74 61  |eturning a <Data|
0005a800  4c 6f 61 64 41 63 6b 3d  3e 77 69 6d 70 5f 75 6d  |LoadAck=>wimp_um|
0005a810  34 3e 20 6d 65 73 73 61  67 65 2e 0a 49 66 20 6e  |4> message..If n|
0005a820  6f 20 6f 6e 65 20 61 63  6b 6e 6f 77 6c 65 64 67  |o one acknowledg|
0005a830  65 73 20 74 68 65 20 6d  65 73 73 61 67 65 2c 20  |es the message, |
0005a840  74 68 65 20 66 69 6c 65  72 20 77 69 6c 6c 20 74  |the filer will t|
0005a850  72 79 20 74 6f 20 72 75  6e 20 69 74 2e 00 00 00  |ry to run it....|
0005a860  44 41 54 41 4b 01 00 00  4d 65 73 73 61 67 65 5f  |DATAK...Message_|
0005a870  48 65 6c 70 52 65 71 75  65 73 74 20 28 26 35 30  |HelpRequest (&50|
0005a880  32 29 0a 45 78 74 72 61  20 64 61 74 61 20 69 6e  |2).Extra data in|
0005a890  20 62 6c 6f 63 6b 20 3a  0a 0a 20 32 30 09 4d 6f  | block :.. 20.Mo|
0005a8a0  75 73 65 20 78 0a 20 32  34 09 4d 6f 75 73 65 20  |use x. 24.Mouse |
0005a8b0  79 0a 20 32 38 09 42 75  74 74 6f 6e 20 73 74 61  |y. 28.Button sta|
0005a8c0  74 65 0a 20 33 32 09 57  69 6e 64 6f 77 20 68 61  |te. 32.Window ha|
0005a8d0  6e 64 6c 65 20 28 2d 31  20 69 66 20 6e 6f 20 77  |ndle (-1 if no w|
0005a8e0  69 6e 64 6f 77 29 0a 20  33 36 09 49 63 6f 6e 20  |indow). 36.Icon |
0005a8f0  68 61 6e 64 6c 65 20 20  20 28 2d 31 20 69 66 20  |handle   (-1 if |
0005a900  6e 6f 20 69 63 6f 6e 29  0a 20 0a 54 68 65 20 21  |no icon). .The !|
0005a910  48 65 6c 70 20 61 70 70  6c 69 63 61 74 69 6f 6e  |Help application|
0005a920  20 73 65 6e 64 73 20 6f  75 74 20 74 68 69 73 20  | sends out this |
0005a930  6d 65 73 73 61 67 65 2e  0a 0a 49 66 20 79 6f 75  |message...If you|
0005a940  20 77 61 6e 74 20 74 6f  20 67 69 76 65 20 73 6f  | want to give so|
0005a950  6d 65 20 73 69 6d 70 6c  65 20 68 65 6c 70 20 6f  |me simple help o|
0005a960  6e 20 74 68 65 20 67 69  76 65 6e 20 77 69 6e 64  |n the given wind|
0005a970  6f 77 2f 69 63 6f 6e 2c  20 74 68 65 6e 20 72 65  |ow/icon, then re|
0005a980  70 6c 79 20 77 69 74 68  20 61 20 3c 48 65 6c 70  |ply with a <Help|
0005a990  52 65 70 6c 79 3d 3e 77  69 6d 70 5f 75 6d 35 30  |Reply=>wimp_um50|
0005a9a0  33 3e 20 6d 65 73 73 61  67 65 2e 00 44 41 54 41  |3> message..DATA|
0005a9b0  3a 01 00 00 4d 65 73 73  61 67 65 5f 48 65 6c 70  |:...Message_Help|
0005a9c0  52 65 70 6c 79 20 28 26  35 30 33 29 0a 45 78 74  |Reply (&503).Ext|
0005a9d0  72 61 20 64 61 74 61 20  69 6e 20 62 6c 6f 63 6b  |ra data in block|
0005a9e0  20 3a 0a 0a 20 32 30 2e  2e 09 48 65 6c 70 2d 73  | :.. 20...Help-s|
0005a9f0  74 72 69 6e 67 0a 0a 54  68 69 73 20 6d 65 73 73  |tring..This mess|
0005aa00  61 67 65 20 69 73 20 73  65 6e 74 20 62 79 20 61  |age is sent by a|
0005aa10  6e 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 69 6e  |n application in|
0005aa20  20 72 65 70 6c 79 20 74  6f 20 61 20 3c 48 65 6c  | reply to a <Hel|
0005aa30  70 52 65 71 75 65 73 74  3d 3e 77 69 6d 70 5f 75  |pRequest=>wimp_u|
0005aa40  6d 35 30 32 3e 20 6d 65  73 73 61 67 65 2e 0a 0a  |m502> message...|
0005aa50  4d 61 78 20 6c 65 6e 67  74 68 20 3d 20 32 35 36  |Max length = 256|
0005aa60  2d 32 30 2d 31 20 3d 20  32 33 35 20 63 68 61 72  |-20-1 = 235 char|
0005aa70  73 2e 20 53 74 72 69 6e  67 20 69 73 20 65 6e 64  |s. String is end|
0005aa80  65 64 20 77 69 74 68 20  61 6e 79 20 63 6f 6e 74  |ed with any cont|
0005aa90  72 6f 6c 20 63 68 61 72  2e 20 3c 43 6f 6e 74 72  |rol char. <Contr|
0005aaa0  6f 6c 20 63 6f 64 65 73  3d 3e 57 69 6d 70 5f 55  |ol codes=>Wimp_U|
0005aab0  4d 35 30 33 43 6f 64 65  73 3e 20 6d 61 79 20 62  |M503Codes> may b|
0005aac0  65 20 75 73 65 64 20 75  6e 64 65 72 20 52 4f 33  |e used under RO3|
0005aad0  20 21 48 65 6c 70 20 6f  72 20 21 51 75 69 63 6b  | !Help or !Quick|
0005aae0  48 65 6c 70 2e 20 00 00  44 41 54 41 75 00 00 00  |Help. ..DATAu...|
0005aaf0  4d 65 73 73 61 67 65 5f  52 61 6d 46 65 74 63 68  |Message_RamFetch|
0005ab00  20 28 36 29 0a 44 61 74  61 20 69 6e 20 62 6c 6f  | (6).Data in blo|
0005ab10  63 6b 3a 0a 32 30 09 42  75 66 66 65 72 20 61 64  |ck:.20.Buffer ad|
0005ab20  64 72 65 73 73 20 77 68  65 72 65 20 72 65 63 65  |dress where rece|
0005ab30  69 76 65 72 20 73 68 6f  75 6c 64 20 70 75 74 20  |iver should put |
0005ab40  64 61 74 61 2e 0a 32 34  09 73 69 7a 65 20 6f 66  |data..24.size of|
0005ab50  20 73 61 69 64 20 62 75  66 66 65 72 2e 00 00 00  | said buffer....|
0005ab60  44 41 54 41 fc 00 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
0005ab70  52 61 6d 54 72 61 6e 73  6d 69 74 20 28 37 29 0a  |RamTransmit (7).|
0005ab80  65 78 74 72 61 20 64 61  74 61 20 69 6e 20 62 6c  |extra data in bl|
0005ab90  6f 63 6b 3a 0a 0a 32 30  09 42 75 66 66 65 72 20  |ock:..20.Buffer |
0005aba0  61 64 64 72 65 73 73 20  66 72 6f 6d 20 52 61 6d  |address from Ram|
0005abb0  46 65 74 63 68 20 6d 65  73 73 61 67 65 2e 0a 32  |Fetch message..2|
0005abc0  34 09 6e 6f 20 6f 66 20  62 79 74 65 73 20 77 72  |4.no of bytes wr|
0005abd0  69 74 74 65 6e 20 74 6f  20 62 75 66 66 65 72 2e  |itten to buffer.|
0005abe0  0a 0a 41 66 74 65 72 20  72 65 63 69 65 76 69 6e  |..After recievin|
0005abf0  67 20 61 20 52 61 6d 46  65 74 63 68 20 6d 65 73  |g a RamFetch mes|
0005ac00  73 61 67 65 2c 20 79 6f  75 20 77 72 69 74 65 20  |sage, you write |
0005ac10  64 61 74 61 20 74 6f 20  62 75 66 66 65 72 2c 20  |data to buffer, |
0005ac20  75 73 69 6e 67 20 3c 57  69 6d 70 5f 54 72 61 6e  |using <Wimp_Tran|
0005ac30  73 66 65 72 42 6c 6f 63  6b 3e 2c 20 61 6e 64 20  |sferBlock>, and |
0005ac40  74 68 65 6e 20 73 65 6e  64 20 62 61 63 6b 20 74  |then send back t|
0005ac50  68 69 73 20 6d 65 73 73  61 67 65 2e 44 41 54 41  |his message.DATA|
0005ac60  3d 03 00 00 4d 65 73 73  61 67 65 5f 50 72 65 51  |=...Message_PreQ|
0005ac70  75 69 74 20 28 38 29 0a  45 78 74 72 61 20 64 61  |uit (8).Extra da|
0005ac80  74 61 20 69 6e 20 62 6c  6f 63 6b 20 3a 0a 20 2b  |ta in block :. +|
0005ac90  20 32 30 20 66 6c 61 67  2e 20 30 20 69 66 20 63  | 20 flag. 0 if c|
0005aca0  6c 6f 73 65 64 6f 77 6e  2c 20 6e 6f 74 20 69 66  |losedown, not if|
0005acb0  20 73 69 6e 67 6c 65 2d  71 75 69 74 0a 0a 54 68  | single-quit..Th|
0005acc0  69 73 20 6d 65 73 73 61  67 65 20 69 73 20 62 72  |is message is br|
0005acd0  6f 61 64 63 61 73 74 65  64 20 77 68 65 6e 20 43  |oadcasted when C|
0005ace0  74 72 6c 2d 53 68 69 66  74 20 46 31 32 20 69 73  |trl-Shift F12 is|
0005acf0  20 70 72 65 73 73 65 64  2e 20 49 74 20 69 73 20  | pressed. It is |
0005ad00  61 6c 73 6f 20 73 65 6e  74 20 74 6f 20 61 20 73  |also sent to a s|
0005ad10  70 65 63 69 66 69 63 20  74 61 73 6b 2c 20 77 68  |pecific task, wh|
0005ad20  65 6e 20 74 68 65 20 75  73 65 72 20 74 72 69 65  |en the user trie|
0005ad30  73 20 74 6f 20 71 75 69  74 20 69 74 20 66 72 6f  |s to quit it fro|
0005ad40  6d 20 74 68 65 20 74 61  73 6b 20 64 69 73 70 6c  |m the task displ|
0005ad50  61 79 20 6d 65 6e 75 2e  0a 0a 49 66 20 79 6f 75  |ay menu...If you|
0005ad60  20 68 61 76 65 20 6e 6f  20 6f 62 6a 65 63 74 69  | have no objecti|
0005ad70  6f 6e 73 20 74 6f 20 62  65 69 6e 67 20 6b 69 6c  |ons to being kil|
0005ad80  6c 65 64 2c 20 74 68 65  6e 20 69 67 6e 6f 72 65  |led, then ignore|
0005ad90  20 74 68 69 73 20 6d 65  73 73 61 67 65 2c 20 61  | this message, a|
0005ada0  6e 64 20 79 6f 75 20 77  69 6c 6c 20 65 76 65 6e  |nd you will even|
0005adb0  74 75 61 6c 6c 79 20 72  65 63 65 69 76 65 20 61  |tually receive a|
0005adc0  20 51 75 69 74 20 6d 65  73 73 61 67 65 2e 0a 0a  | Quit message...|
0005add0  49 66 20 79 6f 75 20 6f  62 6a 65 63 74 20 74 6f  |If you object to|
0005ade0  20 62 65 69 6e 67 20 6b  69 6c 6c 65 64 20 28 75  | being killed (u|
0005adf0  6e 73 61 76 65 64 20 64  61 74 61 2e 2e 29 2c 20  |nsaved data..), |
0005ae00  79 6f 75 20 73 68 6f 75  6c 64 20 3c 61 63 6b 6e  |you should <ackn|
0005ae10  6f 77 6c 65 64 67 65 3d  3e 77 69 6d 70 5f 73 65  |owledge=>wimp_se|
0005ae20  6e 64 6d 65 73 73 61 67  65 33 3e 20 74 68 69 73  |ndmessage3> this|
0005ae30  20 6d 65 73 73 61 67 65  2c 20 61 6e 64 20 74 68  | message, and th|
0005ae40  65 6e 20 6f 70 65 6e 20  61 20 64 69 61 6c 6f 67  |en open a dialog|
0005ae50  75 65 20 62 6f 78 20 61  73 6b 69 6e 67 20 74 68  |ue box asking th|
0005ae60  65 20 75 73 65 72 20 77  68 61 74 20 68 65 20 77  |e user what he w|
0005ae70  61 6e 74 73 20 74 6f 20  64 6f 2e 20 49 66 20 68  |ants to do. If h|
0005ae80  65 20 73 65 6c 65 63 74  73 20 74 6f 20 71 75 69  |e selects to qui|
0005ae90  74 20 61 6e 64 20 74 68  65 20 27 66 6c 61 67 27  |t and the 'flag'|
0005aea0  20 77 61 73 20 7a 65 72  6f 2c 20 79 6f 75 20 61  | was zero, you a|
0005aeb0  72 65 20 73 75 70 70 6f  73 65 64 20 74 6f 20 72  |re supposed to r|
0005aec0  65 73 74 61 72 74 20 74  68 65 20 63 6c 6f 73 65  |estart the close|
0005aed0  64 6f 77 6e 20 73 65 71  75 65 6e 63 65 20 62 79  |down sequence by|
0005aee0  20 65 6d 69 74 74 69 6e  67 20 61 20 43 74 72 6c  | emitting a Ctrl|
0005aef0  2d 53 68 69 66 74 20 46  31 32 20 28 35 30 38 29  |-Shift F12 (508)|
0005af00  2c 20 75 73 69 6e 67 20  3c 57 69 6d 70 5f 50 72  |, using <Wimp_Pr|
0005af10  6f 63 65 73 73 4b 65 79  3e 2e 0a 0a 54 68 65 20  |ocessKey>...The |
0005af20  27 66 6c 61 67 27 20 69  73 20 6e 65 77 20 75 6e  |'flag' is new un|
0005af30  64 65 72 20 52 4f 33 2e  20 55 6e 64 65 72 20 52  |der RO3. Under R|
0005af40  4f 32 20 74 68 65 72 65  20 77 61 73 20 6e 6f 20  |O2 there was no |
0005af50  77 61 79 20 6f 66 20 6b  6e 6f 77 69 6e 67 20 69  |way of knowing i|
0005af60  66 20 6f 6e 6c 79 20 79  6f 75 72 20 74 61 73 6b  |f only your task|
0005af70  20 77 61 73 20 62 65 69  6e 67 20 71 75 69 74 74  | was being quitt|
0005af80  65 64 2c 20 6f 72 20 74  68 65 20 77 68 6f 6c 65  |ed, or the whole|
0005af90  20 64 65 73 6b 74 6f 70  2e 00 00 00 44 41 54 41  | desktop....DATA|
0005afa0  36 02 00 00 4d 65 73 73  61 67 65 5f 50 72 69 6e  |6...Message_Prin|
0005afb0  74 46 69 6c 65 20 20 28  26 38 30 31 34 30 29 0a  |tFile  (&80140).|
0005afc0  65 78 74 72 61 20 64 61  74 61 20 69 6e 20 62 6c  |extra data in bl|
0005afd0  6f 63 6b 20 3a 0a 0a 32  30 09 64 65 73 74 69 6e  |ock :..20.destin|
0005afe0  61 74 69 6f 6e 09 77 69  6e 64 6f 77 20 68 61 6e  |ation.window han|
0005aff0  64 6c 65 0a 32 34 09 20  09 09 69 63 6f 6e 20 68  |dle.24. ..icon h|
0005b000  61 6e 64 6c 65 0a 32 38  09 20 09 09 73 63 72 65  |andle.28. ..scre|
0005b010  65 6e 78 0a 33 32 09 20  09 09 73 63 72 65 65 6e  |enx.32. ..screen|
0005b020  79 0a 33 36 09 65 73 74  69 6d 61 74 65 64 20 73  |y.36.estimated s|
0005b030  69 7a 65 0a 34 30 09 3c  66 69 6c 65 74 79 70 65  |ize.40.<filetype|
0005b040  3d 3e 46 69 6c 65 74 79  70 65 73 3a 21 52 6f 6f  |=>Filetypes:!Roo|
0005b050  74 3e 20 6f 66 20 64 61  74 61 0a 34 34 09 70 72  |t> of data.44.pr|
0005b060  6f 70 6f 73 65 64 20 6c  65 61 66 6e 61 6d 65 2c  |oposed leafname,|
0005b070  20 30 2d 74 65 72 6d 69  6e 61 74 65 64 0a 0a 54  | 0-terminated..T|
0005b080  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 73  |his message is s|
0005b090  65 6e 74 20 62 79 20 21  50 72 69 6e 74 65 72 73  |ent by !Printers|
0005b0a0  20 77 68 65 6e 20 69 74  20 72 65 63 65 69 76 65  | when it receive|
0005b0b0  73 20 61 20 44 61 74 61  53 61 76 65 20 6f 72 20  |s a DataSave or |
0005b0c0  50 72 69 6e 74 53 61 76  65 20 6d 65 73 73 61 67  |PrintSave messag|
0005b0d0  65 2e 20 54 68 65 20 74  61 73 6b 20 63 61 6e 20  |e. The task can |
0005b0e0  64 6f 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |do the following|
0005b0f0  20 3a 0a 0a 20 20 2a 09  49 67 6e 6f 72 65 2e 20  | :..  *.Ignore. |
0005b100  21 50 72 69 6e 74 65 72  73 20 77 69 6c 6c 20 73  |!Printers will s|
0005b110  65 6e 64 20 3c 44 61 74  61 53 61 76 65 41 63 6b  |end <DataSaveAck|
0005b120  3d 3e 77 69 6d 70 5f 75  6d 32 3e 2c 20 74 6f 20  |=>wimp_um2>, to |
0005b130  73 61 76 65 20 74 68 65  20 66 69 6c 65 20 66 6f  |save the file fo|
0005b140  72 20 6c 61 74 65 72 20  70 72 69 6e 74 69 6e 67  |r later printing|
0005b150  2e 0a 20 20 2a 09 52 65  73 70 6f 6e 64 20 77 69  |..  *.Respond wi|
0005b160  74 68 20 3c 57 69 6c 6c  50 72 69 6e 74 3d 3e 77  |th <WillPrint=>w|
0005b170  69 6d 70 5f 75 6d 38 30  31 34 31 3e 2c 20 74 6f  |imp_um80141>, to|
0005b180  20 73 65 6e 64 20 64 61  74 61 20 74 6f 20 50 72  | send data to Pr|
0005b190  69 6e 74 65 72 3a 0a 20  20 2a 09 50 75 74 20 64  |inter:.  *.Put d|
0005b1a0  61 74 61 20 69 6e 20 50  72 69 6e 74 65 72 24 54  |ata in Printer$T|
0005b1b0  65 6d 70 20 61 6e 64 20  73 65 6e 64 20 3c 44 61  |emp and send <Da|
0005b1c0  74 61 4c 6f 61 64 3d 3e  77 69 6d 70 5f 75 6d 33  |taLoad=>wimp_um3|
0005b1d0  3e 2e 00 00 44 41 54 41  06 01 00 00 54 61 73 6b  |>...DATA....Task|
0005b1e0  57 69 6e 64 6f 77 5f 49  6e 70 75 74 20 20 28 26  |Window_Input  (&|
0005b1f0  38 30 38 43 30 29 0a 20  2b 20 32 30 09 53 69 7a  |808C0). + 20.Siz|
0005b200  65 0a 20 2b 20 32 34 09  44 61 74 61 2e 2e 0a 0a  |e. + 24.Data....|
0005b210  54 68 69 73 20 6d 65 73  73 61 67 65 20 69 73 20  |This message is |
0005b220  75 73 65 64 20 74 6f 20  67 69 76 65 20 69 6e 70  |used to give inp|
0005b230  75 74 20 64 61 74 61 20  28 6b 65 79 20 70 72 65  |ut data (key pre|
0005b240  73 73 65 73 29 20 74 6f  20 74 68 65 20 63 68 69  |sses) to the chi|
0005b250  6c 64 20 74 61 73 6b 2e  20 4c 61 72 67 65 72 20  |ld task. Larger |
0005b260  61 6d 6f 75 6e 74 73 20  6f 66 20 64 61 74 61 20  |amounts of data |
0005b270  63 61 6e 20 62 65 20 73  65 6e 74 20 77 69 74 68  |can be sent with|
0005b280  20 74 68 65 20 44 61 74  61 20 54 72 61 6e 73 66  | the Data Transf|
0005b290  65 72 20 50 72 6f 74 6f  63 6f 6c 2e 20 4a 75 73  |er Protocol. Jus|
0005b2a0  74 20 73 65 6e 64 20 61  20 44 61 74 61 53 61 76  |t send a DataSav|
0005b2b0  65 20 6d 65 73 73 61 67  65 2c 20 61 6e 64 20 77  |e message, and w|
0005b2c0  61 69 74 20 66 6f 72 20  52 61 6d 46 65 74 63 68  |ait for RamFetch|
0005b2d0  20 6d 65 73 73 61 67 65  2e 2e 00 00 44 41 54 41  | message....DATA|
0005b2e0  c0 00 00 00 54 61 73 6b  57 69 6e 64 6f 77 5f 4f  |....TaskWindow_O|
0005b2f0  75 74 70 75 74 20 20 28  26 38 30 38 43 31 29 0a  |utput  (&808C1).|
0005b300  20 2b 20 34 09 43 68 69  6c 64 27 73 20 74 61 73  | + 4.Child's tas|
0005b310  6b 20 69 64 0a 20 2b 20  32 30 09 73 69 7a 65 20  |k id. + 20.size |
0005b320  28 6d 61 78 20 32 33 32  20 62 79 74 65 73 29 0a  |(max 232 bytes).|
0005b330  20 2b 20 32 34 09 64 61  74 61 0a 0a 54 68 69 73  | + 24.data..This|
0005b340  20 6d 65 73 73 61 67 65  20 69 73 20 73 65 6e 74  | message is sent|
0005b350  20 77 68 65 6e 20 63 68  69 6c 64 20 68 61 73 20  | when child has |
0005b360  70 72 6f 64 75 63 65 64  20 6f 75 74 70 75 74 20  |produced output |
0005b370  64 61 74 61 2e 20 41 63  6b 6e 6f 77 6c 65 64 67  |data. Acknowledg|
0005b380  65 20 6d 65 73 73 61 67  65 2c 20 61 6e 64 20 64  |e message, and d|
0005b390  69 73 70 6c 61 79 20 64  61 74 61 2e 44 41 54 41  |isplay data.DATA|
0005b3a0  28 01 00 00 54 61 73 6b  57 69 6e 64 6f 77 5f 45  |(...TaskWindow_E|
0005b3b0  67 6f 20 20 28 26 38 30  38 43 32 29 0a 20 2b 20  |go  (&808C2). + |
0005b3c0  34 09 54 61 73 6b 20 49  44 20 6f 66 20 63 68 69  |4.Task ID of chi|
0005b3d0  6c 64 2e 0a 20 2b 20 32  30 09 50 61 72 65 6e 74  |ld.. + 20.Parent|
0005b3e0  27 73 20 74 78 74 2d 68  61 6e 64 6c 65 2e 0a 0a  |'s txt-handle...|
0005b3f0  54 68 69 73 20 6d 65 73  73 61 67 65 20 69 73 20  |This message is |
0005b400  73 65 6e 74 20 74 6f 20  79 6f 75 72 20 74 61 73  |sent to your tas|
0005b410  6b 20 61 66 74 65 72 20  79 6f 75 27 76 65 20 69  |k after you've i|
0005b420  73 73 75 65 64 20 61 20  2a 53 74 61 72 74 54 61  |ssued a *StartTa|
0005b430  73 6b 20 2e 2e 2e 2e 20  2d 74 78 74 20 26 78 78  |sk .... -txt &xx|
0005b440  78 78 78 78 78 78 20 20  63 6f 6d 6d 61 6e 64 2e  |xxxxxx  command.|
0005b450  20 54 68 69 73 20 69 73  20 74 68 65 20 66 69 72  | This is the fir|
0005b460  73 74 20 61 6e 64 20 6c  61 73 74 20 74 69 6d 65  |st and last time|
0005b470  20 74 68 65 20 74 78 74  2d 68 61 6e 64 6c 65 20  | the txt-handle |
0005b480  77 69 6c 6c 20 62 65 20  75 73 65 64 2e 20 46 72  |will be used. Fr|
0005b490  6f 6d 20 6e 6f 77 20 6f  6e 2c 20 74 68 65 20 63  |om now on, the c|
0005b4a0  68 69 6c 64 27 73 20 74  61 73 6b 2d 69 64 20 77  |hild's task-id w|
0005b4b0  69 6c 6c 20 62 65 20 75  73 65 64 20 69 6e 73 74  |ill be used inst|
0005b4c0  65 61 64 2e 44 41 54 41  63 00 00 00 54 61 73 6b  |ead.DATAc...Task|
0005b4d0  57 69 6e 64 6f 77 5f 4d  6f 72 69 6f 20 20 28 26  |Window_Morio  (&|
0005b4e0  38 30 38 43 33 29 0a 4e  6f 20 65 78 74 72 61 20  |808C3).No extra |
0005b4f0  64 61 74 61 0a 0a 54 68  69 73 20 6d 65 73 73 61  |data..This messa|
0005b500  67 65 20 69 73 20 73 65  6e 74 20 74 6f 20 70 61  |ge is sent to pa|
0005b510  72 65 6e 74 20 77 68 65  6e 20 63 68 69 6c 64 20  |rent when child |
0005b520  65 78 69 74 73 2e 20 00  44 41 54 41 61 00 00 00  |exits. .DATAa...|
0005b530  54 61 73 6b 57 69 6e 64  6f 77 5f 4d 6f 72 69 74  |TaskWindow_Morit|
0005b540  65 20 20 28 26 38 30 38  43 34 29 0a 4e 6f 20 65  |e  (&808C4).No e|
0005b550  78 74 72 61 20 64 61 74  61 0a 0a 54 68 69 73 20  |xtra data..This |
0005b560  6d 65 73 73 61 67 65 20  69 73 20 73 65 6e 74 20  |message is sent |
0005b570  62 79 20 70 61 72 65 6e  74 20 74 6f 20 6b 69 6c  |by parent to kil|
0005b580  6c 20 63 68 69 6c 64 2e  20 00 00 00 44 41 54 41  |l child. ...DATA|
0005b590  c9 01 00 00 54 61 73 6b  57 69 6e 64 6f 77 5f 4e  |....TaskWindow_N|
0005b5a0  65 77 54 61 73 6b 20 20  28 26 38 30 38 43 35 29  |ewTask  (&808C5)|
0005b5b0  0a 20 2b 20 32 30 20 43  6f 6d 6d 61 6e 64 20 74  |. + 20 Command t|
0005b5c0  6f 20 65 78 65 63 75 74  65 0a 0a 54 68 69 73 20  |o execute..This |
0005b5d0  6d 65 73 73 61 67 65 20  69 73 20 62 72 6f 61 64  |message is broad|
0005b5e0  63 61 73 74 65 64 20 62  79 20 74 68 65 20 54 61  |casted by the Ta|
0005b5f0  73 6b 77 69 6e 64 6f 77  20 6d 6f 64 75 6c 65 20  |skwindow module |
0005b600  77 68 65 6e 20 61 20 2a  54 61 73 6b 57 69 6e 64  |when a *TaskWind|
0005b610  6f 77 20 63 6f 6d 6d 61  6e 64 20 68 61 76 65 20  |ow command have |
0005b620  62 65 65 6e 20 65 78 65  63 75 74 65 64 20 77 69  |been executed wi|
0005b630  74 68 6f 75 74 20 70 72  6f 70 65 72 20 2d 74 61  |thout proper -ta|
0005b640  73 6b 20 61 6e 64 20 2d  74 78 74 20 66 6c 61 67  |sk and -txt flag|
0005b650  73 2e 20 49 66 20 72 65  63 65 69 76 69 6e 67 20  |s. If receiving |
0005b660  74 61 73 6b 20 63 61 6e  20 73 75 70 70 6f 72 74  |task can support|
0005b670  20 74 61 73 6b 77 69 6e  64 6f 77 73 2c 20 69 74  | taskwindows, it|
0005b680  20 73 68 6f 75 6c 64 20  61 63 6b 6e 6f 77 6c 65  | should acknowle|
0005b690  64 67 65 20 74 68 69 73  20 6d 65 73 73 61 67 65  |dge this message|
0005b6a0  2c 20 61 6e 64 20 57 69  6d 70 5f 53 74 61 72 74  |, and Wimp_Start|
0005b6b0  54 61 73 6b 0a 0a 20 20  20 22 5c 3c 53 74 72 69  |Task..   "\<Stri|
0005b6c0  6e 67 20 61 74 20 2b 32  30 3e 20 78 78 78 78 78  |ng at +20> xxxxx|
0005b6d0  78 78 78 20 79 79 79 79  79 79 79 79 20 22 0a 0a  |xxx yyyyyyyy "..|
0005b6e0  20 20 20 78 78 78 78 78  78 78 78 09 3a 20 59 6f  |   xxxxxxxx.: Yo|
0005b6f0  75 72 20 74 61 73 6b 20  68 61 6e 64 6c 65 20 20  |ur task handle  |
0005b700  20 28 68 65 78 29 0a 20  20 20 79 79 79 79 79 79  | (hex).   yyyyyy|
0005b710  79 79 09 3a 20 55 6e 69  71 75 65 20 74 65 78 74  |yy.: Unique text|
0005b720  68 61 6e 64 6c 65 20 20  28 68 65 78 29 0a 0a 4e  |handle  (hex)..N|
0005b730  6f 74 65 20 74 68 65 20  65 78 74 72 61 20 73 70  |ote the extra sp|
0005b740  61 63 65 20 61 66 74 65  72 20 74 65 78 74 68 61  |ace after textha|
0005b750  6e 64 6c 65 2e 00 00 00  44 41 54 41 64 00 00 00  |ndle....DATAd...|
0005b760  54 61 73 6b 57 69 6e 64  6f 77 5f 53 75 73 70 65  |TaskWindow_Suspe|
0005b770  6e 64 20 20 28 26 38 30  38 43 36 29 0a 4e 6f 20  |nd  (&808C6).No |
0005b780  65 78 74 72 61 20 64 61  74 61 0a 0a 54 68 69 73  |extra data..This|
0005b790  20 6d 65 73 73 61 67 65  20 69 73 20 73 65 6e 74  | message is sent|
0005b7a0  20 62 79 20 70 61 72 65  6e 74 20 74 6f 20 73 75  | by parent to su|
0005b7b0  73 70 65 6e 64 20 63 68  69 6c 64 2e 44 41 54 41  |spend child.DATA|
0005b7c0  79 00 00 00 54 61 73 6b  57 69 6e 64 6f 77 5f 52  |y...TaskWindow_R|
0005b7d0  65 73 75 6d 65 20 20 28  26 38 30 38 43 37 29 0a  |esume  (&808C7).|
0005b7e0  4e 6f 20 65 78 74 72 61  20 64 61 74 61 0a 0a 54  |No extra data..T|
0005b7f0  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 73  |his message is s|
0005b800  65 6e 74 20 62 79 20 70  61 72 65 6e 74 20 74 6f  |ent by parent to|
0005b810  20 72 65 73 75 6d 65 20  61 20 70 72 65 76 69 6f  | resume a previo|
0005b820  75 73 6c 79 20 73 75 73  70 65 6e 64 65 64 20 63  |usly suspended c|
0005b830  68 69 6c 64 2e 00 00 00  44 41 54 41 b9 00 00 00  |hild....DATA....|
0005b840  4d 65 73 73 61 67 65 5f  4f 4c 45 46 69 6c 65 43  |Message_OLEFileC|
0005b850  68 61 6e 67 65 64 20 20  28 26 38 30 45 31 45 29  |hanged  (&80E1E)|
0005b860  0a 45 78 74 72 61 20 64  61 74 61 20 69 6e 20 62  |.Extra data in b|
0005b870  6c 6f 63 6b 20 3a 0a 20  2b 20 32 30 09 4d 65 73  |lock :. + 20.Mes|
0005b880  73 61 67 65 20 74 79 70  65 20 3a 0a 30 0a 20 2b  |sage type :.0. +|
0005b890  20 32 34 09 53 65 73 73  69 6f 6e 20 6e 75 6d 62  | 24.Session numb|
0005b8a0  65 72 0a 20 2b 20 32 38  09 46 75 6c 6c 20 70 61  |er. + 28.Full pa|
0005b8b0  74 68 6e 61 6d 65 20 6f  66 20 64 61 74 61 0a 31  |thname of data.1|
0005b8c0  0a 20 2b 20 32 34 09 53  65 73 73 69 6f 6e 20 6e  |. + 24.Session n|
0005b8d0  75 6d 62 65 72 20 28 69  65 2e 20 70 61 74 68 6e  |umber (ie. pathn|
0005b8e0  61 6d 65 20 69 73 20 75  6e 63 68 61 6e 67 65 64  |ame is unchanged|
0005b8f0  29 00 00 00 44 41 54 41  5a 02 00 00 4d 65 73 73  |)...DATAZ...Mess|
0005b900  61 67 65 5f 4f 4c 45 4f  70 65 6e 53 65 73 73 69  |age_OLEOpenSessi|
0005b910  6f 6e 20 20 28 26 38 30  45 32 31 29 0a 45 78 74  |on  (&80E21).Ext|
0005b920  72 61 20 64 61 74 61 20  69 6e 20 62 6c 6f 63 6b  |ra data in block|
0005b930  20 3a 0a 20 2b 20 32 30  09 55 6e 69 71 75 65 20  | :. + 20.Unique |
0005b940  4e 61 6d 65 20 28 31 36  20 62 79 74 65 2c 20 70  |Name (16 byte, p|
0005b950  61 64 64 65 64 20 77 69  74 68 20 7a 65 72 6f 73  |added with zeros|
0005b960  29 0a 20 2b 20 33 36 09  57 69 6e 64 6f 77 20 68  |). + 36.Window h|
0005b970  61 6e 64 6c 65 0a 20 2b  20 34 30 09 78 0a 20 2b  |andle. + 40.x. +|
0005b980  20 34 34 09 79 0a 20 2b  20 34 38 09 53 65 73 73  | 44.y. + 48.Sess|
0005b990  69 6f 6e 20 74 79 70 65  20 3a 0a 30 20 6f 72 20  |ion type :.0 or |
0005b9a0  31 20 28 65 64 69 74 20  66 69 6c 65 29 0a 20 2b  |1 (edit file). +|
0005b9b0  20 35 32 09 53 65 73 73  69 6f 6e 20 6e 75 6d 62  | 52.Session numb|
0005b9c0  65 72 0a 20 2b 20 35 36  09 46 69 6c 65 74 79 70  |er. + 56.Filetyp|
0005b9d0  65 0a 20 2b 20 36 30 09  46 75 6c 6c 20 70 61 74  |e. + 60.Full pat|
0005b9e0  68 6e 61 6d 65 0a 32 20  28 72 65 2d 65 64 69 74  |hname.2 (re-edit|
0005b9f0  20 66 69 6c 65 29 0a 20  2b 20 35 32 09 53 65 73  | file). + 52.Ses|
0005ba00  73 69 6f 6e 20 6e 75 6d  62 65 72 0a 0a 53 65 73  |sion number..Ses|
0005ba10  73 69 6f 6e 20 74 79 70  65 20 30 20 69 73 20 75  |sion type 0 is u|
0005ba20  73 65 64 20 69 6e 69 74  69 61 6c 6c 79 2f 6e 6f  |sed initially/no|
0005ba30  72 6d 61 6c 6c 79 2e 20  49 66 20 74 68 69 73 20  |rmally. If this |
0005ba40  72 65 74 75 72 6e 73 20  75 6e 61 6e 73 77 65 72  |returns unanswer|
0005ba50  65 64 2c 20 74 68 65 6e  20 63 6c 69 65 6e 74 20  |ed, then client |
0005ba60  73 68 6f 75 6c 64 20 74  72 79 20 74 6f 20 72 75  |should try to ru|
0005ba70  6e 20 74 68 65 20 73 65  72 76 65 72 2c 20 61 6e  |n the server, an|
0005ba80  64 20 74 68 65 6e 20 73  65 6e 64 20 74 68 69 73  |d then send this|
0005ba90  20 6d 65 73 73 61 67 65  20 61 67 61 69 6e 2c 20  | message again, |
0005baa0  62 75 74 20 77 69 74 68  20 74 79 70 65 20 31 2e  |but with type 1.|
0005bab0  20 49 66 20 74 68 69 73  20 61 6c 73 6f 20 72 65  | If this also re|
0005bac0  74 75 72 6e 73 20 74 68  65 20 73 65 72 76 65 72  |turns the server|
0005bad0  20 77 61 73 20 65 69 74  68 65 72 20 6e 6f 74 20  | was either not |
0005bae0  73 74 61 72 74 65 64 20  6f 72 20 69 73 20 6e 6f  |started or is no|
0005baf0  74 20 63 61 70 61 62 6c  65 20 6f 66 20 68 61 6e  |t capable of han|
0005bb00  64 6c 69 6e 67 20 74 68  65 20 72 65 71 75 65 73  |dling the reques|
0005bb10  74 2e 0a 0a 53 65 73 73  69 6f 6e 20 74 79 70 65  |t...Session type|
0005bb20  20 32 20 69 73 20 75 73  65 64 20 77 68 65 6e 20  | 2 is used when |
0005bb30  61 20 6c 69 6e 6b 20 61  6c 72 65 61 64 79 20 69  |a link already i|
0005bb40  73 20 65 73 74 61 62 6c  69 73 68 65 64 2e 00 00  |s established...|
0005bb50  44 41 54 41 64 01 00 00  4d 65 73 73 61 67 65 5f  |DATAd...Message_|
0005bb60  4f 4c 45 4f 70 65 6e 53  65 73 73 69 6f 6e 41 63  |OLEOpenSessionAc|
0005bb70  6b 20 20 28 26 38 30 45  32 32 29 0a 4e 6f 20 65  |k  (&80E22).No e|
0005bb80  78 74 72 61 20 64 61 74  61 2e 0a 0a 54 68 69 73  |xtra data...This|
0005bb90  20 69 73 20 72 65 74 75  72 6e 65 64 20 69 6e 20  | is returned in |
0005bba0  72 65 70 6c 79 20 74 6f  20 61 6e 20 4f 4c 45 4f  |reply to an OLEO|
0005bbb0  70 65 6e 53 65 73 73 69  6f 6e 20 6d 65 73 73 61  |penSession messa|
0005bbc0  67 65 2e 20 53 65 72 76  65 72 20 68 61 73 20 6c  |ge. Server has l|
0005bbd0  6f 61 64 65 64 20 66 69  6c 65 2c 20 61 6e 64 20  |oaded file, and |
0005bbe0  68 61 73 20 65 73 74 61  62 6c 69 73 68 65 64 20  |has established |
0005bbf0  74 68 65 20 6c 69 6e 6b  2e 0a 0a 57 68 61 74 20  |the link...What |
0005bc00  73 68 6f 75 6c 64 20 68  61 70 70 65 6e 20 69 66  |should happen if|
0005bc10  20 73 65 72 76 65 72 20  67 65 74 73 20 61 6e 20  | server gets an |
0005bc20  65 72 72 6f 72 20 77 68  69 6c 65 20 72 65 61 64  |error while read|
0005bc30  69 6e 67 20 66 69 6c 65  3f 20 28 50 72 6f 74 65  |ing file? (Prote|
0005bc40  63 74 69 6f 6e 20 6f 72  20 6e 6f 74 20 65 6e 6f  |ction or not eno|
0005bc50  75 67 68 20 6d 65 6d 6f  72 79 29 20 49 74 20 73  |ugh memory) It s|
0005bc60  68 6f 75 6c 64 20 70 72  6f 62 61 62 6c 79 20 73  |hould probably s|
0005bc70  65 6e 64 20 74 68 69 73  20 6d 65 73 73 61 67 65  |end this message|
0005bc80  20 69 6d 6d 65 64 69 61  74 65 6c 79 20 66 6f 6c  | immediately fol|
0005bc90  6c 6f 77 65 64 20 62 79  20 61 6e 20 4f 4c 45 43  |lowed by an OLEC|
0005bca0  6c 6f 73 65 53 65 73 73  69 6f 6e 20 6d 65 73 73  |loseSession mess|
0005bcb0  61 67 65 2e 44 41 54 41  fa 00 00 00 4d 65 73 73  |age.DATA....Mess|
0005bcc0  61 67 65 5f 4f 4c 45 43  6c 6f 73 65 53 65 73 73  |age_OLECloseSess|
0005bcd0  69 6f 6e 20 20 28 26 38  30 45 32 33 29 0a 45 78  |ion  (&80E23).Ex|
0005bce0  74 72 61 20 64 61 74 61  20 69 6e 20 62 6c 6f 63  |tra data in bloc|
0005bcf0  6b 20 3a 0a 20 2b 20 32  30 20 4d 65 73 73 61 67  |k :. + 20 Messag|
0005bd00  65 20 74 79 70 65 3a 0a  20 2b 20 32 34 20 53 65  |e type:. + 24 Se|
0005bd10  73 73 69 6f 6e 20 6e 75  6d 62 65 72 20 28 2d 31  |ssion number (-1|
0005bd20  20 66 6f 72 20 61 6c 6c  29 0a 0a 54 68 69 73 20  | for all)..This |
0005bd30  6d 65 73 73 61 67 65 20  69 6e 66 6f 72 6d 73 20  |message informs |
0005bd40  6f 6e 65 20 6f 72 20 61  6c 6c 20 63 6c 69 65 6e  |one or all clien|
0005bd50  74 73 20 74 68 61 74 20  6f 6e 65 20 6f 72 20 61  |ts that one or a|
0005bd60  6c 6c 20 6f 66 20 74 68  65 20 73 65 72 76 65 72  |ll of the server|
0005bd70  73 20 73 65 73 73 69 6f  6e 73 20 61 72 65 20 74  |s sessions are t|
0005bd80  65 72 6d 69 6e 61 74 65  64 20 28 54 61 73 6b 20  |erminated (Task |
0005bd90  71 75 69 74 20 6f 72 20  63 6c 69 63 6b 20 6f 6e  |quit or click on|
0005bda0  20 63 6c 6f 73 65 20 77  69 6e 64 6f 77 29 00 00  | close window)..|
0005bdb0  44 41 54 41 8a 01 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
0005bdc0  50 61 6c 65 74 74 65 43  68 61 6e 67 65 20 28 39  |PaletteChange (9|
0005bdd0  29 0a 54 68 69 73 20 6d  65 73 73 61 67 65 20 69  |).This message i|
0005bde0  73 20 62 72 6f 61 64 63  61 73 74 65 64 20 62 79  |s broadcasted by|
0005bdf0  20 74 68 65 20 70 61 6c  65 74 74 65 20 75 74 69  | the palette uti|
0005be00  6c 69 74 79 20 77 68 65  6e 20 74 68 65 20 52 47  |lity when the RG|
0005be10  42 20 76 61 6c 75 65 20  66 6f 72 20 6f 6e 65 20  |B value for one |
0005be20  6f 72 20 6d 6f 72 65 20  70 68 79 73 69 63 61 6c  |or more physical|
0005be30  20 63 6f 6c 6f 75 72 73  20 68 61 76 65 20 63 68  | colours have ch|
0005be40  61 6e 67 65 64 2e 0a 0a  54 68 61 74 20 69 73 20  |anged...That is |
0005be50  77 68 61 74 20 68 61 70  70 65 6e 73 20 69 6e 20  |what happens in |
0005be60  6e 6f 6e 2d 32 35 36 20  63 6f 6c 6f 75 72 20 6d  |non-256 colour m|
0005be70  6f 64 65 73 2e 20 49 6e  20 32 35 36 20 63 6f 6c  |odes. In 256 col|
0005be80  6f 75 72 20 6d 6f 64 65  73 2c 20 69 74 20 69 73  |our modes, it is|
0005be90  20 6e 6f 74 20 74 68 65  20 70 68 79 73 69 63 61  | not the physica|
0005bea0  6c 20 63 6f 6c 6f 75 72  20 77 68 69 63 68 20 63  |l colour which c|
0005beb0  68 61 6e 67 65 73 2c 20  62 75 74 20 6f 6e 6c 79  |hanges, but only|
0005bec0  20 74 68 65 20 6d 61 70  70 69 6e 67 20 66 72 6f  | the mapping fro|
0005bed0  6d 20 6c 6f 67 69 63 61  6c 20 74 6f 20 70 68 79  |m logical to phy|
0005bee0  73 69 63 61 6c 20 63 6f  6c 6f 75 72 2e 20 49 6e  |sical colour. In|
0005bef0  20 74 68 61 74 20 63 61  73 65 20 74 68 65 20 70  | that case the p|
0005bf00  61 6c 65 74 74 65 20 75  74 69 6c 69 74 79 20 69  |alette utility i|
0005bf10  74 73 65 6c 66 20 66 6f  72 63 65 73 20 61 20 72  |tself forces a r|
0005bf20  65 64 72 61 77 20 6f 66  20 74 68 65 20 77 68 6f  |edraw of the who|
0005bf30  6c 65 20 73 63 72 65 65  6e 2e 00 00 44 41 54 41  |le screen...DATA|
0005bf40  64 01 00 00 4d 65 73 73  61 67 65 5f 53 61 76 65  |d...Message_Save|
0005bf50  44 65 73 6b 74 6f 70 20  28 31 30 29 0a 2b 31 36  |Desktop (10).+16|
0005bf60  09 4d 65 73 73 61 67 65  5f 53 61 76 65 44 65 73  |.Message_SaveDes|
0005bf70  6b 74 6f 70 20 28 31 30  29 0a 2b 32 30 09 28 77  |ktop (10).+20.(w|
0005bf80  6f 72 64 29 20 66 69 6c  65 20 68 61 6e 64 6c 65  |ord) file handle|
0005bf90  20 6f 66 20 64 65 73 6b  74 6f 70 20 66 69 6c 65  | of desktop file|
0005bfa0  20 62 65 69 6e 67 20 77  72 69 74 74 65 6e 2e 0a  | being written..|
0005bfb0  2b 32 34 09 66 6c 61 67  20 77 6f 72 64 3a 20 61  |+24.flag word: a|
0005bfc0  6c 6c 20 62 69 74 73 20  75 6e 75 73 65 64 20 62  |ll bits unused b|
0005bfd0  75 74 20 72 65 73 65 72  76 65 64 20 28 69 65 2e  |ut reserved (ie.|
0005bfe0  20 73 65 74 20 74 6f 20  30 29 0a 0a 54 68 69 73  | set to 0)..This|
0005bff0  20 6d 65 73 73 61 67 65  20 69 73 20 62 72 6f 61  | message is broa|
0005c000  64 63 61 73 74 65 64 20  62 79 20 74 68 65 20 74  |dcasted by the t|
0005c010  61 73 6b 20 6d 61 6e 61  67 65 72 20 77 68 65 6e  |ask manager when|
0005c020  20 74 68 65 20 75 73 65  72 20 68 61 73 20 73 65  | the user has se|
0005c030  6c 65 63 74 65 64 20 22  53 61 76 65 20 62 6f 6f  |lected "Save boo|
0005c040  74 20 66 69 6c 65 22 2c  20 6f 72 20 6f 6e 20 65  |t file", or on e|
0005c050  78 69 74 20 66 72 6f 6d  20 64 65 73 6b 74 6f 70  |xit from desktop|
0005c060  20 69 66 20 74 68 65 20  73 79 73 74 65 6d 20 76  | if the system v|
0005c070  61 72 69 61 62 6c 65 20  53 61 76 65 44 65 73 6b  |ariable SaveDesk|
0005c080  24 46 69 6c 65 20 68 61  73 20 61 20 76 61 6c 75  |$File has a valu|
0005c090  65 20 28 61 20 70 61 74  68 6e 61 6d 65 2e 2e 29  |e (a pathname..)|
0005c0a0  44 41 54 41 7f 04 00 00  45 78 74 65 72 6e 61 6c  |DATA....External|
0005c0b0  20 45 64 69 74 20 50 72  6f 74 6f 63 6f 6c 20 20  | Edit Protocol  |
0005c0c0  20 20 0a 23 41 6c 69 67  6e 20 43 65 6e 74 72 65  |  .#Align Centre|
0005c0d0  0a 7b 2a 7d 44 65 73 69  67 6e 65 64 20 62 79 20  |.{*}Designed by |
0005c0e0  3c 4a 61 73 6f 6e 20 57  69 6c 6c 69 61 6d 73 3d  |<Jason Williams=|
0005c0f0  3e 57 69 6d 70 5f 55 4d  45 78 74 45 64 69 74 4d  |>Wimp_UMExtEditM|
0005c100  6f 64 65 72 61 74 6f 72  3e 7b 2a 7d 0a 56 65 72  |oderator>{*}.Ver|
0005c110  73 69 6f 6e 20 31 2e 30  32 53 2c 20 33 30 20 4d  |sion 1.02S, 30 M|
0005c120  61 72 20 31 39 39 36 20  28 66 72 6f 6d 20 31 2e  |ar 1996 (from 1.|
0005c130  30 32 2c 20 31 20 4a 61  6e 20 31 39 39 33 29 0a  |02, 1 Jan 1993).|
0005c140  23 41 6c 69 67 6e 0a 0a  54 68 65 20 70 72 6f 74  |#Align..The prot|
0005c150  6f 63 6f 6c 20 63 6f 6e  73 69 73 74 73 20 6f 66  |ocol consists of|
0005c160  20 74 68 65 73 65 20 66  69 76 65 20 6d 65 73 73  | these five mess|
0005c170  61 67 65 73 20 3a 0a 20  20 20 20 0a 20 20 20 3c  |ages :.    .   <|
0005c180  4d 65 73 73 61 67 65 5f  45 64 69 74 52 71 3d 3e  |Message_EditRq=>|
0005c190  77 69 6d 70 5f 75 6d 34  35 64 38 30 3e 0a 20 20  |wimp_um45d80>.  |
0005c1a0  20 3c 4d 65 73 73 61 67  65 5f 45 64 69 74 41 63  | <Message_EditAc|
0005c1b0  6b 3d 3e 77 69 6d 70 5f  75 6d 34 35 64 38 31 3e  |k=>wimp_um45d81>|
0005c1c0  0a 20 20 20 3c 4d 65 73  73 61 67 65 5f 45 64 69  |.   <Message_Edi|
0005c1d0  74 52 65 74 75 72 6e 3d  3e 77 69 6d 70 5f 75 6d  |tReturn=>wimp_um|
0005c1e0  34 35 64 38 32 3e 0a 20  20 20 3c 4d 65 73 73 61  |45d82>.   <Messa|
0005c1f0  67 65 5f 45 64 69 74 41  62 6f 72 74 3d 3e 77 69  |ge_EditAbort=>wi|
0005c200  6d 70 5f 75 6d 34 35 64  38 33 3e 0a 20 20 20 3c  |mp_um45d83>.   <|
0005c210  4d 65 73 73 61 67 65 5f  45 64 69 74 44 61 74 61  |Message_EditData|
0005c220  53 61 76 65 3d 3e 77 69  6d 70 5f 75 6d 34 35 64  |Save=>wimp_um45d|
0005c230  38 34 3e 0a 20 20 20 3c  4d 65 73 73 61 67 65 5f  |84>.   <Message_|
0005c240  45 64 69 74 43 75 72 73  6f 72 3d 3e 77 69 6d 70  |EditCursor=>wimp|
0005c250  5f 75 6d 34 35 64 38 35  3e 0a 0a 54 68 65 20 70  |_um45d85>..The p|
0005c260  75 72 70 6f 73 65 20 6f  66 20 74 68 65 20 70 72  |urpose of the pr|
0005c270  6f 74 6f 63 6f 6c 20 69  73 20 74 6f 20 61 6c 6c  |otocol is to all|
0005c280  6f 77 20 6f 6e 65 20 74  61 73 6b 20 28 74 68 65  |ow one task (the|
0005c290  20 22 3c 43 6c 69 65 6e  74 73 3d 3e 57 69 6d 70  | "<Clients=>Wimp|
0005c2a0  5f 55 4d 45 78 74 45 64  69 74 43 6c 69 65 6e 74  |_UMExtEditClient|
0005c2b0  3e 22 29 20 74 6f 20 73  65 6e 64 20 69 74 73 20  |>") to send its |
0005c2c0  64 61 74 61 20 74 6f 20  61 6e 6f 74 68 65 72 20  |data to another |
0005c2d0  74 61 73 6b 20 28 74 68  65 20 22 3c 45 64 69 74  |task (the "<Edit|
0005c2e0  6f 72 3d 3e 57 69 6d 70  5f 55 4d 45 78 74 45 64  |or=>Wimp_UMExtEd|
0005c2f0  69 74 45 64 69 74 6f 72  3e 22 29 20 66 6f 72 20  |itEditor>") for |
0005c300  65 64 69 74 69 6e 67 2c  20 77 69 74 68 6f 75 74  |editing, without|
0005c310  20 66 6f 72 63 69 6e 67  20 74 68 65 20 75 73 65  | forcing the use|
0005c320  72 20 74 6f 20 22 64 72  61 67 20 74 68 69 6e 67  |r to "drag thing|
0005c330  73 20 61 6c 6c 20 6f 76  65 72 20 74 68 65 20 70  |s all over the p|
0005c340  6c 61 63 65 2e 2e 22 0a  0a 41 70 70 6c 69 63 61  |lace.."..Applica|
0005c350  74 69 6f 6e 73 20 73 75  70 70 6f 72 74 69 6e 67  |tions supporting|
0005c360  20 74 68 65 20 70 72 6f  74 6f 63 6f 6c 20 69 6e  | the protocol in|
0005c370  63 6c 75 64 65 20 3a 0a  43 6c 69 65 6e 74 73 20  |clude :.Clients |
0005c380  3a 0a 23 49 6e 64 65 6e  74 20 32 0a 23 54 61 62  |:.#Indent 2.#Tab|
0005c390  6c 65 20 4c 69 6e 65 73  20 32 0a 21 4f 4c 52 65  |le Lines 2.!OLRe|
0005c3a0  61 64 0a 21 4a 46 41 64  64 72 65 73 73 0a 21 4e  |ad.!JFAddress.!N|
0005c3b0  6f 74 65 49 74 0a 21 46  69 64 6f 4d 61 69 6c 20  |oteIt.!FidoMail |
0005c3c0  28 62 61 72 65 6c 79 29  0a 3c 21 4d 61 6b 65 41  |(barely).<!MakeA|
0005c3d0  52 50 43 3d 3e 46 69 6c  65 74 79 70 65 73 3a 5f  |RPC=>Filetypes:_|
0005c3e0  21 4d 61 6b 65 41 52 50  43 3e 0a 23 45 6e 64 54  |!MakeARPC>.#EndT|
0005c3f0  61 62 6c 65 0a 23 49 6e  64 65 6e 74 0a 0a 45 64  |able.#Indent..Ed|
0005c400  69 74 6f 72 73 20 3a 0a  23 49 6e 64 65 6e 74 20  |itors :.#Indent |
0005c410  32 0a 23 54 61 62 6c 65  20 4c 69 6e 65 73 20 32  |2.#Table Lines 2|
0005c420  0a 3c 21 53 74 72 6f 6e  67 45 44 3d 3e 46 69 6c  |.<!StrongED=>Fil|
0005c430  65 74 79 70 65 73 3a 5f  21 53 74 72 6f 6e 67 45  |etypes:_!StrongE|
0005c440  64 3e 0a 3c 21 5a 61 70  20 31 2e 32 30 3d 3e 46  |d>.<!Zap 1.20=>F|
0005c450  69 6c 65 74 79 70 65 73  3a 5f 21 5a 61 70 3e 0a  |iletypes:_!Zap>.|
0005c460  3c 21 44 4a 46 2d 4a 52  46 3d 3e 46 69 6c 65 74  |<!DJF-JRF=>Filet|
0005c470  79 70 65 73 3a 5f 21 44  4a 46 2d 4a 52 46 3e 0a  |ypes:_!DJF-JRF>.|
0005c480  3c 21 46 6f 72 6d 45 64  45 78 74 3d 3e 46 69 6c  |<!FormEdExt=>Fil|
0005c490  65 74 79 70 65 73 3a 5f  21 46 6f 72 6d 45 64 45  |etypes:_!FormEdE|
0005c4a0  78 74 3e 0a 23 45 6e 64  54 61 62 6c 65 0a 23 49  |xt>.#EndTable.#I|
0005c4b0  6e 64 65 6e 74 0a 0a 48  6f 77 20 75 73 65 66 75  |ndent..How usefu|
0005c4c0  6c 20 74 68 69 73 20 70  72 6f 74 6f 63 6f 6c 20  |l this protocol |
0005c4d0  77 69 6c 6c 20 62 65 2c  20 64 65 70 65 6e 64 73  |will be, depends|
0005c4e0  20 6f 6e 20 68 6f 77 20  6d 61 6e 79 20 74 61 73  | on how many tas|
0005c4f0  6b 73 20 73 75 70 70 6f  72 74 20 69 74 2c 20 62  |ks support it, b|
0005c500  6f 74 68 20 61 73 20 22  43 6c 69 65 6e 74 22 20  |oth as "Client" |
0005c510  61 6e 64 20 22 45 64 69  74 6f 72 73 22 2e 0a 00  |and "Editors"...|
0005c520  44 41 54 41 b3 04 00 00  4e 65 77 73 42 61 73 65  |DATA....NewsBase|
0005c530  20 6d 65 73 73 61 67 65  20 70 72 6f 74 6f 63 6f  | message protoco|
0005c540  6c 0a 54 68 65 20 6d 65  73 73 61 67 65 20 6e 75  |l.The message nu|
0005c550  6d 62 65 72 73 20 75 73  65 64 20 61 72 65 20 70  |mbers used are p|
0005c560  72 6f 76 69 73 69 6f 6e  61 6c 2e 20 41 6e 20 61  |rovisional. An a|
0005c570  70 70 6c 69 63 61 74 69  6f 6e 20 66 6f 72 20 6f  |pplication for o|
0005c580  66 66 69 63 69 61 6c 20  6d 65 73 73 61 67 65 20  |fficial message |
0005c590  6e 75 6d 62 65 72 73 20  68 61 73 20 62 65 65 6e  |numbers has been|
0005c5a0  20 6d 61 64 65 20 74 6f  20 41 63 6f 72 6e 2e 20  | made to Acorn. |
0005c5b0  43 6c 69 65 6e 74 20 70  72 6f 67 72 61 6d 73 20  |Client programs |
0005c5c0  73 68 6f 75 6c 64 20 62  65 20 77 72 69 74 74 65  |should be writte|
0005c5d0  6e 20 77 69 74 68 20 74  68 69 73 20 69 6e 20 6d  |n with this in m|
0005c5e0  69 6e 64 2c 20 73 6f 20  74 68 65 73 65 20 63 61  |ind, so these ca|
0005c5f0  6e 20 62 65 20 65 61 73  69 6c 79 20 63 68 61 6e  |n be easily chan|
0005c600  67 65 64 21 0a 0a 54 68  72 65 65 20 6d 65 73 73  |ged!..Three mess|
0005c610  61 67 65 73 20 61 72 65  20 64 65 66 69 6e 65 64  |ages are defined|
0005c620  3a 0a 23 49 6e 64 65 6e  74 20 32 0a 3c 4e 65 77  |:.#Indent 2.<New|
0005c630  73 42 61 73 65 5f 43 6f  6d 6d 61 6e 64 3d 3e 77  |sBase_Command=>w|
0005c640  69 6d 70 5f 75 6d 4e 42  5f 43 6f 6d 6d 61 6e 64  |imp_umNB_Command|
0005c650  3e 09 75 73 65 64 20 62  79 20 61 20 63 6c 69 65  |>.used by a clie|
0005c660  6e 74 20 74 6f 20 69 73  73 75 65 20 63 6f 6d 6d  |nt to issue comm|
0005c670  61 6e 64 73 20 6f 72 20  72 65 71 75 65 73 74 73  |ands or requests|
0005c680  20 74 6f 20 4e 65 77 73  42 61 73 65 0a 3c 4e 65  | to NewsBase.<Ne|
0005c690  77 73 42 61 73 65 5f 52  65 70 6c 79 3d 3e 77 69  |wsBase_Reply=>wi|
0005c6a0  6d 70 5f 75 6d 4e 42 5f  52 65 70 6c 79 3e 09 75  |mp_umNB_Reply>.u|
0005c6b0  73 65 64 20 62 79 20 6e  65 77 73 62 61 73 65 20  |sed by newsbase |
0005c6c0  74 6f 20 72 65 73 70 6f  6e 64 0a 3c 4e 65 77 73  |to respond.<News|
0005c6d0  42 61 73 65 5f 55 70 64  61 74 65 3d 3e 77 69 6d  |Base_Update=>wim|
0005c6e0  70 5f 75 6d 4e 42 5f 55  70 64 61 74 65 3e 09 62  |p_umNB_Update>.b|
0005c6f0  72 6f 61 64 63 61 73 74  20 62 79 20 6e 65 77 73  |roadcast by news|
0005c700  62 61 73 65 20 74 6f 20  69 6e 66 6f 72 6d 20 63  |base to inform c|
0005c710  6c 69 65 6e 74 73 20 6f  66 20 63 68 61 6e 67 65  |lients of change|
0005c720  73 20 74 6f 20 74 68 65  20 6e 65 77 73 20 64 61  |s to the news da|
0005c730  74 61 62 61 73 65 0a 23  49 6e 64 65 6e 74 20 30  |tabase.#Indent 0|
0005c740  0a 0a 54 68 65 20 63 6f  6d 6d 61 6e 64 73 20 69  |..The commands i|
0005c750  6d 70 6c 65 6d 65 6e 74  65 64 20 61 72 65 20 62  |mplemented are b|
0005c760  61 73 65 64 20 76 65 72  79 20 6c 6f 6f 73 65 6c  |ased very loosel|
0005c770  79 20 6f 6e 20 74 68 65  20 4e 4e 54 50 20 63 6f  |y on the NNTP co|
0005c780  6d 6d 61 6e 64 73 20 64  6f 63 75 6d 65 6e 74 65  |mmands documente|
0005c790  64 20 69 6e 20 52 46 43  39 37 37 20 28 6d 6f 72  |d in RFC977 (mor|
0005c7a0  65 20 69 6e 20 73 70 69  72 69 74 20 74 68 61 6e  |e in spirit than|
0005c7b0  20 69 6e 20 66 6f 72 6d  29 2e 20 57 68 69 6c 65  | in form). While|
0005c7c0  20 74 68 65 20 4e 65 77  73 42 61 73 65 20 63 6f  | the NewsBase co|
0005c7d0  6d 6d 61 6e 64 73 20 61  72 65 20 70 72 69 6d 61  |mmands are prima|
0005c7e0  72 69 6c 79 20 64 65 73  69 67 6e 65 64 20 74 6f  |rily designed to|
0005c7f0  20 72 65 74 72 69 65 76  65 20 6e 65 77 73 20 66  | retrieve news f|
0005c800  72 6f 6d 20 61 20 6c 6f  63 61 6c 6c 79 2d 68 65  |rom a locally-he|
0005c810  6c 64 20 6e 65 77 73 20  64 61 74 61 62 61 73 65  |ld news database|
0005c820  20 6d 61 6e 61 67 65 64  20 62 79 20 4e 65 77 73  | managed by News|
0005c830  42 61 73 65 2c 20 74 68  65 69 72 20 6e 61 74 75  |Base, their natu|
0005c840  72 65 20 73 68 6f 75 6c  64 20 6d 61 6b 65 20 69  |re should make i|
0005c850  74 20 70 6f 73 73 69 62  6c 65 20 66 6f 72 20 66  |t possible for f|
0005c860  75 74 75 72 65 20 76 65  72 73 69 6f 6e 73 20 6f  |uture versions o|
0005c870  66 20 6e 65 77 73 62 61  73 65 20 74 6f 20 61 63  |f newsbase to ac|
0005c880  74 20 61 73 20 61 20 6d  65 64 69 61 74 6f 72 20  |t as a mediator |
0005c890  62 65 74 77 65 65 6e 20  61 20 63 6c 69 65 6e 74  |between a client|
0005c8a0  20 72 65 61 64 65 72 20  61 6e 64 20 61 20 64 69  | reader and a di|
0005c8b0  72 65 63 74 6c 79 2d 63  6f 6e 6e 65 63 74 65 64  |rectly-connected|
0005c8c0  20 6e 6e 74 70 20 73 65  72 76 65 72 20 28 74 68  | nntp server (th|
0005c8d0  72 6f 75 67 68 20 65 74  68 65 72 6e 65 74 20 61  |rough ethernet a|
0005c8e0  6e 64 20 41 63 6f 72 6e  20 54 43 50 2f 49 50 2c  |nd Acorn TCP/IP,|
0005c8f0  20 6f 72 20 77 68 61 74  65 76 65 72 29 20 2d 20  | or whatever) - |
0005c900  69 65 2c 20 6f 6e 65 20  6f 66 20 74 68 65 20 70  |ie, one of the p|
0005c910  75 72 70 6f 73 65 73 20  6f 66 20 74 68 65 20 63  |urposes of the c|
0005c920  6f 6d 6d 61 6e 64 20 73  65 74 20 69 73 20 74 6f  |ommand set is to|
0005c930  20 61 63 74 20 61 73 20  61 6e 20 61 62 73 74 72  | act as an abstr|
0005c940  61 63 74 69 6f 6e 20 6c  61 79 65 72 20 62 65 74  |action layer bet|
0005c950  77 65 65 6e 20 74 68 65  20 72 65 61 64 65 72 20  |ween the reader |
0005c960  70 72 6f 67 72 61 6d 20  61 6e 64 20 74 68 65 20  |program and the |
0005c970  73 6f 75 72 63 65 20 6f  66 20 6e 65 77 73 2e 0a  |source of news..|
0005c980  0a 28 54 68 69 73 20 64  61 74 61 20 65 78 74 72  |.(This data extr|
0005c990  61 63 74 65 64 20 66 72  6f 6d 20 74 68 65 20 44  |acted from the D|
0005c9a0  6f 63 73 2e 4d 65 73 73  61 67 65 73 20 66 69 6c  |ocs.Messages fil|
0005c9b0  65 20 69 6e 20 21 4e 65  77 73 42 61 73 65 20 62  |e in !NewsBase b|
0005c9c0  79 20 4a 75 73 74 69 6e  20 46 6c 65 74 63 68 65  |y Justin Fletche|
0005c9d0  72 29 0a 00 44 41 54 41  29 01 00 00 52 4f 33 20  |r)..DATA)...RO3 |
0005c9e0  21 48 65 6c 70 20 63 6f  64 65 73 0a 43 6f 64 65  |!Help codes.Code|
0005c9f0  09 4d 65 73 73 61 67 65  0a 23 4c 69 6e 65 0a 5c  |.Message.#Line.\|
0005ca00  5c 52 09 22 4d 6f 76 65  20 74 68 65 20 70 6f 69  |\R."Move the poi|
0005ca10  6e 74 65 72 20 72 69 67  68 74 20 74 6f 20 22 0a  |nter right to ".|
0005ca20  5c 5c 47 09 22 54 68 69  73 20 6f 70 74 69 6f 6e  |\\G."This option|
0005ca30  20 69 73 20 67 72 65 79  65 64 20 6f 75 74 20 62  | is greyed out b|
0005ca40  65 63 61 75 73 65 20 22  0a 5c 5c 53 09 22 43 6c  |ecause ".\\S."Cl|
0005ca50  69 63 6b 20 53 45 4c 45  43 54 20 74 6f 20 22 0a  |ick SELECT to ".|
0005ca60  5c 5c 41 09 22 43 6c 69  63 6b 20 41 44 4a 55 53  |\\A."Click ADJUS|
0005ca70  54 20 74 6f 20 22 0a 5c  5c 54 09 22 54 68 69 73  |T to ".\\T."This|
0005ca80  20 69 73 20 74 68 65 20  22 0a 5c 5c 57 09 22 54  | is the ".\\W."T|
0005ca90  68 69 73 20 77 69 6e 64  6f 77 20 69 73 20 22 0a  |his window is ".|
0005caa0  5c 5c 44 09 22 44 72 61  67 20 53 45 4c 45 43 54  |\\D."Drag SELECT|
0005cab0  20 74 6f 20 22 0a 5c 5c  64 09 22 44 72 61 67 20  | to ".\\d."Drag |
0005cac0  41 44 4a 55 53 54 20 74  6f 20 22 0a 5c 5c 77 09  |ADJUST to ".\\w.|
0005cad0  22 77 69 6e 64 6f 77 22  0a 5c 5c 73 09 22 53 45  |"window".\\s."SE|
0005cae0  4c 45 43 54 22 0a 5c 5c  61 09 22 41 44 4a 55 53  |LECT".\\a."ADJUS|
0005caf0  54 22 0a 7c 4d 09 72 65  74 75 72 6e 0a 00 00 00  |T".|M.return....|
0005cb00  44 49 52 24 7c 07 00 00  7c 07 00 00 7c d2 05 00  |DIR$|...|...|...|
0005cb10  46 fd ff ff e0 4b 95 3f  90 01 00 00 13 00 00 00  |F....K.?........|
0005cb20  00 00 00 00 43 6f 6d 6d  61 6e 64 00 0c d4 05 00  |....Command.....|
0005cb30  46 fd ff ff f7 0c 9c 3f  8a 06 00 00 13 00 00 00  |F......?........|
0005cb40  00 00 00 00 43 6f 6d 43  6f 64 65 73 00 00 00 00  |....ComCodes....|
0005cb50  98 da 05 00 46 fd ff ff  7b 89 96 3f 56 01 00 00  |....F...{..?V...|
0005cb60  13 00 00 00 00 00 00 00  52 65 70 6c 79 00 00 00  |........Reply...|
0005cb70  f0 db 05 00 46 fd ff ff  6d ae 0e fb c9 06 00 00  |....F...m.......|
0005cb80  13 00 00 00 00 00 00 00  72 65 70 63 6f 64 65 73  |........repcodes|
0005cb90  00 00 00 00 bc e2 05 00  46 fd ff ff 75 0e 91 3f  |........F...u..?|
0005cba0  ba 00 00 00 13 00 00 00  00 00 00 00 55 70 64 61  |............Upda|
0005cbb0  74 65 00 00 78 e3 05 00  46 fd ff ff f3 98 99 3f  |te..x...F......?|
0005cbc0  51 01 00 00 13 00 00 00  00 00 00 00 55 70 64 54  |Q...........UpdT|
0005cbd0  79 70 65 73 00 00 00 00  cc e4 05 00 46 fd ff ff  |ypes........F...|
0005cbe0  20 8e 91 3f 4e 00 00 00  13 00 00 00 00 00 00 00  | ..?N...........|
0005cbf0  55 70 64 30 2d 31 00 00  1c e5 05 00 46 fd ff ff  |Upd0-1......F...|
0005cc00  08 a7 91 3f 77 00 00 00  13 00 00 00 00 00 00 00  |...?w...........|
0005cc10  55 70 64 32 00 00 00 00  94 e5 05 00 46 fd ff ff  |Upd2........F...|
0005cc20  08 af 91 3f 48 00 00 00  13 00 00 00 00 00 00 00  |...?H...........|
0005cc30  55 70 64 33 00 00 00 00  dc e5 05 00 46 fd ff ff  |Upd3........F...|
0005cc40  da bb 91 3f 58 00 00 00  13 00 00 00 00 00 00 00  |...?X...........|
0005cc50  55 70 64 34 2d 35 00 00  34 e6 05 00 46 fd ff ff  |Upd4-5..4...F...|
0005cc60  c1 d8 91 3f 2a 01 00 00  13 00 00 00 00 00 00 00  |...?*...........|
0005cc70  55 70 64 31 31 00 00 00  60 e7 05 00 46 fd ff ff  |Upd11...`...F...|
0005cc80  31 dc 91 3f 2d 00 00 00  13 00 00 00 00 00 00 00  |1..?-...........|
0005cc90  55 70 64 31 30 00 00 00  90 e7 05 00 46 fd ff ff  |Upd10.......F...|
0005cca0  1d ac 92 3f e3 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005ccb0  43 6f 6d 30 00 00 00 00  74 e8 05 00 46 fd ff ff  |Com0....t...F...|
0005ccc0  34 c0 92 3f 7f 00 00 00  13 00 00 00 00 00 00 00  |4..?............|
0005ccd0  43 6f 6d 31 30 00 00 00  f4 e8 05 00 46 fd ff ff  |Com10.......F...|
0005cce0  63 ec 92 3f c7 01 00 00  13 00 00 00 00 00 00 00  |c..?............|
0005ccf0  43 6f 6d 32 30 00 00 00  bc ea 05 00 46 fd ff ff  |Com20.......F...|
0005cd00  ae 1e 93 3f 6c 00 00 00  13 00 00 00 00 00 00 00  |...?l...........|
0005cd10  43 6f 6d 33 30 00 00 00  28 eb 05 00 46 fd ff ff  |Com30...(...F...|
0005cd20  83 47 93 3f 27 01 00 00  13 00 00 00 00 00 00 00  |.G.?'...........|
0005cd30  43 6f 6d 33 30 4e 00 00  50 ec 05 00 46 fd ff ff  |Com30N..P...F...|
0005cd40  75 64 93 3f a0 00 00 00  13 00 00 00 00 00 00 00  |ud.?............|
0005cd50  43 6f 6d 34 30 00 00 00  f0 ec 05 00 46 fd ff ff  |Com40.......F...|
0005cd60  c5 82 93 3f c0 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005cd70  43 6f 6d 31 30 30 00 00  b0 ed 05 00 46 fd ff ff  |Com100......F...|
0005cd80  fb a6 93 3f db 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005cd90  43 6f 6d 31 31 30 00 00  8c ee 05 00 46 fd ff ff  |Com110......F...|
0005cda0  9d c3 93 3f e6 01 00 00  13 00 00 00 00 00 00 00  |...?............|
0005cdb0  43 6f 6d 31 32 30 00 00  74 f0 05 00 46 fd ff ff  |Com120..t...F...|
0005cdc0  e1 d0 93 3f b3 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005cdd0  43 6f 6d 31 33 30 00 00  28 f1 05 00 46 fd ff ff  |Com130..(...F...|
0005cde0  86 eb 93 3f 1e 01 00 00  13 00 00 00 00 00 00 00  |...?............|
0005cdf0  43 6f 6d 31 34 30 00 00  48 f2 05 00 46 fd ff ff  |Com140..H...F...|
0005ce00  a8 0a 94 3f f6 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005ce10  43 6f 6d 32 30 30 00 00  40 f3 05 00 46 fd ff ff  |Com200..@...F...|
0005ce20  99 28 94 3f 6f 01 00 00  13 00 00 00 00 00 00 00  |.(.?o...........|
0005ce30  43 6f 6d 32 31 30 00 00  b0 f4 05 00 46 fd ff ff  |Com210......F...|
0005ce40  2d df ed a9 0b 01 00 00  13 00 00 00 00 00 00 00  |-...............|
0005ce50  63 6f 6d 32 32 30 00 00  bc f5 05 00 46 fd ff ff  |com220......F...|
0005ce60  4c 55 95 3f a5 00 00 00  13 00 00 00 00 00 00 00  |LU.?............|
0005ce70  43 6f 6d 32 33 30 00 00  64 f6 05 00 46 fd ff ff  |Com230..d...F...|
0005ce80  4b 58 95 3f a7 00 00 00  13 00 00 00 00 00 00 00  |KX.?............|
0005ce90  43 6f 6d 32 34 30 00 00  0c f7 05 00 46 fd ff ff  |Com240......F...|
0005cea0  5d 5c 95 3f cf 00 00 00  13 00 00 00 00 00 00 00  |]\.?............|
0005ceb0  43 6f 6d 32 35 30 00 00  dc f7 05 00 46 fd ff ff  |Com250......F...|
0005cec0  63 a3 94 3f 85 01 00 00  13 00 00 00 00 00 00 00  |c..?............|
0005ced0  43 6f 6d 32 36 30 00 00  64 f9 05 00 46 fd ff ff  |Com260..d...F...|
0005cee0  a2 b4 94 3f 65 01 00 00  13 00 00 00 00 00 00 00  |...?e...........|
0005cef0  43 6f 6d 32 37 30 00 00  cc fa 05 00 46 fd ff ff  |Com270......F...|
0005cf00  a3 e3 94 3f 7d 00 00 00  13 00 00 00 00 00 00 00  |...?}...........|
0005cf10  43 6f 6d 32 38 30 00 00  4c fb 05 00 46 fd ff ff  |Com280..L...F...|
0005cf20  98 1c 95 3f 8c 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005cf30  43 6f 6d 33 30 30 00 00  d8 fb 05 00 46 fd ff ff  |Com300......F...|
0005cf40  4c 26 95 3f 8e 00 00 00  13 00 00 00 00 00 00 00  |L&.?............|
0005cf50  43 6f 6d 33 31 30 00 00  68 fc 05 00 46 fd ff ff  |Com310..h...F...|
0005cf60  d1 80 95 3f 31 01 00 00  13 00 00 00 00 00 00 00  |...?1...........|
0005cf70  43 6f 6d 34 30 30 00 00  9c fd 05 00 46 fd ff ff  |Com400......F...|
0005cf80  b6 92 95 3f 2e 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005cf90  43 6f 6d 34 31 30 00 00  cc fd 05 00 46 fd ff ff  |Com410......F...|
0005cfa0  8a 96 95 3f 31 00 00 00  13 00 00 00 00 00 00 00  |...?1...........|
0005cfb0  43 6f 6d 34 32 30 00 00  00 fe 05 00 46 fd ff ff  |Com420......F...|
0005cfc0  52 af 95 3f 8a 00 00 00  13 00 00 00 00 00 00 00  |R..?............|
0005cfd0  43 6f 6d 34 33 30 00 00  8c fe 05 00 46 fd ff ff  |Com430......F...|
0005cfe0  9f dd 95 3f f9 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005cff0  43 6f 6d 34 33 30 4e 00  88 ff 05 00 46 fd ff ff  |Com430N.....F...|
0005d000  89 f9 95 3f bf 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005d010  43 6f 6d 34 34 30 00 00  48 00 06 00 46 fd ff ff  |Com440..H...F...|
0005d020  d5 1b 96 3f 99 00 00 00  13 00 00 00 00 00 00 00  |...?............|
0005d030  43 6f 6d 34 35 30 00 00  e4 00 06 00 46 fd ff ff  |Com450......F...|
0005d040  4f 45 96 3f a3 00 00 00  13 00 00 00 00 00 00 00  |OE.?............|
0005d050  43 6f 6d 34 36 30 00 00  88 01 06 00 46 fd ff ff  |Com460......F...|
0005d060  6f 7b 96 3f 43 03 00 00  13 00 00 00 00 00 00 00  |o{.?C...........|
0005d070  43 6f 6d 38 30 30 00 00  cc 04 06 00 46 fd ff ff  |Com800......F...|
0005d080  2a bb 96 3f 10 01 00 00  13 00 00 00 00 00 00 00  |*..?............|
0005d090  43 6f 6d 39 30 30 00 00  dc 05 06 00 46 fd ff ff  |Com900......F...|
0005d0a0  d9 07 97 3f 2b 01 00 00  13 00 00 00 00 00 00 00  |...?+...........|
0005d0b0  52 65 70 53 74 61 74 75  73 00 00 00 08 07 06 00  |RepStatus.......|
0005d0c0  46 fd ff ff 93 42 97 3f  89 01 00 00 13 00 00 00  |F....B.?........|
0005d0d0  00 00 00 00 52 65 70 30  00 00 00 00 94 08 06 00  |....Rep0........|
0005d0e0  46 fd ff ff 18 53 97 3f  af 00 00 00 13 00 00 00  |F....S.?........|
0005d0f0  00 00 00 00 52 65 70 31  30 00 00 00 44 09 06 00  |....Rep10...D...|
0005d100  46 fd ff ff c5 86 97 3f  34 00 00 00 13 00 00 00  |F......?4.......|
0005d110  00 00 00 00 52 65 70 32  30 00 00 00 78 09 06 00  |....Rep20...x...|
0005d120  46 fd ff ff 8a a8 97 3f  36 00 00 00 13 00 00 00  |F......?6.......|
0005d130  00 00 00 00 52 65 70 33  30 00 00 00 b0 09 06 00  |....Rep30.......|
0005d140  46 fd ff ff 51 00 98 3f  3c 02 00 00 13 00 00 00  |F...Q..?<.......|
0005d150  00 00 00 00 52 65 70 31  30 30 00 00 ec 0b 06 00  |....Rep100......|
0005d160  46 fd ff ff 43 13 98 3f  88 00 00 00 13 00 00 00  |F...C..?........|
0005d170  00 00 00 00 52 65 70 31  31 30 00 00 74 0c 06 00  |....Rep110..t...|
0005d180  46 fd ff ff 33 4d 98 3f  cc 00 00 00 13 00 00 00  |F...3M.?........|
0005d190  00 00 00 00 52 65 70 32  30 30 00 00 40 0d 06 00  |....Rep200..@...|
0005d1a0  46 fd ff ff 15 5c 98 3f  b4 00 00 00 13 00 00 00  |F....\.?........|
0005d1b0  00 00 00 00 52 65 70 32  31 30 00 00 f4 0d 06 00  |....Rep210......|
0005d1c0  46 fd ff ff cc 75 98 3f  02 01 00 00 13 00 00 00  |F....u.?........|
0005d1d0  00 00 00 00 52 65 70 32  32 30 00 00 f8 0e 06 00  |....Rep220......|
0005d1e0  46 fd ff ff 0b 02 99 3f  dd 00 00 00 13 00 00 00  |F......?........|
0005d1f0  00 00 00 00 52 65 70 34  30 30 00 00 d8 0f 06 00  |....Rep400......|
0005d200  46 fd ff ff 45 2e 99 3f  3d 00 00 00 13 00 00 00  |F...E..?=.......|
0005d210  00 00 00 00 52 65 70 34  34 30 00 00 18 10 06 00  |....Rep440......|
0005d220  46 fd ff ff d3 3d 99 3f  61 00 00 00 13 00 00 00  |F....=.?a.......|
0005d230  00 00 00 00 52 65 70 34  35 30 00 00 7c 10 06 00  |....Rep450..|...|
0005d240  46 fd ff ff ae 4e 99 3f  eb 00 00 00 13 00 00 00  |F....N.?........|
0005d250  00 00 00 00 52 65 70 34  36 30 00 00 68 11 06 00  |....Rep460..h...|
0005d260  46 fd ff ff 99 90 99 3f  25 01 00 00 13 00 00 00  |F......?%.......|
0005d270  00 00 00 00 52 65 70 39  30 30 00 00 44 41 54 41  |....Rep900..DATA|
0005d280  90 01 00 00 4e 65 77 73  42 61 73 65 5f 43 6f 6d  |....NewsBase_Com|
0005d290  6d 61 6e 64 0a 2b 32 30  09 3c 43 6f 6d 6d 61 6e  |mand.+20.<Comman|
0005d2a0  64 20 63 6f 64 65 3d 3e  77 69 6d 70 5f 75 6d 4e  |d code=>wimp_umN|
0005d2b0  42 5f 43 6f 6d 43 6f 64  65 73 3e 20 2b 20 52 65  |B_ComCodes> + Re|
0005d2c0  66 65 72 65 6e 63 65 20  6e 75 6d 62 65 72 0a 09  |ference number..|
0005d2d0  72 65 73 74 20 6f 66 20  62 6c 6f 63 6b 20 61 73  |rest of block as|
0005d2e0  20 64 65 66 69 6e 65 64  20 62 79 20 63 6f 64 65  | defined by code|
0005d2f0  0a 0a 54 68 65 20 63 6f  6d 6d 61 6e 64 20 63 6f  |..The command co|
0005d300  64 65 20 69 73 20 6f 6e  65 20 31 36 2d 62 69 74  |de is one 16-bit|
0005d310  20 66 69 65 6c 64 73 2c  20 61 6e 64 20 74 68 65  | fields, and the|
0005d320  20 72 65 66 65 72 65 6e  63 65 20 6e 75 6d 62 65  | reference numbe|
0005d330  72 20 69 73 20 74 68 65  20 74 6f 70 20 31 36 20  |r is the top 16 |
0005d340  62 69 74 73 20 28 74 6f  20 62 65 20 73 75 70 70  |bits (to be supp|
0005d350  6c 69 65 64 20 62 79 20  74 68 65 20 63 6c 69 65  |lied by the clie|
0005d360  6e 74 20 61 70 70 6c 69  63 61 74 69 6f 6e 29 2e  |nt application).|
0005d370  20 54 68 65 20 72 65 66  65 72 65 6e 63 65 20 77  | The reference w|
0005d380  69 6c 6c 20 62 65 20 70  72 65 73 65 72 76 65 64  |ill be preserved|
0005d390  20 62 79 20 4e 65 77 73  42 61 73 65 20 69 6e 20  | by NewsBase in |
0005d3a0  72 65 70 6c 69 65 73 2e  20 54 68 69 73 20 70 65  |replies. This pe|
0005d3b0  72 6d 69 74 73 20 6f 76  65 72 6c 61 70 70 69 6e  |rmits overlappin|
0005d3c0  67 20 63 6f 6d 6d 61 6e  64 2d 72 65 70 6c 79 20  |g command-reply |
0005d3d0  73 65 71 75 65 6e 63 65  73 20 69 73 73 75 65 64  |sequences issued|
0005d3e0  20 62 79 20 61 20 63 6c  69 65 6e 74 20 74 6f 20  | by a client to |
0005d3f0  62 65 20 69 64 65 6e 74  69 66 69 65 64 20 61 6e  |be identified an|
0005d400  64 20 66 6f 6c 6c 6f 77  65 64 2e 0a 44 41 54 41  |d followed..DATA|
0005d410  8a 06 00 00 4e 65 77 73  42 61 73 65 20 63 6f 6d  |....NewsBase com|
0005d420  6d 61 6e 64 20 63 6f 64  65 73 0a 23 57 72 61 70  |mand codes.#Wrap|
0005d430  20 4f 66 66 0a 47 65 6e  65 72 61 6c 20 50 75 72  | Off.General Pur|
0005d440  70 6f 73 65 20 43 6f 6d  6d 61 6e 64 73 0a 23 49  |pose Commands.#I|
0005d450  6e 64 65 6e 74 20 32 0a  30 09 3c 4e 65 77 73 42  |ndent 2.0.<NewsB|
0005d460  61 73 65 5f 53 74 61 72  74 55 70 3d 3e 77 69 6d  |ase_StartUp=>wim|
0005d470  70 5f 75 6d 4e 42 5f 43  6f 6d 30 3e 0a 31 30 09  |p_umNB_Com0>.10.|
0005d480  3c 4e 65 77 73 42 61 73  65 5f 53 68 75 74 44 6f  |<NewsBase_ShutDo|
0005d490  77 6e 3d 3e 77 69 6d 70  5f 75 6d 4e 42 5f 43 6f  |wn=>wimp_umNB_Co|
0005d4a0  6d 31 30 3e 0a 32 30 09  3c 4e 65 77 73 42 61 73  |m10>.20.<NewsBas|
0005d4b0  65 5f 53 65 74 55 73 65  72 3d 3e 77 69 6d 70 5f  |e_SetUser=>wimp_|
0005d4c0  75 6d 4e 42 5f 43 6f 6d  32 30 3e 0a 33 30 09 3c  |umNB_Com20>.30.<|
0005d4d0  4e 65 77 73 42 61 73 65  5f 53 69 74 65 49 6e 66  |NewsBase_SiteInf|
0005d4e0  6f 3d 3e 77 69 6d 70 5f  75 6d 4e 42 5f 43 6f 6d  |o=>wimp_umNB_Com|
0005d4f0  33 30 3e 0a 34 30 09 3c  4e 65 77 73 42 61 73 65  |30>.40.<NewsBase|
0005d500  5f 53 65 74 53 69 74 65  49 6e 66 6f 3d 3e 77 69  |_SetSiteInfo=>wi|
0005d510  6d 70 5f 75 6d 4e 42 5f  43 6f 6d 34 30 3e 0a 0a  |mp_umNB_Com40>..|
0005d520  23 49 6e 64 65 6e 74 20  30 0a 4e 65 77 73 67 72  |#Indent 0.Newsgr|
0005d530  6f 75 70 20 6f 72 69 65  6e 74 65 64 20 63 6f 6d  |oup oriented com|
0005d540  6d 61 6e 64 73 0a 23 49  6e 64 65 6e 74 20 32 0a  |mands.#Indent 2.|
0005d550  31 30 30 09 3c 4e 65 77  73 42 61 73 65 5f 4c 69  |100.<NewsBase_Li|
0005d560  73 74 47 72 6f 75 70 73  3d 3e 77 69 6d 70 5f 75  |stGroups=>wimp_u|
0005d570  6d 4e 42 5f 43 6f 6d 31  30 30 3e 0a 31 31 30 09  |mNB_Com100>.110.|
0005d580  3c 4e 65 77 73 42 61 73  65 5f 4e 65 77 47 72 6f  |<NewsBase_NewGro|
0005d590  75 70 73 3d 3e 77 69 6d  70 5f 75 6d 4e 42 5f 43  |ups=>wimp_umNB_C|
0005d5a0  6f 6d 31 31 30 3e 0a 31  32 30 09 3c 4e 65 77 73  |om110>.120.<News|
0005d5b0  42 61 73 65 5f 41 64 64  47 72 6f 75 70 3d 3e 77  |Base_AddGroup=>w|
0005d5c0  69 6d 70 5f 75 6d 4e 42  5f 43 6f 6d 31 32 30 3e  |imp_umNB_Com120>|
0005d5d0  0a 31 33 30 09 3c 4e 65  77 73 42 61 73 65 5f 52  |.130.<NewsBase_R|
0005d5e0  65 6d 6f 76 65 47 72 6f  75 70 3d 3e 77 69 6d 70  |emoveGroup=>wimp|
0005d5f0  5f 75 6d 4e 42 5f 43 6f  6d 31 33 30 3e 0a 31 34  |_umNB_Com130>.14|
0005d600  30 09 3c 4e 65 77 73 42  61 73 65 5f 45 78 70 69  |0.<NewsBase_Expi|
0005d610  72 65 47 72 6f 75 70 3d  3e 77 69 6d 70 5f 75 6d  |reGroup=>wimp_um|
0005d620  4e 42 5f 43 6f 6d 31 34  30 3e 0a 0a 23 49 6e 64  |NB_Com140>..#Ind|
0005d630  65 6e 74 20 30 0a 41 72  74 69 63 6c 65 20 6f 72  |ent 0.Article or|
0005d640  69 65 6e 74 65 64 20 63  6f 6d 6d 61 6e 64 73 0a  |iented commands.|
0005d650  23 49 6e 64 65 6e 74 20  32 0a 32 30 30 09 3c 4e  |#Indent 2.200.<N|
0005d660  65 77 73 42 61 73 65 5f  4c 69 73 74 41 72 74 73  |ewsBase_ListArts|
0005d670  3d 3e 77 69 6d 70 5f 75  6d 4e 42 5f 43 6f 6d 32  |=>wimp_umNB_Com2|
0005d680  30 30 3e 0a 32 31 30 09  3c 4e 65 77 73 42 61 73  |00>.210.<NewsBas|
0005d690  65 5f 4c 69 73 74 41 72  74 73 54 68 72 65 61 64  |e_ListArtsThread|
0005d6a0  65 64 3d 3e 77 69 6d 70  5f 75 6d 4e 42 5f 43 6f  |ed=>wimp_umNB_Co|
0005d6b0  6d 32 31 30 3e 0a 32 32  30 09 3c 4e 65 77 73 42  |m210>.220.<NewsB|
0005d6c0  61 73 65 5f 47 65 74 41  72 74 69 63 6c 65 3d 3e  |ase_GetArticle=>|
0005d6d0  77 69 6d 70 5f 75 6d 4e  42 5f 43 6f 6d 32 32 30  |wimp_umNB_Com220|
0005d6e0  3e 0a 32 33 30 09 3c 4e  65 77 73 42 61 73 65 5f  |>.230.<NewsBase_|
0005d6f0  4c 6f 63 6b 41 72 74 69  63 6c 65 3d 3e 77 69 6d  |LockArticle=>wim|
0005d700  70 5f 75 6d 4e 42 5f 43  6f 6d 32 33 30 3e 0a 32  |p_umNB_Com230>.2|
0005d710  34 30 09 3c 4e 65 77 73  42 61 73 65 5f 55 6e 4c  |40.<NewsBase_UnL|
0005d720  6f 63 6b 41 72 74 69 63  6c 65 3d 3e 77 69 6d 70  |ockArticle=>wimp|
0005d730  5f 75 6d 4e 42 5f 43 6f  6d 32 34 30 3e 0a 32 35  |_umNB_Com240>.25|
0005d740  30 09 3c 4e 65 77 73 42  61 73 65 5f 44 65 6c 65  |0.<NewsBase_Dele|
0005d750  74 65 41 72 74 69 63 6c  65 3d 3e 77 69 6d 70 5f  |teArticle=>wimp_|
0005d760  75 6d 4e 42 5f 43 6f 6d  32 35 30 3e 0a 32 36 30  |umNB_Com250>.260|
0005d770  09 3c 4e 65 77 73 42 61  73 65 5f 4d 6f 76 65 41  |.<NewsBase_MoveA|
0005d780  72 74 69 63 6c 65 3d 3e  77 69 6d 70 5f 75 6d 4e  |rticle=>wimp_umN|
0005d790  42 5f 43 6f 6d 32 36 30  3e 0a 32 37 30 09 3c 4e  |B_Com260>.270.<N|
0005d7a0  65 77 73 42 61 73 65 5f  43 6f 70 79 41 72 74 69  |ewsBase_CopyArti|
0005d7b0  63 6c 65 3d 3e 77 69 6d  70 5f 75 6d 4e 42 5f 43  |cle=>wimp_umNB_C|
0005d7c0  6f 6d 32 37 30 3e 0a 32  38 30 09 3c 4e 65 77 73  |om270>.280.<News|
0005d7d0  42 61 73 65 5f 43 61 6e  63 65 6c 41 72 74 69 63  |Base_CancelArtic|
0005d7e0  6c 65 3d 3e 77 69 6d 70  5f 75 6d 4e 42 5f 43 6f  |le=>wimp_umNB_Co|
0005d7f0  6d 32 38 30 3e 0a 0a 23  49 6e 64 65 6e 74 20 30  |m280>..#Indent 0|
0005d800  0a 50 6f 73 74 69 6e 67  2f 6d 61 69 6c 69 6e 67  |.Posting/mailing|
0005d810  20 63 6f 6d 6d 61 6e 64  73 0a 23 49 6e 64 65 6e  | commands.#Inden|
0005d820  74 20 32 0a 33 30 30 09  3c 4e 65 77 73 42 61 73  |t 2.300.<NewsBas|
0005d830  65 5f 50 6f 73 74 41 72  74 69 63 6c 65 3d 3e 77  |e_PostArticle=>w|
0005d840  69 6d 70 5f 75 6d 4e 42  5f 43 6f 6d 33 30 30 3e  |imp_umNB_Com300>|
0005d850  0a 33 31 30 09 3c 4e 65  77 73 42 61 73 65 5f 4d  |.310.<NewsBase_M|
0005d860  61 69 6c 41 72 74 69 63  6c 65 3d 3e 77 69 6d 70  |ailArticle=>wimp|
0005d870  5f 75 6d 4e 42 5f 43 6f  6d 33 31 30 3e 0a 0a 23  |_umNB_Com310>..#|
0005d880  49 6e 64 65 6e 74 20 30  0a 55 73 65 72 20 6f 72  |Indent 0.User or|
0005d890  69 65 6e 74 65 64 20 63  6f 6d 6d 61 6e 64 73 0a  |iented commands.|
0005d8a0  23 49 6e 64 65 6e 74 20  32 0a 34 30 30 09 3c 4e  |#Indent 2.400.<N|
0005d8b0  65 77 73 42 61 73 65 5f  4c 69 73 74 55 73 65 72  |ewsBase_ListUser|
0005d8c0  73 3d 3e 77 69 6d 70 5f  75 6d 4e 42 5f 43 6f 6d  |s=>wimp_umNB_Com|
0005d8d0  34 30 30 3e 0a 34 31 30  09 3c 4e 65 77 73 42 61  |400>.410.<NewsBa|
0005d8e0  73 65 5f 41 64 64 55 73  65 72 3d 3e 77 69 6d 70  |se_AddUser=>wimp|
0005d8f0  5f 75 6d 4e 42 5f 43 6f  6d 34 31 30 3e 0a 34 32  |_umNB_Com410>.42|
0005d900  30 09 3c 4e 65 77 73 42  61 73 65 5f 44 65 6c 65  |0.<NewsBase_Dele|
0005d910  74 65 55 73 65 72 3d 3e  77 69 6d 70 5f 75 6d 4e  |teUser=>wimp_umN|
0005d920  42 5f 43 6f 6d 34 32 30  3e 0a 34 33 30 09 3c 4e  |B_Com420>.430.<N|
0005d930  65 77 73 42 61 73 65 5f  4d 6f 64 69 66 79 55 73  |ewsBase_ModifyUs|
0005d940  65 72 3d 3e 77 69 6d 70  5f 75 6d 4e 42 5f 43 6f  |er=>wimp_umNB_Co|
0005d950  6d 34 33 30 3e 0a 34 34  30 09 3c 4e 65 77 73 42  |m430>.440.<NewsB|
0005d960  61 73 65 5f 47 65 74 55  73 65 72 49 6e 66 6f 3d  |ase_GetUserInfo=|
0005d970  3e 77 69 6d 70 5f 75 6d  4e 42 5f 43 6f 6d 34 34  |>wimp_umNB_Com44|
0005d980  30 3e 0a 34 35 30 09 3c  4e 65 77 73 42 61 73 65  |0>.450.<NewsBase|
0005d990  5f 45 78 61 6d 69 6e 65  46 6f 72 77 61 72 64 69  |_ExamineForwardi|
0005d9a0  6e 67 3d 3e 77 69 6d 70  5f 75 6d 4e 42 5f 43 6f  |ng=>wimp_umNB_Co|
0005d9b0  6d 34 35 30 3e 0a 34 36  30 09 3c 4e 65 77 73 42  |m450>.460.<NewsB|
0005d9c0  61 73 65 5f 45 78 61 6d  69 6e 65 56 61 63 61 74  |ase_ExamineVacat|
0005d9d0  69 6f 6e 3d 3e 77 69 6d  70 5f 75 6d 4e 42 5f 43  |ion=>wimp_umNB_C|
0005d9e0  6f 6d 34 36 30 3e 0a 0a  23 49 6e 64 65 6e 74 20  |om460>..#Indent |
0005d9f0  30 0a 51 75 65 75 65 20  63 6f 6e 74 72 6f 6c 20  |0.Queue control |
0005da00  63 6f 6d 6d 61 6e 64 73  0a 23 49 6e 64 65 6e 74  |commands.#Indent|
0005da10  20 32 0a 38 30 30 09 3c  4e 65 77 73 42 61 73 65  | 2.800.<NewsBase|
0005da20  5f 52 65 45 64 69 74 3d  3e 77 69 6d 70 5f 75 6d  |_ReEdit=>wimp_um|
0005da30  4e 42 5f 43 6f 6d 38 30  30 3e 0a 0a 23 49 6e 64  |NB_Com800>..#Ind|
0005da40  65 6e 74 20 30 0a 4d 69  73 63 65 6c 6c 61 6e 65  |ent 0.Miscellane|
0005da50  6f 75 73 20 63 6f 6d 6d  61 6e 64 73 0a 23 49 6e  |ous commands.#In|
0005da60  64 65 6e 74 20 32 0a 39  30 30 09 3c 4e 65 77 73  |dent 2.900.<News|
0005da70  42 61 73 65 5f 43 6c 69  65 6e 74 50 72 65 73 65  |Base_ClientPrese|
0005da80  6e 74 3d 3e 77 69 6d 70  5f 75 6d 4e 42 5f 43 6f  |nt=>wimp_umNB_Co|
0005da90  6d 39 30 30 3e 0a 00 00  44 41 54 41 56 01 00 00  |m900>...DATAV...|
0005daa0  4e 65 77 73 42 61 73 65  5f 52 65 70 6c 79 0a 2b  |NewsBase_Reply.+|
0005dab0  32 30 09 3c 43 6f 6d 6d  61 6e 64 20 72 65 73 70  |20.<Command resp|
0005dac0  6f 6e 73 65 20 63 6f 64  65 3d 3e 77 69 6d 70 5f  |onse code=>wimp_|
0005dad0  75 6d 4e 42 5f 52 65 70  43 6f 64 65 73 3e 20 2b  |umNB_RepCodes> +|
0005dae0  20 52 65 66 65 72 65 6e  63 65 20 6e 75 6d 62 65  | Reference numbe|
0005daf0  72 20 2b 20 3c 73 74 61  74 75 73 3d 3e 77 69 6d  |r + <status=>wim|
0005db00  70 5f 75 6d 4e 42 5f 52  65 70 53 74 61 74 75 73  |p_umNB_RepStatus|
0005db10  3e 0a 09 72 65 73 74 20  6f 66 20 62 6c 6f 63 6b  |>..rest of block|
0005db20  20 61 73 20 64 65 66 69  6e 65 64 20 62 79 20 63  | as defined by c|
0005db30  6f 64 65 0a 0a 4e 65 77  73 42 61 73 65 20 72 65  |ode..NewsBase re|
0005db40  70 6c 69 65 73 20 74 6f  20 3c 4e 65 77 73 42 61  |plies to <NewsBa|
0005db50  73 65 5f 43 6f 6d 6d 61  6e 64 3d 3e 77 69 6d 70  |se_Command=>wimp|
0005db60  5f 75 6d 4e 42 5f 43 6f  6d 6d 61 6e 64 3e 20 77  |_umNB_Command> w|
0005db70  69 74 68 20 74 68 69 73  20 6d 65 73 73 61 67 65  |ith this message|
0005db80  2c 20 72 65 74 75 72 6e  69 6e 67 20 74 68 65 20  |, returning the |
0005db90  73 61 6d 65 20 67 72 6f  75 70 73 2c 20 62 75 74  |same groups, but|
0005dba0  20 77 69 74 68 20 74 68  65 20 6c 65 61 73 74 20  | with the least |
0005dbb0  73 69 67 6e 69 66 69 63  61 6e 74 20 64 69 67 69  |significant digi|
0005dbc0  74 20 6f 66 20 74 68 65  20 72 65 73 70 6f 6e 73  |t of the respons|
0005dbd0  65 20 63 6f 64 65 20 69  6e 64 69 63 61 74 69 6e  |e code indicatin|
0005dbe0  67 20 74 68 65 20 73 74  61 74 75 73 2e 0a 00 00  |g the status....|
0005dbf0  44 41 54 41 c9 06 00 00  4e 65 77 73 42 61 73 65  |DATA....NewsBase|
0005dc00  20 63 6f 6d 6d 61 6e 64  20 72 65 73 70 6f 6e 73  | command respons|
0005dc10  65 20 63 6f 64 65 73 0a  47 65 6e 65 72 61 6c 20  |e codes.General |
0005dc20  50 75 72 70 6f 73 65 20  43 6f 6d 6d 61 6e 64 73  |Purpose Commands|
0005dc30  0a 23 49 6e 64 65 6e 74  20 32 0a 30 09 3c 4e 65  |.#Indent 2.0.<Ne|
0005dc40  77 73 42 61 73 65 5f 53  74 61 72 74 55 70 52 65  |wsBase_StartUpRe|
0005dc50  70 6c 79 3d 3e 77 69 6d  70 5f 75 6d 4e 42 5f 52  |ply=>wimp_umNB_R|
0005dc60  65 70 30 3e 0a 31 30 09  3c 4e 65 77 73 42 61 73  |ep0>.10.<NewsBas|
0005dc70  65 5f 53 68 75 74 44 6f  77 6e 3d 3e 77 69 6d 70  |e_ShutDown=>wimp|
0005dc80  5f 75 6d 4e 42 5f 52 65  70 31 30 3e 0a 32 30 09  |_umNB_Rep10>.20.|
0005dc90  3c 4e 65 77 73 42 61 73  65 5f 53 65 74 55 73 65  |<NewsBase_SetUse|
0005dca0  72 3d 3e 77 69 6d 70 5f  75 6d 4e 42 5f 52 65 70  |r=>wimp_umNB_Rep|
0005dcb0  32 30 3e 0a 33 30 09 3c  4e 65 77 73 42 61 73 65  |20>.30.<NewsBase|
0005dcc0  5f 53 69 74 65 49 6e 66  6f 3d 3e 77 69 6d 70 5f  |_SiteInfo=>wimp_|
0005dcd0  75 6d 4e 42 5f 52 65 70  33 30 3e 0a 34 30 09 4e  |umNB_Rep30>.40.N|
0005dce0  65 77 73 42 61 73 65 5f  53 65 74 53 69 74 65 49  |ewsBase_SetSiteI|
0005dcf0  6e 66 6f 20 28 73 75 63  63 65 73 73 2f 66 61 69  |nfo (success/fai|
0005dd00  6c 75 72 65 20 6f 6e 6c  79 29 0a 0a 23 49 6e 64  |lure only)..#Ind|
0005dd10  65 6e 74 20 30 0a 4e 65  77 73 67 72 6f 75 70 20  |ent 0.Newsgroup |
0005dd20  6f 72 69 65 6e 74 65 64  20 63 6f 6d 6d 61 6e 64  |oriented command|
0005dd30  73 0a 23 49 6e 64 65 6e  74 20 32 0a 31 30 30 09  |s.#Indent 2.100.|
0005dd40  3c 4e 65 77 73 42 61 73  65 5f 47 72 6f 75 70 4c  |<NewsBase_GroupL|
0005dd50  69 73 74 3d 3e 77 69 6d  70 5f 75 6d 4e 42 5f 52  |ist=>wimp_umNB_R|
0005dd60  65 70 31 30 30 3e 0a 31  31 30 09 3c 4e 65 77 73  |ep100>.110.<News|
0005dd70  42 61 73 65 5f 4e 65 77  47 72 6f 75 70 4c 69 73  |Base_NewGroupLis|
0005dd80  74 3d 3e 77 69 6d 70 5f  75 6d 4e 42 5f 52 65 70  |t=>wimp_umNB_Rep|
0005dd90  31 31 30 3e 0a 31 32 30  09 4e 65 77 73 42 61 73  |110>.120.NewsBas|
0005dda0  65 5f 41 64 64 47 72 6f  75 70 4f 6b 20 28 73 75  |e_AddGroupOk (su|
0005ddb0  63 63 65 73 73 2f 66 61  69 6c 75 72 65 20 6f 6e  |ccess/failure on|
0005ddc0  6c 79 29 0a 31 33 30 09  4e 65 77 73 42 61 73 65  |ly).130.NewsBase|
0005ddd0  5f 52 65 6d 6f 76 65 47  72 6f 75 70 4f 6b 20 28  |_RemoveGroupOk (|
0005dde0  73 75 63 63 65 73 73 2f  66 61 69 6c 75 72 65 20  |success/failure |
0005ddf0  6f 6e 6c 79 29 0a 31 34  30 09 4e 65 77 73 42 61  |only).140.NewsBa|
0005de00  73 65 5f 45 78 70 69 72  65 47 72 6f 75 70 4f 6b  |se_ExpireGroupOk|
0005de10  20 28 73 75 63 63 65 73  73 2f 66 61 69 6c 75 72  | (success/failur|
0005de20  65 20 6f 6e 6c 79 29 0a  0a 23 49 6e 64 65 6e 74  |e only)..#Indent|
0005de30  20 30 0a 41 72 74 69 63  6c 65 20 6f 72 69 65 6e  | 0.Article orien|
0005de40  74 65 64 20 63 6f 6d 6d  61 6e 64 73 0a 23 49 6e  |ted commands.#In|
0005de50  64 65 6e 74 20 32 0a 32  30 30 09 3c 4e 65 77 73  |dent 2.200.<News|
0005de60  42 61 73 65 5f 41 72 74  4c 69 73 74 3d 3e 77 69  |Base_ArtList=>wi|
0005de70  6d 70 5f 55 4d 4e 42 5f  52 65 70 32 30 30 3e 0a  |mp_UMNB_Rep200>.|
0005de80  32 31 30 09 3c 4e 65 77  73 42 61 73 65 5f 41 72  |210.<NewsBase_Ar|
0005de90  74 54 68 72 65 61 64 49  6e 66 6f 3d 3e 77 69 6d  |tThreadInfo=>wim|
0005dea0  70 5f 55 4d 4e 42 5f 52  65 70 32 31 30 3e 0a 32  |p_UMNB_Rep210>.2|
0005deb0  32 30 09 3c 4e 65 77 73  42 61 73 65 5f 47 65 74  |20.<NewsBase_Get|
0005dec0  41 72 74 69 63 6c 65 3d  3e 77 69 6d 70 5f 55 4d  |Article=>wimp_UM|
0005ded0  4e 42 5f 52 65 70 32 32  30 3e 0a 32 33 30 09 4e  |NB_Rep220>.230.N|
0005dee0  65 77 73 42 61 73 65 5f  4c 6f 63 6b 41 72 74 69  |ewsBase_LockArti|
0005def0  63 6c 65 4f 6b 20 28 73  75 63 63 65 73 73 2f 66  |cleOk (success/f|
0005df00  61 69 6c 75 72 65 20 6f  6e 6c 79 29 0a 32 34 30  |ailure only).240|
0005df10  09 4e 65 77 73 42 61 73  65 5f 55 6e 4c 6f 63 6b  |.NewsBase_UnLock|
0005df20  41 72 74 69 63 6c 65 4f  6b 20 28 73 75 63 63 65  |ArticleOk (succe|
0005df30  73 73 2f 66 61 69 6c 75  72 65 20 6f 6e 6c 79 29  |ss/failure only)|
0005df40  0a 32 35 30 09 4e 65 77  73 42 61 73 65 5f 44 65  |.250.NewsBase_De|
0005df50  6c 65 74 65 41 72 74 69  63 6c 65 4f 6b 20 28 73  |leteArticleOk (s|
0005df60  75 63 63 65 73 73 2f 66  61 69 6c 75 72 65 20 6f  |uccess/failure o|
0005df70  6e 6c 79 29 0a 32 36 30  09 4e 65 77 73 42 61 73  |nly).260.NewsBas|
0005df80  65 5f 4d 6f 76 65 41 72  74 69 63 6c 65 4f 6b 20  |e_MoveArticleOk |
0005df90  28 73 75 63 63 65 73 73  2f 66 61 69 6c 75 72 65  |(success/failure|
0005dfa0  20 6f 6e 6c 79 29 0a 32  37 30 09 4e 65 77 73 42  | only).270.NewsB|
0005dfb0  61 73 65 5f 43 6f 70 79  41 72 74 69 63 6c 65 4f  |ase_CopyArticleO|
0005dfc0  6b 20 28 73 75 63 63 65  73 73 2f 66 61 69 6c 75  |k (success/failu|
0005dfd0  72 65 20 6f 6e 6c 79 29  0a 32 38 30 09 4e 65 77  |re only).280.New|
0005dfe0  73 42 61 73 65 5f 43 61  6e 63 65 6c 41 72 74 69  |sBase_CancelArti|
0005dff0  63 6c 65 20 20 28 55 6e  64 6f 63 75 6d 65 6e 74  |cle  (Undocument|
0005e000  65 64 2c 20 6e 6f 6e 2d  65 78 69 73 74 61 6e 74  |ed, non-existant|
0005e010  20 3f 29 0a 0a 23 49 6e  64 65 6e 74 20 30 0a 50  | ?)..#Indent 0.P|
0005e020  6f 73 74 69 6e 67 2f 6d  61 69 6c 69 6e 67 20 63  |osting/mailing c|
0005e030  6f 6d 6d 61 6e 64 73 0a  23 49 6e 64 65 6e 74 20  |ommands.#Indent |
0005e040  32 0a 33 30 30 09 4e 65  77 73 42 61 73 65 5f 41  |2.300.NewsBase_A|
0005e050  72 74 69 63 6c 65 50 6f  73 74 65 64 20 28 73 75  |rticlePosted (su|
0005e060  63 63 65 73 73 2f 66 61  69 6c 75 72 65 20 6f 6e  |ccess/failure on|
0005e070  6c 79 29 0a 33 31 30 09  4e 65 77 73 42 61 73 65  |ly).310.NewsBase|
0005e080  5f 4d 65 73 73 61 67 65  53 65 6e 74 20 28 73 75  |_MessageSent (su|
0005e090  63 63 65 73 73 2f 66 61  69 6c 75 72 65 20 6f 6e  |ccess/failure on|
0005e0a0  6c 79 29 0a 0a 23 49 6e  64 65 6e 74 20 30 0a 55  |ly)..#Indent 0.U|
0005e0b0  73 65 72 20 6f 72 69 65  6e 74 65 64 20 63 6f 6d  |ser oriented com|
0005e0c0  6d 61 6e 64 73 0a 23 49  6e 64 65 6e 74 20 32 0a  |mands.#Indent 2.|
0005e0d0  34 30 30 09 3c 4e 65 77  73 42 61 73 65 5f 55 73  |400.<NewsBase_Us|
0005e0e0  65 72 4c 69 73 74 3d 3e  77 69 6d 70 5f 55 4d 4e  |erList=>wimp_UMN|
0005e0f0  42 5f 52 65 70 34 30 30  3e 0a 34 31 30 09 4e 65  |B_Rep400>.410.Ne|
0005e100  77 73 42 61 73 65 5f 41  64 64 55 73 65 72 4f 6b  |wsBase_AddUserOk|
0005e110  20 28 73 75 63 63 65 73  73 2f 66 61 69 6c 75 72  | (success/failur|
0005e120  65 20 6f 6e 6c 79 29 0a  34 32 30 09 4e 65 77 73  |e only).420.News|
0005e130  42 61 73 65 5f 44 65 6c  65 74 65 55 73 65 72 4f  |Base_DeleteUserO|
0005e140  6b 20 28 73 75 63 63 65  73 73 2f 66 61 69 6c 75  |k (success/failu|
0005e150  72 65 20 6f 6e 6c 79 29  0a 34 33 30 09 4e 65 77  |re only).430.New|
0005e160  73 42 61 73 65 5f 4d 6f  64 69 66 79 55 73 65 72  |sBase_ModifyUser|
0005e170  4f 6b 20 28 73 75 63 63  65 73 73 2f 66 61 69 6c  |Ok (success/fail|
0005e180  75 72 65 20 6f 6e 6c 79  29 0a 34 34 30 09 3c 4e  |ure only).440.<N|
0005e190  65 77 73 42 61 73 65 5f  47 65 74 55 73 65 72 49  |ewsBase_GetUserI|
0005e1a0  6e 66 6f 3d 3e 77 69 6d  70 5f 75 6d 4e 42 5f 52  |nfo=>wimp_umNB_R|
0005e1b0  65 70 34 34 30 3e 0a 34  35 30 09 3c 4e 65 77 73  |ep440>.450.<News|
0005e1c0  42 61 73 65 5f 45 78 61  6d 69 6e 65 46 6f 72 77  |Base_ExamineForw|
0005e1d0  61 72 64 69 6e 67 3d 3e  77 69 6d 70 5f 75 6d 4e  |arding=>wimp_umN|
0005e1e0  42 5f 52 65 70 34 35 30  3e 0a 34 36 30 09 3c 4e  |B_Rep450>.460.<N|
0005e1f0  65 77 73 42 61 73 65 5f  45 78 61 6d 69 6e 65 56  |ewsBase_ExamineV|
0005e200  61 63 61 74 69 6f 6e 3d  3e 77 69 6d 70 5f 75 6d  |acation=>wimp_um|
0005e210  4e 42 5f 52 65 70 34 36  30 3e 0a 0a 23 49 6e 64  |NB_Rep460>..#Ind|
0005e220  65 6e 74 20 30 0a 51 75  65 75 65 20 63 6f 6e 74  |ent 0.Queue cont|
0005e230  72 6f 6c 20 63 6f 6d 6d  61 6e 64 73 0a 23 49 6e  |rol commands.#In|
0005e240  64 65 6e 74 20 32 0a 38  30 30 09 4e 65 77 73 42  |dent 2.800.NewsB|
0005e250  61 73 65 5f 51 75 65 75  65 45 64 69 74 0a 0a 23  |ase_QueueEdit..#|
0005e260  49 6e 64 65 6e 74 20 30  0a 4d 69 73 63 65 6c 6c  |Indent 0.Miscell|
0005e270  61 6e 65 6f 75 73 20 63  6f 6d 6d 61 6e 64 73 0a  |aneous commands.|
0005e280  23 49 6e 64 65 6e 74 20  32 0a 39 30 30 09 3c 4e  |#Indent 2.900.<N|
0005e290  65 77 73 42 61 73 65 5f  43 6c 69 65 6e 74 50 72  |ewsBase_ClientPr|
0005e2a0  65 73 65 6e 74 3d 3e 77  69 6d 70 5f 55 4d 4e 42  |esent=>wimp_UMNB|
0005e2b0  5f 52 65 70 39 30 30 3e  0a 00 00 00 44 41 54 41  |_Rep900>....DATA|
0005e2c0  ba 00 00 00 4e 65 77 73  42 61 73 65 5f 55 70 64  |....NewsBase_Upd|
0005e2d0  61 74 65 0a 2b 32 30 09  3c 74 79 70 65 20 6f 66  |ate.+20.<type of|
0005e2e0  20 75 70 64 61 74 65 3d  3e 77 69 6d 70 5f 75 6d  | update=>wimp_um|
0005e2f0  4e 42 5f 55 70 64 54 79  70 65 73 3e 0a 09 72 65  |NB_UpdTypes>..re|
0005e300  73 74 20 6f 66 20 62 6c  6f 63 6b 20 61 73 20 64  |st of block as d|
0005e310  65 66 69 6e 65 64 20 62  79 20 63 6f 64 65 0a 0a  |efined by code..|
0005e320  54 68 69 73 20 69 73 20  62 72 6f 61 64 63 61 73  |This is broadcas|
0005e330  74 20 62 79 20 4e 65 77  73 42 61 73 65 20 77 68  |t by NewsBase wh|
0005e340  65 6e 65 76 65 72 20 6f  6e 65 20 6f 66 20 74 68  |enever one of th|
0005e350  65 20 73 65 63 74 69 6f  6e 73 20 6f 66 20 74 68  |e sections of th|
0005e360  65 20 64 61 74 61 62 61  73 65 20 69 73 20 61 6c  |e database is al|
0005e370  74 65 72 65 64 2e 00 00  44 41 54 41 51 01 00 00  |tered...DATAQ...|
0005e380  4e 65 77 73 42 61 73 65  20 55 70 64 61 74 65 20  |NewsBase Update |
0005e390  74 79 70 65 73 0a 54 79  70 65 09 4d 65 61 6e 69  |types.Type.Meani|
0005e3a0  6e 67 0a 23 4c 69 6e 65  0a 30 09 3c 47 72 6f 75  |ng.#Line.0.<Grou|
0005e3b0  70 20 63 72 65 61 74 65  64 3d 3e 77 69 6d 70 5f  |p created=>wimp_|
0005e3c0  75 6d 4e 42 5f 55 70 64  30 2d 31 3e 0a 31 09 3c  |umNB_Upd0-1>.1.<|
0005e3d0  47 72 6f 75 70 20 64 65  6c 65 74 65 64 3d 3e 77  |Group deleted=>w|
0005e3e0  69 6d 70 5f 75 6d 4e 42  5f 55 70 64 30 2d 31 3e  |imp_umNB_Upd0-1>|
0005e3f0  0a 32 09 3c 41 72 74 69  63 6c 65 20 63 72 65 61  |.2.<Article crea|
0005e400  74 65 64 3d 3e 77 69 6d  70 5f 75 6d 4e 42 5f 55  |ted=>wimp_umNB_U|
0005e410  70 64 32 3e 0a 33 09 3c  41 72 74 69 63 6c 65 20  |pd2>.3.<Article |
0005e420  64 65 6c 65 74 65 64 3d  3e 77 69 6d 70 5f 75 6d  |deleted=>wimp_um|
0005e430  4e 42 5f 55 70 64 33 3e  0a 34 09 3c 55 73 65 72  |NB_Upd3>.4.<User|
0005e440  20 61 64 64 65 64 3d 3e  77 69 6d 70 5f 75 6d 4e  | added=>wimp_umN|
0005e450  42 5f 55 70 64 34 2d 35  3e 0a 35 09 3c 55 73 65  |B_Upd4-5>.5.<Use|
0005e460  72 20 64 65 6c 65 74 65  64 3d 3e 77 69 6d 70 5f  |r deleted=>wimp_|
0005e470  75 6d 4e 42 5f 55 70 64  34 2d 35 3e 0a 31 30 09  |umNB_Upd4-5>.10.|
0005e480  3c 44 65 62 61 74 63 68  20 66 69 6e 69 73 68 65  |<Debatch finishe|
0005e490  64 3d 3e 77 69 6d 70 5f  75 6d 4e 42 5f 55 70 64  |d=>wimp_umNB_Upd|
0005e4a0  31 30 3e 0a 31 31 09 3c  51 75 65 75 65 73 20 75  |10>.11.<Queues u|
0005e4b0  70 64 61 74 65 64 3d 3e  77 69 6d 70 5f 75 6d 4e  |pdated=>wimp_umN|
0005e4c0  42 5f 55 70 64 31 31 3e  0a 00 00 00 44 41 54 41  |B_Upd11>....DATA|
0005e4d0  4e 00 00 00 4e 65 77 73  42 61 73 65 20 55 70 64  |N...NewsBase Upd|
0005e4e0  61 74 65 20 74 79 70 65  20 30 20 61 6e 64 20 31  |ate type 0 and 1|
0005e4f0  0a 2b 33 32 09 4e 61 6d  65 20 6f 66 20 6e 65 77  |.+32.Name of new|
0005e500  73 67 72 6f 75 70 20 63  72 65 61 74 65 64 20 6f  |sgroup created o|
0005e510  72 20 64 65 6c 65 74 65  64 0a 00 00 44 41 54 41  |r deleted...DATA|
0005e520  77 00 00 00 4e 65 77 73  42 61 73 65 20 55 70 64  |w...NewsBase Upd|
0005e530  61 74 65 20 74 79 70 65  20 32 0a 2b 32 34 09 41  |ate type 2.+24.A|
0005e540  72 74 69 63 6c 65 20 6e  75 6d 62 65 72 0a 2b 33  |rticle number.+3|
0005e550  32 09 4e 61 6d 65 20 6f  66 20 6e 65 77 73 67 72  |2.Name of newsgr|
0005e560  6f 75 70 20 63 72 65 61  74 65 64 20 6f 72 20 64  |oup created or d|
0005e570  65 6c 65 74 65 64 0a 78  09 46 72 6f 6d 20 66 69  |eleted.x.From fi|
0005e580  65 6c 64 0a 79 09 53 75  62 6a 65 63 74 20 66 69  |eld.y.Subject fi|
0005e590  65 6c 64 00 44 41 54 41  48 00 00 00 4e 65 77 73  |eld.DATAH...News|
0005e5a0  42 61 73 65 20 55 70 64  61 74 65 20 74 79 70 65  |Base Update type|
0005e5b0  20 33 0a 2b 32 34 09 41  72 74 69 63 6c 65 20 6e  | 3.+24.Article n|
0005e5c0  75 6d 62 65 72 0a 2b 33  32 09 4e 61 6d 65 20 6f  |umber.+32.Name o|
0005e5d0  66 20 6e 65 77 73 67 72  6f 75 70 0a 44 41 54 41  |f newsgroup.DATA|
0005e5e0  58 00 00 00 4e 65 77 73  42 61 73 65 20 55 70 64  |X...NewsBase Upd|
0005e5f0  61 74 65 20 74 79 70 65  20 34 20 61 6e 64 20 35  |ate type 4 and 5|
0005e600  0a 2b 32 34 09 55 73 65  72 27 73 20 67 72 6f 75  |.+24.User's grou|
0005e610  70 20 6e 75 6d 62 65 72  0a 2b 33 32 09 55 73 65  |p number.+32.Use|
0005e620  72 20 6e 61 6d 65 0a 78  09 55 73 65 72 20 66 6c  |r name.x.User fl|
0005e630  61 67 73 0a 44 41 54 41  2a 01 00 00 4e 65 77 73  |ags.DATA*...News|
0005e640  42 61 73 65 20 55 70 64  61 74 65 20 74 79 70 65  |Base Update type|
0005e650  20 31 31 0a 2b 32 34 09  55 70 64 61 74 65 20 74  | 11.+24.Update t|
0005e660  79 70 65 20 28 30 20 3d  20 6d 61 69 6c 2c 20 31  |ype (0 = mail, 1|
0005e670  20 3d 20 6e 65 77 73 29  0a 2b 33 32 09 54 72 61  | = news).+32.Tra|
0005e680  6e 73 70 6f 72 74 20 6e  61 6d 65 2c 20 77 68 69  |nsport name, whi|
0005e690  63 68 20 75 70 64 61 74  65 20 61 70 70 6c 69 65  |ch update applie|
0005e6a0  73 20 74 6f 0a 0a 54 68  69 73 20 69 73 20 62 72  |s to..This is br|
0005e6b0  6f 61 64 63 61 73 74 20  62 79 20 4e 65 77 73 62  |oadcast by Newsb|
0005e6c0  61 73 65 20 77 68 65 6e  20 61 20 6e 65 77 20 6f  |ase when a new o|
0005e6d0  75 74 67 6f 69 6e 67 20  6d 61 69 6c 20 6f 72 20  |utgoing mail or |
0005e6e0  6e 65 77 73 20 66 69 6c  65 20 69 73 20 71 75 65  |news file is que|
0005e6f0  75 65 64 2e 20 54 68 69  73 20 69 73 20 74 6f 20  |ued. This is to |
0005e700  70 65 72 6d 69 74 20 65  78 74 65 72 6e 61 6c 20  |permit external |
0005e710  71 75 65 75 65 20 63 6f  6e 74 72 6f 6c 20 61 70  |queue control ap|
0005e720  70 6c 69 63 61 74 69 6f  6e 73 20 74 6f 20 72 65  |plications to re|
0005e730  2d 65 78 61 6d 69 6e 65  20 74 68 65 20 71 75 65  |-examine the que|
0005e740  75 65 20 61 6e 64 20 75  70 64 61 74 65 20 74 68  |ue and update th|
0005e750  65 69 72 20 64 69 73 70  6c 61 79 73 2e 0a 00 00  |eir displays....|
0005e760  44 41 54 41 2d 00 00 00  4e 65 77 73 42 61 73 65  |DATA-...NewsBase|
0005e770  20 55 70 64 61 74 65 20  74 79 70 65 20 31 30 0a  | Update type 10.|
0005e780  6e 6f 20 65 78 74 72 61  20 64 61 74 61 00 00 00  |no extra data...|
0005e790  44 41 54 41 e3 00 00 00  4e 65 77 73 42 61 73 65  |DATA....NewsBase|
0005e7a0  5f 53 74 61 72 74 55 70  20 28 30 29 0a 2b 32 34  |_StartUp (0).+24|
0005e7b0  09 6d 69 6e 69 6d 75 6d  20 76 65 72 73 69 6f 6e  |.minimum version|
0005e7c0  20 6f 66 20 4e 65 77 73  42 61 73 65 20 73 75 70  | of NewsBase sup|
0005e7d0  70 6f 72 74 65 64 0a 0a  42 72 6f 61 64 63 61 73  |ported..Broadcas|
0005e7e0  74 20 62 79 20 61 20 63  6c 69 65 6e 74 20 74 6f  |t by a client to|
0005e7f0  20 69 6e 64 69 63 61 74  65 20 69 74 20 72 65 71  | indicate it req|
0005e800  75 69 72 65 73 20 73 75  70 70 6f 72 74 20 66 72  |uires support fr|
0005e810  6f 6d 20 6e 65 77 73 62  61 73 65 2e 20 49 66 20  |om newsbase. If |
0005e820  6e 6f 20 72 65 73 70 6f  6e 73 65 20 72 65 63 65  |no response rece|
0005e830  69 76 65 64 2c 20 74 68  65 20 63 6c 69 65 6e 74  |ived, the client|
0005e840  20 6d 61 79 20 65 69 74  68 65 72 20 63 6f 6d 70  | may either comp|
0005e850  6c 61 69 6e 2c 20 6f 72  20 61 74 74 65 6d 70 74  |lain, or attempt|
0005e860  20 74 6f 20 73 74 61 72  74 20 6e 65 77 73 62 61  | to start newsba|
0005e870  73 65 2e 00 44 41 54 41  7f 00 00 00 4e 65 77 73  |se..DATA....News|
0005e880  42 61 73 65 5f 53 68 75  74 44 6f 77 6e 20 28 31  |Base_ShutDown (1|
0005e890  30 29 0a 6e 6f 20 65 78  74 72 61 20 64 61 74 61  |0).no extra data|
0005e8a0  0a 0a 49 6e 64 69 63 61  74 65 73 20 74 68 61 74  |..Indicates that|
0005e8b0  20 61 20 63 6c 69 65 6e  74 20 68 61 73 20 66 69  | a client has fi|
0005e8c0  6e 69 73 68 65 64 20 61  20 6e 65 77 73 62 61 73  |nished a newsbas|
0005e8d0  65 20 73 65 73 73 69 6f  6e 2e 20 43 75 72 72 65  |e session. Curre|
0005e8e0  6e 74 6c 79 20 68 61 73  20 6e 6f 20 65 66 66 65  |ntly has no effe|
0005e8f0  63 74 2e 00 44 41 54 41  c7 01 00 00 4e 65 77 73  |ct..DATA....News|
0005e900  42 61 73 65 5f 53 65 74  55 73 65 72 20 28 32 30  |Base_SetUser (20|
0005e910  29 0a 2b 32 34 09 45 6e  63 72 79 70 74 69 6f 6e  |).+24.Encryption|
0005e920  20 74 79 70 65 20 28 30  3d 6e 6f 6e 65 29 0a 2b  | type (0=none).+|
0005e930  33 32 09 55 73 65 72 6e  61 6d 65 20 28 63 6f 6e  |32.Username (con|
0005e940  74 72 6f 6c 2d 74 65 72  6d 69 6e 61 74 65 64 29  |trol-terminated)|
0005e950  0a 6e 09 50 61 73 73 77  6f 72 64 20 28 6f 72 20  |.n.Password (or |
0005e960  6e 75 6c 6c 20 73 74 72  69 6e 67 29 0a 0a 53 65  |null string)..Se|
0005e970  74 73 20 63 75 72 72 65  6e 74 20 75 73 65 72 6e  |ts current usern|
0005e980  61 6d 65 20 66 6f 72 20  74 68 65 20 6e 65 77 73  |ame for the news|
0005e990  62 61 73 65 20 73 65 73  73 69 6f 6e 2e 0a 0a 50  |base session...P|
0005e9a0  61 73 73 77 6f 72 64 20  66 69 65 6c 64 20 69 73  |assword field is|
0005e9b0  20 63 75 72 72 65 6e 74  6c 79 20 69 67 6e 6f 72  | currently ignor|
0005e9c0  65 64 20 62 75 74 20 77  69 6c 6c 20 62 65 20 75  |ed but will be u|
0005e9d0  73 65 64 20 66 6f 72 20  6e 65 74 77 6f 72 6b 20  |sed for network |
0005e9e0  76 65 72 73 69 6f 6e 73  20 6f 66 20 6e 65 77 73  |versions of news|
0005e9f0  62 61 73 65 2e 20 45 6e  63 72 79 70 74 69 6f 6e  |base. Encryption|
0005ea00  20 74 79 70 65 20 69 6e  64 69 63 61 74 65 73 20  | type indicates |
0005ea10  77 68 65 74 68 65 72 20  74 68 65 20 70 61 73 73  |whether the pass|
0005ea20  77 6f 72 64 20 66 69 65  6c 64 20 69 73 20 65 6e  |word field is en|
0005ea30  63 72 79 70 74 65 64 2e  20 49 6e 69 74 69 61 6c  |crypted. Initial|
0005ea40  6c 79 20 6f 6e 6c 79 20  74 79 70 65 20 30 20 28  |ly only type 0 (|
0005ea50  6e 6f 6e 65 29 20 77 69  6c 6c 20 62 65 20 73 75  |none) will be su|
0005ea60  70 70 6f 72 74 65 64 2c  20 62 75 74 20 65 6e 63  |pported, but enc|
0005ea70  72 79 70 74 69 6f 6e 20  77 69 6c 6c 20 62 65 20  |ryption will be |
0005ea80  61 64 64 65 64 20 74 6f  20 61 76 6f 69 64 20 70  |added to avoid p|
0005ea90  61 73 73 69 6e 67 20 70  6c 61 69 6e 74 65 78 74  |assing plaintext|
0005eaa0  20 70 61 73 73 77 6f 72  64 73 20 6f 76 65 72 20  | passwords over |
0005eab0  61 20 6e 65 74 77 6f 72  6b 2e 0a 00 44 41 54 41  |a network...DATA|
0005eac0  6c 00 00 00 4e 65 77 73  42 61 73 65 5f 53 69 74  |l...NewsBase_Sit|
0005ead0  65 49 6e 66 6f 20 28 33  30 29 0a 2b 32 34 09 3c  |eInfo (30).+24.<|
0005eae0  69 74 65 6d 20 6e 75 6d  62 65 72 3d 3e 77 69 6d  |item number=>wim|
0005eaf0  70 5f 75 6d 4e 42 5f 43  6f 6d 33 30 4e 3e 0a 0a  |p_umNB_Com30N>..|
0005eb00  52 65 71 75 65 73 74 73  20 73 69 74 65 20 69 6e  |Requests site in|
0005eb10  66 6f 72 6d 61 74 69 6f  6e 20 66 72 6f 6d 20 4e  |formation from N|
0005eb20  65 77 73 62 61 73 65 2e  44 41 54 41 27 01 00 00  |ewsbase.DATA'...|
0005eb30  4e 65 77 73 42 61 73 65  5f 53 69 74 65 49 6e 66  |NewsBase_SiteInf|
0005eb40  6f 20 69 74 65 6d 73 0a  49 74 65 6d 09 4d 65 61  |o items.Item.Mea|
0005eb50  6e 69 6e 67 0a 23 4c 69  6e 65 0a 30 09 66 75 6c  |ning.#Line.0.ful|
0005eb60  6c 79 2d 71 75 61 6c 69  66 69 65 64 20 68 6f 73  |ly-qualified hos|
0005eb70  74 6e 61 6d 65 0a 31 09  6f 72 67 61 6e 69 7a 61  |tname.1.organiza|
0005eb80  74 69 6f 6e 0a 32 09 63  75 72 72 65 6e 74 20 74  |tion.2.current t|
0005eb90  72 61 6e 73 70 6f 72 74  20 6e 61 6d 65 0a 33 09  |ransport name.3.|
0005eba0  63 75 72 72 65 6e 74 20  74 72 61 6e 73 70 6f 72  |current transpor|
0005ebb0  74 20 74 79 70 65 20 28  65 69 74 68 65 72 20 22  |t type (either "|
0005ebc0  62 61 74 63 68 22 20 6f  72 20 22 64 69 72 65 63  |batch" or "direc|
0005ebd0  74 22 29 0a 34 09 74 69  6d 65 7a 6f 6e 65 0a 35  |t").4.timezone.5|
0005ebe0  09 72 65 6d 6f 74 65 20  68 6f 73 74 6e 61 6d 65  |.remote hostname|
0005ebf0  0a 36 09 6d 61 69 6c 20  68 6f 73 74 6e 61 6d 65  |.6.mail hostname|
0005ec00  20 28 63 61 6e 20 62 65  20 64 69 66 66 65 72 65  | (can be differe|
0005ec10  6e 74 20 66 72 6f 6d 20  30 29 0a 31 30 30 09 75  |nt from 0).100.u|
0005ec20  73 65 72 6e 61 6d 65 20  63 6f 6e 74 72 6f 6c 20  |sername control |
0005ec30  73 74 61 74 75 73 0a 31  30 31 09 64 65 66 61 75  |status.101.defau|
0005ec40  6c 74 20 65 78 70 69 72  79 20 74 69 6d 65 0a 00  |lt expiry time..|
0005ec50  44 41 54 41 a0 00 00 00  4e 65 77 73 42 61 73 65  |DATA....NewsBase|
0005ec60  5f 53 65 74 53 69 74 65  49 6e 66 6f 20 28 34 30  |_SetSiteInfo (40|
0005ec70  29 0a 2b 32 34 09 3c 69  74 65 6d 20 6e 75 6d 62  |).+24.<item numb|
0005ec80  65 72 3d 3e 77 69 6d 70  5f 75 6d 4e 42 5f 43 6f  |er=>wimp_umNB_Co|
0005ec90  6d 33 30 4e 3e 0a 2b 33  32 09 6e 65 77 20 76 61  |m30N>.+32.new va|
0005eca0  6c 75 65 20 73 74 72 69  6e 67 0a 0a 53 65 74 73  |lue string..Sets|
0005ecb0  20 61 20 76 61 6c 75 65  20 69 6e 20 74 68 65 20  | a value in the |
0005ecc0  4e 65 77 73 42 61 73 65  20 73 65 74 74 69 6e 67  |NewsBase setting|
0005ecd0  73 2e 0a 0a 4e 42 2e 20  4e 6f 74 20 61 6c 6c 20  |s...NB. Not all |
0005ece0  69 74 65 6d 73 20 6d 61  79 20 62 65 20 73 65 74  |items may be set|
0005ecf0  44 41 54 41 c0 00 00 00  4e 65 77 73 42 61 73 65  |DATA....NewsBase|
0005ed00  5f 4c 69 73 74 47 72 6f  75 70 73 20 28 31 30 30  |_ListGroups (100|
0005ed10  29 0a 2b 33 32 09 67 72  6f 75 70 20 6e 61 6d 65  |).+32.group name|
0005ed20  20 6f 72 20 70 61 74 74  65 72 6e 0a 0a 41 20 6c  | or pattern..A l|
0005ed30  69 73 74 20 6f 66 20 61  63 74 69 76 65 20 67 72  |ist of active gr|
0005ed40  6f 75 70 73 20 6d 61 74  63 68 69 6e 67 20 74 68  |oups matching th|
0005ed50  65 20 67 69 76 65 6e 20  70 61 74 74 65 72 6e 20  |e given pattern |
0005ed60  69 73 20 72 65 74 75 72  6e 65 64 2e 20 4d 6f 73  |is returned. Mos|
0005ed70  74 20 63 6f 6d 6d 6f 6e  20 75 73 65 20 77 69 6c  |t common use wil|
0005ed80  6c 20 62 65 20 74 6f 20  72 65 74 75 72 6e 20 61  |l be to return a|
0005ed90  6c 6c 20 61 63 74 69 76  65 20 67 72 6f 75 70 73  |ll active groups|
0005eda0  20 28 70 61 74 74 65 72  6e 20 22 2a 22 29 2e 0a  | (pattern "*")..|
0005edb0  44 41 54 41 db 00 00 00  4e 65 77 73 42 61 73 65  |DATA....NewsBase|
0005edc0  5f 4e 65 77 47 72 6f 75  70 73 20 28 31 31 30 29  |_NewGroups (110)|
0005edd0  0a 2b 32 34 09 64 61 74  65 0a 2b 32 38 09 74 69  |.+24.date.+28.ti|
0005ede0  6d 65 20 28 61 73 20 61  20 73 74 72 69 6e 67 20  |me (as a string |
0005edf0  3f 29 0a 0a 52 65 74 75  72 6e 73 20 61 6c 6c 20  |?)..Returns all |
0005ee00  6e 65 77 6c 79 2d 63 72  65 61 74 65 64 20 67 72  |newly-created gr|
0005ee10  6f 75 70 73 20 73 69 6e  63 65 20 64 61 74 65 2f  |oups since date/|
0005ee20  74 69 6d 65 2e 20 44 61  74 65 20 61 6e 64 20 74  |time. Date and t|
0005ee30  69 6d 65 20 66 6f 6c 6c  6f 77 20 4e 4e 54 50 20  |ime follow NNTP |
0005ee40  63 6f 6e 76 65 6e 74 69  6f 6e 20 6f 66 20 79 79  |convention of yy|
0005ee50  6d 6d 64 64 20 61 6e 64  20 68 68 6d 6d 73 73 2c  |mmdd and hhmmss,|
0005ee60  20 74 68 6f 75 67 68 20  69 6e 20 6e 75 6d 65 72  | though in numer|
0005ee70  69 63 20 72 61 74 68 65  72 20 74 68 61 6e 20 61  |ic rather than a|
0005ee80  73 63 69 69 20 66 6f 72  6d 2e 0a 00 44 41 54 41  |scii form...DATA|
0005ee90  e6 01 00 00 4e 65 77 73  42 61 73 65 5f 41 64 64  |....NewsBase_Add|
0005eea0  47 72 6f 75 70 20 28 31  32 30 29 0a 2b 33 32 09  |Group (120).+32.|
0005eeb0  67 72 6f 75 70 20 6e 61  6d 65 20 6f 72 20 70 61  |group name or pa|
0005eec0  74 74 65 72 6e 0a 0a 41  64 64 73 20 67 72 6f 75  |ttern..Adds grou|
0005eed0  70 28 73 29 20 74 6f 20  74 68 65 20 61 63 74 69  |p(s) to the acti|
0005eee0  76 65 20 6c 69 73 74 2e  20 54 68 69 73 20 69 73  |ve list. This is|
0005eef0  20 6e 6f 74 20 74 68 65  20 73 61 6d 65 20 61 73  | not the same as|
0005ef00  20 27 73 75 62 73 63 72  69 62 69 6e 67 27 20 61  | 'subscribing' a|
0005ef10  20 67 72 6f 75 70 20 66  6f 72 20 61 6e 20 69 6e  | group for an in|
0005ef20  64 69 76 69 64 75 61 6c  20 75 73 65 72 20 28 77  |dividual user (w|
0005ef30  68 69 63 68 20 73 68 6f  75 6c 64 20 62 65 20 68  |hich should be h|
0005ef40  61 6e 64 6c 65 64 20 73  6f 6c 65 6c 79 20 62 79  |andled solely by|
0005ef50  20 74 68 65 20 63 6c 69  65 6e 74 20 70 72 6f 67  | the client prog|
0005ef60  72 61 6d 29 20 2d 20 69  74 20 61 64 64 73 20 74  |ram) - it adds t|
0005ef70  68 65 20 67 72 6f 75 70  28 73 29 20 74 6f 20 74  |he group(s) to t|
0005ef80  68 65 20 6e 65 77 73 20  66 65 65 64 2e 20 4d 61  |he news feed. Ma|
0005ef90  79 20 6e 6f 74 20 62 65  20 73 75 70 70 6f 72 74  |y not be support|
0005efa0  65 64 20 6f 72 20 61 70  70 72 6f 70 72 69 61 74  |ed or appropriat|
0005efb0  65 20 66 6f 72 20 61 6c  6c 20 74 72 61 6e 73 70  |e for all transp|
0005efc0  6f 72 74 20 74 79 70 65  73 2e 0a 0a 46 6f 72 20  |ort types...For |
0005efd0  6b 61 39 71 2c 20 69 66  20 6d 6f 72 65 20 74 68  |ka9q, if more th|
0005efe0  61 6e 20 6f 6e 65 20 6e  65 77 73 66 65 65 64 20  |an one newsfeed |
0005eff0  69 73 20 70 72 65 73 65  6e 74 20 28 6d 75 6c 74  |is present (mult|
0005f000  69 70 6c 65 20 78 78 78  47 72 6f 75 70 20 66 69  |iple xxxGroup fi|
0005f010  6c 65 73 29 2c 20 74 68  65 20 67 72 6f 75 70 28  |les), the group(|
0005f020  73 29 20 61 72 65 20 61  64 64 65 64 20 74 6f 20  |s) are added to |
0005f030  74 68 65 20 6c 61 72 67  65 73 74 20 66 69 6c 65  |the largest file|
0005f040  20 28 69 74 20 69 73 20  61 73 73 75 6d 65 64 20  | (it is assumed |
0005f050  74 68 61 74 20 74 68 69  73 20 69 73 20 74 68 65  |that this is the|
0005f060  20 70 72 69 6d 61 72 79  20 73 65 72 76 65 72 29  | primary server)|
0005f070  2e 0a 00 00 44 41 54 41  b3 00 00 00 4e 65 77 73  |....DATA....News|
0005f080  42 61 73 65 5f 52 65 6d  6f 76 65 47 72 6f 75 70  |Base_RemoveGroup|
0005f090  20 28 31 33 30 29 0a 2b  33 32 09 67 72 6f 75 70  | (130).+32.group|
0005f0a0  20 6e 61 6d 65 20 6f 72  20 70 61 74 74 65 72 6e  | name or pattern|
0005f0b0  0a 0a 54 68 65 20 69 6e  76 65 72 73 65 20 6f 66  |..The inverse of|
0005f0c0  20 74 68 65 20 41 64 64  47 72 6f 75 70 20 63 6f  | the AddGroup co|
0005f0d0  6d 6d 61 6e 64 2e 20 4d  61 79 20 6e 6f 74 20 62  |mmand. May not b|
0005f0e0  65 20 73 75 70 70 6f 72  74 65 64 20 6f 72 20 61  |e supported or a|
0005f0f0  70 70 72 6f 70 72 69 61  74 65 20 66 6f 72 20 61  |ppropriate for a|
0005f100  6c 6c 20 74 72 61 6e 73  70 6f 72 74 20 74 79 70  |ll transport typ|
0005f110  65 73 2e 20 57 6f 72 6b  73 20 6f 6b 20 66 6f 72  |es. Works ok for|
0005f120  20 6b 61 39 71 2e 0a 00  44 41 54 41 1e 01 00 00  | ka9q...DATA....|
0005f130  4e 65 77 73 42 61 73 65  5f 45 78 70 69 72 65 47  |NewsBase_ExpireG|
0005f140  72 6f 75 70 20 28 31 34  30 29 0a 2b 32 34 09 65  |roup (140).+24.e|
0005f150  78 70 69 72 79 20 74 69  6d 65 20 69 6e 20 64 61  |xpiry time in da|
0005f160  79 73 20 28 2d 31 20 3d  20 64 65 66 61 75 6c 74  |ys (-1 = default|
0005f170  29 0a 2b 33 32 09 67 72  6f 75 70 20 6e 61 6d 65  |).+32.group name|
0005f180  20 6f 72 20 70 61 74 74  65 72 6e 0a 0a 43 61 75  | or pattern..Cau|
0005f190  73 65 73 20 6e 65 77 73  62 61 73 65 20 74 6f 20  |ses newsbase to |
0005f1a0  70 65 72 66 6f 72 6d 20  61 6e 20 65 78 70 69 72  |perform an expir|
0005f1b0  79 20 72 75 6e 20 6f 6e  20 74 68 65 20 73 70 65  |y run on the spe|
0005f1c0  63 69 66 69 65 64 20 67  72 6f 75 70 28 73 29 2e  |cified group(s).|
0005f1d0  20 4e 6f 72 6d 61 6c 6c  79 20 74 68 69 73 20 66  | Normally this f|
0005f1e0  75 6e 63 74 69 6f 6e 20  69 73 20 70 65 72 66 6f  |unction is perfo|
0005f1f0  72 6d 65 64 20 61 75 74  6f 6d 61 74 69 63 61 6c  |rmed automatical|
0005f200  6c 79 20 62 79 20 4e 65  77 73 42 61 73 65 2c 20  |ly by NewsBase, |
0005f210  62 75 74 20 61 20 63 6f  6d 6d 61 6e 64 20 69 6e  |but a command in|
0005f220  74 65 72 66 61 63 65 20  69 73 20 69 6e 63 6c 75  |terface is inclu|
0005f230  64 65 64 20 66 6f 72 20  63 6f 6d 70 6c 65 74 65  |ded for complete|
0005f240  6e 65 73 73 2e 0a 00 00  44 41 54 41 f6 00 00 00  |ness....DATA....|
0005f250  4e 65 77 73 42 61 73 65  5f 4c 69 73 74 41 72 74  |NewsBase_ListArt|
0005f260  73 20 28 32 30 30 29 0a  2b 32 34 09 66 69 72 73  |s (200).+24.firs|
0005f270  74 20 61 72 74 69 63 6c  65 20 6e 75 6d 62 65 72  |t article number|
0005f280  20 28 30 3d 66 69 72 73  74 29 0a 2b 32 38 09 6c  | (0=first).+28.l|
0005f290  61 73 74 20 61 72 74 69  63 6c 65 20 6e 75 6d 62  |ast article numb|
0005f2a0  65 72 20 28 30 3d 6c 61  73 74 29 0a 2b 33 32 09  |er (0=last).+32.|
0005f2b0  67 72 6f 75 70 20 6e 61  6d 65 0a 0a 52 65 74 75  |group name..Retu|
0005f2c0  72 6e 73 20 61 20 6c 69  73 74 20 6f 66 20 61 72  |rns a list of ar|
0005f2d0  74 69 63 6c 65 20 6e 75  6d 62 65 72 73 20 77 69  |ticle numbers wi|
0005f2e0  74 68 20 61 73 73 6f 63  69 61 74 65 64 20 22 66  |th associated "f|
0005f2f0  72 6f 6d 22 20 61 6e 64  20 22 73 75 62 6a 65 63  |rom" and "subjec|
0005f300  74 22 20 68 65 61 64 65  72 20 66 69 65 6c 64 73  |t" header fields|
0005f310  2e 20 49 6e 74 65 6e 64  65 64 20 66 6f 72 20 64  |. Intended for d|
0005f320  69 73 70 6c 61 79 20 6f  66 20 61 72 74 69 63 6c  |isplay of articl|
0005f330  65 20 63 61 74 61 6c 6f  67 75 65 73 2e 0a 00 00  |e catalogues....|
0005f340  44 41 54 41 6f 01 00 00  4e 65 77 73 42 61 73 65  |DATAo...NewsBase|
0005f350  5f 4c 69 73 74 41 72 74  73 54 68 72 65 61 64 65  |_ListArtsThreade|
0005f360  64 20 28 32 31 30 29 0a  2b 32 34 09 66 69 72 73  |d (210).+24.firs|
0005f370  74 20 61 72 74 69 63 6c  65 20 6e 75 6d 62 65 72  |t article number|
0005f380  20 28 30 3d 66 69 72 73  74 29 0a 2b 32 38 09 6c  | (0=first).+28.l|
0005f390  61 73 74 20 61 72 74 69  63 6c 65 20 6e 75 6d 62  |ast article numb|
0005f3a0  65 72 20 28 30 3d 6c 61  73 74 29 0a 2b 33 32 09  |er (0=last).+32.|
0005f3b0  67 72 6f 75 70 20 6e 61  6d 65 0a 0a 52 65 74 75  |group name..Retu|
0005f3c0  72 6e 73 20 61 20 6c 69  73 74 20 6f 66 20 61 72  |rns a list of ar|
0005f3d0  74 69 63 6c 65 20 6e 75  6d 62 65 72 73 20 77 69  |ticle numbers wi|
0005f3e0  74 68 20 74 68 72 65 61  64 69 6e 67 20 69 6e 66  |th threading inf|
0005f3f0  6f 72 6d 61 74 69 6f 6e  2e 20 52 65 70 6c 69 65  |ormation. Replie|
0005f400  73 20 74 61 6b 65 20 74  68 65 20 66 6f 72 6d 20  |s take the form |
0005f410  6f 66 20 6f 6e 65 20 3c  4e 65 77 73 62 61 73 65  |of one <Newsbase|
0005f420  5f 52 65 70 6c 79 20 32  30 30 3d 3e 77 69 6d 70  |_Reply 200=>wimp|
0005f430  5f 75 6d 4e 42 5f 52 65  70 32 30 30 3e 20 6d 65  |_umNB_Rep200> me|
0005f440  73 73 61 67 65 20 28 66  72 6f 6d 2c 20 73 75 62  |ssage (from, sub|
0005f450  6a 65 63 74 20 61 6e 64  20 6d 65 73 73 61 67 65  |ject and message|
0005f460  2d 49 44 29 20 61 6e 64  20 6f 6e 65 20 3c 4e 65  |-ID) and one <Ne|
0005f470  77 73 62 61 73 65 5f 52  65 70 6c 79 20 32 31 30  |wsbase_Reply 210|
0005f480  3d 3e 77 69 6d 70 5f 75  6d 4e 42 5f 52 65 70 32  |=>wimp_umNB_Rep2|
0005f490  31 30 3e 20 6d 65 73 73  61 67 65 20 66 6f 72 20  |10> message for |
0005f4a0  65 61 63 68 20 61 72 74  69 63 6c 65 2e 20 0a 00  |each article. ..|
0005f4b0  44 41 54 41 0b 01 00 00  4e 65 77 73 42 61 73 65  |DATA....NewsBase|
0005f4c0  5f 47 65 74 41 72 74 69  63 6c 65 20 28 32 32 30  |_GetArticle (220|
0005f4d0  29 0a 2b 32 34 09 61 72  74 69 63 6c 65 20 6e 75  |).+24.article nu|
0005f4e0  6d 62 65 72 0a 2b 33 32  09 66 69 6c 65 20 6e 61  |mber.+32.file na|
0005f4f0  6d 65 0a 0a 52 65 74 75  72 6e 73 20 61 20 66 69  |me..Returns a fi|
0005f500  6c 65 6e 61 6d 65 20 66  6f 72 20 74 68 65 20 72  |lename for the r|
0005f510  65 71 75 65 73 74 65 64  20 61 72 74 69 63 6c 65  |equested article|
0005f520  2e 20 54 68 65 20 66 69  6c 65 6e 61 6d 65 20 72  |. The filename r|
0005f530  65 74 75 72 6e 65 64 20  63 61 6e 20 62 65 20 75  |eturned can be u|
0005f540  73 65 64 20 74 6f 20 64  69 72 65 63 74 6c 79 20  |sed to directly |
0005f550  6c 6f 61 64 20 6f 72 20  63 6f 70 79 20 74 68 65  |load or copy the|
0005f560  20 61 72 74 69 63 6c 65  2c 20 62 75 74 20 73 68  | article, but sh|
0005f570  6f 75 6c 64 20 6e 6f 74  20 62 65 20 73 74 6f 72  |ould not be stor|
0005f580  65 64 20 61 63 72 6f 73  73 20 3c 57 69 6d 70 5f  |ed across <Wimp_|
0005f590  50 6f 6c 6c 3e 73 2c 20  61 73 20 69 74 20 6d 61  |Poll>s, as it ma|
0005f5a0  79 20 73 69 6d 70 6c 79  20 62 65 20 61 20 73 63  |y simply be a sc|
0005f5b0  72 61 70 20 66 69 6c 65  2e 0a 0a 00 44 41 54 41  |rap file....DATA|
0005f5c0  a5 00 00 00 4e 65 77 73  42 61 73 65 5f 4c 6f 63  |....NewsBase_Loc|
0005f5d0  6b 41 72 74 69 63 6c 65  20 28 32 33 30 29 0a 2b  |kArticle (230).+|
0005f5e0  32 34 09 66 69 72 73 74  20 61 72 74 69 63 6c 65  |24.first article|
0005f5f0  20 6e 75 6d 62 65 72 20  28 30 3d 66 69 72 73 74  | number (0=first|
0005f600  29 0a 2b 32 38 09 6c 61  73 74 20 61 72 74 69 63  |).+28.last artic|
0005f610  6c 65 20 6e 75 6d 62 65  72 20 28 30 3d 6c 61 73  |le number (0=las|
0005f620  74 29 0a 2b 33 32 09 67  72 6f 75 70 20 6e 61 6d  |t).+32.group nam|
0005f630  65 0a 0a 4c 6f 63 6b 73  20 6f 6e 65 20 6f 72 20  |e..Locks one or |
0005f640  6d 6f 72 65 20 61 72 74  69 63 6c 65 73 20 74 6f  |more articles to|
0005f650  20 70 72 65 76 65 6e 74  20 65 78 70 69 72 79 2e  | prevent expiry.|
0005f660  0a 00 00 00 44 41 54 41  a7 00 00 00 4e 65 77 73  |....DATA....News|
0005f670  42 61 73 65 5f 55 6e 4c  6f 63 6b 41 72 74 69 63  |Base_UnLockArtic|
0005f680  6c 65 20 28 32 34 30 29  0a 2b 32 34 09 66 69 72  |le (240).+24.fir|
0005f690  73 74 20 61 72 74 69 63  6c 65 20 6e 75 6d 62 65  |st article numbe|
0005f6a0  72 20 28 30 3d 66 69 72  73 74 29 0a 2b 32 38 09  |r (0=first).+28.|
0005f6b0  6c 61 73 74 20 61 72 74  69 63 6c 65 20 6e 75 6d  |last article num|
0005f6c0  62 65 72 20 28 30 3d 6c  61 73 74 29 0a 2b 33 32  |ber (0=last).+32|
0005f6d0  09 67 72 6f 75 70 20 6e  61 6d 65 0a 0a 55 6e 6c  |.group name..Unl|
0005f6e0  6f 63 6b 73 20 6f 6e 65  20 6f 72 20 6d 6f 72 65  |ocks one or more|
0005f6f0  20 61 72 74 69 63 6c 65  73 20 74 6f 20 61 6c 6c  | articles to all|
0005f700  6f 77 20 65 78 70 69 72  79 2e 0a 00 44 41 54 41  |ow expiry...DATA|
0005f710  cf 00 00 00 4e 65 77 73  42 61 73 65 5f 44 65 6c  |....NewsBase_Del|
0005f720  65 74 65 41 72 74 69 63  6c 65 20 28 32 35 30 29  |eteArticle (250)|
0005f730  0a 2b 32 34 09 66 69 72  73 74 20 61 72 74 69 63  |.+24.first artic|
0005f740  6c 65 20 6e 75 6d 62 65  72 20 28 30 3d 66 69 72  |le number (0=fir|
0005f750  73 74 29 0a 2b 32 38 09  6c 61 73 74 20 61 72 74  |st).+28.last art|
0005f760  69 63 6c 65 20 6e 75 6d  62 65 72 20 28 30 3d 6c  |icle number (0=l|
0005f770  61 73 74 29 0a 2b 33 32  09 67 72 6f 75 70 20 6e  |ast).+32.group n|
0005f780  61 6d 65 0a 0a 44 65 6c  65 74 65 73 20 6f 6e 65  |ame..Deletes one|
0005f790  20 6f 72 20 6d 6f 72 65  20 61 72 74 69 63 6c 65  | or more article|
0005f7a0  73 2c 20 69 66 20 61 72  74 69 63 6c 65 73 20 61  |s, if articles a|
0005f7b0  72 65 20 6e 6f 74 20 6c  6f 63 6b 65 64 2c 20 61  |re not locked, a|
0005f7c0  6e 64 20 69 66 20 64 65  6c 65 74 69 6f 6e 20 69  |nd if deletion i|
0005f7d0  73 20 65 6e 61 62 6c 65  64 2e 0a 00 44 41 54 41  |s enabled...DATA|
0005f7e0  85 01 00 00 4e 65 77 73  42 61 73 65 5f 43 6f 70  |....NewsBase_Cop|
0005f7f0  79 41 72 74 69 63 6c 65  20 28 32 37 30 29 0a 2b  |yArticle (270).+|
0005f800  32 34 09 66 69 72 73 74  20 61 72 74 69 63 6c 65  |24.first article|
0005f810  20 6e 75 6d 62 65 72 20  28 30 3d 66 69 72 73 74  | number (0=first|
0005f820  29 0a 2b 32 38 09 6c 61  73 74 20 61 72 74 69 63  |).+28.last artic|
0005f830  6c 65 20 6e 75 6d 62 65  72 20 28 30 3d 6c 61 73  |le number (0=las|
0005f840  74 29 0a 2b 33 32 09 67  72 6f 75 70 20 6e 61 6d  |t).+32.group nam|
0005f850  65 0a 78 09 64 65 73 74  69 6e 61 74 69 6f 6e 20  |e.x.destination |
0005f860  66 6f 6c 64 65 72 20 6e  61 6d 65 0a 0a 4d 6f 76  |folder name..Mov|
0005f870  65 73 20 61 6e 20 61 72  74 69 63 6c 65 20 66 72  |es an article fr|
0005f880  6f 6d 20 6f 6e 65 20 67  72 6f 75 70 20 74 6f 20  |om one group to |
0005f890  61 6e 6f 74 68 65 72 2e  20 54 68 65 20 63 6f 6d  |another. The com|
0005f8a0  6d 61 6e 64 20 69 73 20  6f 6e 6c 79 20 76 61 6c  |mand is only val|
0005f8b0  69 64 20 66 6f 72 20 65  6d 61 69 6c 20 61 72 74  |id for email art|
0005f8c0  69 63 6c 65 73 3b 20 6e  65 77 73 20 61 72 74 69  |icles; news arti|
0005f8d0  63 6c 65 73 20 63 61 6e  6e 6f 74 20 62 65 20 6d  |cles cannot be m|
0005f8e0  6f 76 65 64 2e 20 49 66  20 74 68 65 20 64 65 73  |oved. If the des|
0005f8f0  74 69 6e 61 74 69 6f 6e  20 66 6f 6c 64 65 72 20  |tination folder |
0005f900  64 6f 65 73 20 6e 6f 74  20 65 78 69 73 74 2c 20  |does not exist, |
0005f910  69 74 20 69 73 20 63 72  65 61 74 65 64 20 28 66  |it is created (f|
0005f920  6f 6c 64 65 72 73 20 63  61 6e 20 6f 6e 6c 79 20  |olders can only |
0005f930  62 65 20 63 72 65 61 74  65 64 20 69 6e 20 74 68  |be created in th|
0005f940  65 20 45 6d 61 69 6c 20  6f 72 20 46 6f 6c 64 65  |e Email or Folde|
0005f950  72 73 20 68 69 65 72 61  72 63 68 69 65 73 29 2e  |rs hierarchies).|
0005f960  0a 00 00 00 44 41 54 41  65 01 00 00 4e 65 77 73  |....DATAe...News|
0005f970  42 61 73 65 5f 43 6f 70  79 41 72 74 69 63 6c 65  |Base_CopyArticle|
0005f980  20 28 32 37 30 29 0a 2b  32 34 09 66 69 72 73 74  | (270).+24.first|
0005f990  20 61 72 74 69 63 6c 65  20 6e 75 6d 62 65 72 20  | article number |
0005f9a0  28 30 3d 66 69 72 73 74  29 0a 2b 32 38 09 6c 61  |(0=first).+28.la|
0005f9b0  73 74 20 61 72 74 69 63  6c 65 20 6e 75 6d 62 65  |st article numbe|
0005f9c0  72 20 28 30 3d 6c 61 73  74 29 0a 2b 33 32 09 67  |r (0=last).+32.g|
0005f9d0  72 6f 75 70 20 6e 61 6d  65 0a 78 09 64 65 73 74  |roup name.x.dest|
0005f9e0  69 6e 61 74 69 6f 6e 20  66 6f 6c 64 65 72 20 6e  |ination folder n|
0005f9f0  61 6d 65 0a 0a 43 6f 70  69 65 73 20 61 6e 20 61  |ame..Copies an a|
0005fa00  72 74 69 63 6c 65 20 66  72 6f 6d 20 6f 6e 65 20  |rticle from one |
0005fa10  67 72 6f 75 70 20 74 6f  20 61 6e 6f 74 68 65 72  |group to another|
0005fa20  2e 20 54 68 65 20 63 6f  6d 6d 61 6e 64 20 63 61  |. The command ca|
0005fa30  6e 20 62 65 20 61 70 70  6c 69 65 64 20 74 6f 20  |n be applied to |
0005fa40  6e 65 77 73 20 6f 72 20  6d 61 69 6c 2e 20 49 66  |news or mail. If|
0005fa50  20 74 68 65 20 64 65 73  74 69 6e 61 74 69 6f 6e  | the destination|
0005fa60  20 66 6f 6c 64 65 72 20  64 6f 65 73 20 6e 6f 74  | folder does not|
0005fa70  20 65 78 69 73 74 2c 20  69 74 20 69 73 20 63 72  | exist, it is cr|
0005fa80  65 61 74 65 64 20 28 66  6f 6c 64 65 72 73 20 63  |eated (folders c|
0005fa90  61 6e 20 6f 6e 6c 79 20  62 65 20 63 72 65 61 74  |an only be creat|
0005faa0  65 64 20 69 6e 20 74 68  65 20 45 6d 61 69 6c 20  |ed in the Email |
0005fab0  6f 72 20 46 6f 6c 64 65  72 73 20 68 69 65 72 61  |or Folders hiera|
0005fac0  72 63 68 69 65 73 29 2e  0a 00 00 00 44 41 54 41  |rchies).....DATA|
0005fad0  7d 00 00 00 4e 65 77 73  42 61 73 65 5f 43 61 6e  |}...NewsBase_Can|
0005fae0  63 65 6c 41 72 74 69 63  6c 65 20 28 32 38 30 29  |celArticle (280)|
0005faf0  0a 2b 33 32 09 67 72 6f  75 70 20 6e 61 6d 65 28  |.+32.group name(|
0005fb00  73 29 0a 78 09 6d 65 73  73 61 67 65 2d 49 44 20  |s).x.message-ID |
0005fb10  73 74 72 69 6e 67 0a 0a  53 65 6e 64 73 20 61 20  |string..Sends a |
0005fb20  63 61 6e 63 65 6c 20 6d  65 73 73 61 67 65 20 66  |cancel message f|
0005fb30  6f 72 20 74 68 65 20 67  69 76 65 6e 20 61 72 74  |or the given art|
0005fb40  69 63 6c 65 20 49 44 2e  0a 00 00 00 44 41 54 41  |icle ID.....DATA|
0005fb50  8c 00 00 00 4e 65 77 73  42 61 73 65 5f 50 6f 73  |....NewsBase_Pos|
0005fb60  74 41 72 74 69 63 6c 65  20 28 33 30 30 29 0a 2b  |tArticle (300).+|
0005fb70  33 32 09 66 69 6c 65 20  6e 61 6d 65 0a 0a 50 6f  |32.file name..Po|
0005fb80  73 74 73 20 61 6e 20 61  72 74 69 63 6c 65 2e 20  |sts an article. |
0005fb90  54 68 65 20 66 69 6c 65  20 73 68 6f 75 6c 64 20  |The file should |
0005fba0  63 6f 6e 74 61 69 6e 20  61 6e 20 61 72 74 69 63  |contain an artic|
0005fbb0  6c 65 20 63 6f 6d 70 6c  65 74 65 20 77 69 74 68  |le complete with|
0005fbc0  20 52 46 43 2d 63 6f 6d  70 6c 69 61 6e 74 20 68  | RFC-compliant h|
0005fbd0  65 61 64 65 72 73 2e 0a  44 41 54 41 8e 00 00 00  |eaders..DATA....|
0005fbe0  4e 65 77 73 42 61 73 65  5f 4d 61 69 6c 41 72 74  |NewsBase_MailArt|
0005fbf0  69 63 6c 65 20 28 33 31  30 29 0a 2b 33 32 09 66  |icle (310).+32.f|
0005fc00  69 6c 65 6e 61 6d 65 0a  0a 53 65 6e 64 73 20 61  |ilename..Sends a|
0005fc10  20 6d 61 69 6c 20 6d 65  73 73 61 67 65 2e 20 54  | mail message. T|
0005fc20  68 65 20 66 69 6c 65 20  73 68 6f 75 6c 64 20 63  |he file should c|
0005fc30  6f 6e 74 61 69 6e 20 61  20 6d 65 73 73 61 67 65  |ontain a message|
0005fc40  20 63 6f 6d 70 6c 65 74  65 20 77 69 74 68 20 52  | complete with R|
0005fc50  46 43 2d 63 6f 6d 70 6c  69 61 6e 74 20 68 65 61  |FC-compliant hea|
0005fc60  64 65 72 73 2e 0a 00 00  44 41 54 41 31 01 00 00  |ders....DATA1...|
0005fc70  4e 65 77 73 42 61 73 65  5f 4c 69 73 74 55 73 65  |NewsBase_ListUse|
0005fc80  72 73 20 28 34 30 30 29  0a 2b 33 32 09 70 61 74  |rs (400).+32.pat|
0005fc90  74 65 72 6e 20 28 6e 75  6c 6c 3d 72 65 74 75 72  |tern (null=retur|
0005fca0  6e 20 61 6c 6c 29 0a 0a  52 65 74 75 72 6e 73 20  |n all)..Returns |
0005fcb0  61 20 6c 69 73 74 20 6f  66 20 76 61 6c 69 64 20  |a list of valid |
0005fcc0  75 73 65 72 6e 61 6d 65  73 2c 20 77 69 74 68 20  |usernames, with |
0005fcd0  74 68 65 69 72 20 67 72  6f 75 70 20 6e 75 6d 62  |their group numb|
0005fce0  65 72 73 20 61 6e 64 20  68 6f 6d 65 20 64 69 72  |ers and home dir|
0005fcf0  65 63 74 6f 72 69 65 73  2e 20 54 68 65 20 68 6f  |ectories. The ho|
0005fd00  6d 65 20 64 69 72 65 63  74 6f 72 79 20 69 73 20  |me directory is |
0005fd10  61 20 64 69 72 65 63 74  6f 72 79 20 73 70 65 63  |a directory spec|
0005fd20  69 66 69 63 20 74 6f 20  74 68 61 74 20 75 73 65  |ific to that use|
0005fd30  72 20 77 68 69 63 68 20  63 61 6e 20 62 65 20 75  |r which can be u|
0005fd40  73 65 64 20 74 6f 20 73  74 6f 72 65 20 63 6f 6e  |sed to store con|
0005fd50  66 69 67 75 72 61 74 69  6f 6e 20 69 6e 66 6f 72  |figuration infor|
0005fd60  6d 61 74 69 6f 6e 2c 20  65 67 20 72 65 63 6f 72  |mation, eg recor|
0005fd70  64 20 6f 66 20 73 75 62  73 63 72 69 62 65 64 20  |d of subscribed |
0005fd80  67 72 6f 75 70 73 20 6f  72 20 72 65 61 64 20 61  |groups or read a|
0005fd90  72 74 69 63 6c 65 73 2e  0a 00 00 00 44 41 54 41  |rticles.....DATA|
0005fda0  2e 00 00 00 4e 65 77 73  42 61 73 65 5f 41 64 64  |....NewsBase_Add|
0005fdb0  55 73 65 72 20 28 34 31  30 29 0a 2b 33 32 09 75  |User (410).+32.u|
0005fdc0  73 65 72 20 6e 61 6d 65  0a 0a 00 00 44 41 54 41  |ser name....DATA|
0005fdd0  31 00 00 00 4e 65 77 73  42 61 73 65 5f 44 65 6c  |1...NewsBase_Del|
0005fde0  65 74 65 55 73 65 72 20  28 34 32 30 29 0a 2b 33  |eteUser (420).+3|
0005fdf0  32 09 75 73 65 72 20 6e  61 6d 65 0a 0a 00 00 00  |2.user name.....|
0005fe00  44 41 54 41 8a 00 00 00  4e 65 77 73 42 61 73 65  |DATA....NewsBase|
0005fe10  5f 4d 6f 64 69 66 79 55  73 65 72 20 28 34 33 30  |_ModifyUser (430|
0005fe20  29 0a 2b 32 34 09 3c 66  69 65 6c 64 20 74 6f 20  |).+24.<field to |
0005fe30  6d 6f 64 69 66 79 3d 3e  77 69 6d 70 5f 55 4d 4e  |modify=>wimp_UMN|
0005fe40  42 5f 43 6f 6d 34 33 30  4e 3e 0a 2b 33 32 09 75  |B_Com430N>.+32.u|
0005fe50  73 65 72 20 6e 61 6d 65  0a 78 09 6e 65 77 20 76  |ser name.x.new v|
0005fe60  61 6c 75 65 20 6f 66 20  66 69 65 6c 64 0a 0a 4d  |alue of field..M|
0005fe70  6f 64 69 66 69 65 73 20  74 68 65 20 75 73 65 72  |odifies the user|
0005fe80  20 64 61 74 61 62 61 73  65 2e 00 00 44 41 54 41  | database...DATA|
0005fe90  f9 00 00 00 4e 65 77 73  42 61 73 65 20 55 73 65  |....NewsBase Use|
0005fea0  72 20 66 69 65 6c 64 73  0a 46 69 65 6c 64 09 43  |r fields.Field.C|
0005feb0  6f 6e 74 65 6e 74 73 0a  23 4c 69 6e 65 0a 31 09  |ontents.#Line.1.|
0005fec0  70 61 73 73 77 6f 72 64  0a 32 09 75 73 65 72 20  |password.2.user |
0005fed0  6e 75 6d 62 65 72 0a 33  09 67 72 6f 75 70 20 6e  |number.3.group n|
0005fee0  75 6d 62 65 72 0a 34 09  72 65 61 6c 20 6e 61 6d  |umber.4.real nam|
0005fef0  65 0a 35 09 68 6f 6d 65  20 64 69 72 65 63 74 6f  |e.5.home directo|
0005ff00  72 79 0a 36 09 73 68 65  6c 6c 0a 0a 28 6d 6f 73  |ry.6.shell..(mos|
0005ff10  74 20 6f 66 20 74 68 65  73 65 20 61 72 65 2c 20  |t of these are, |
0005ff20  6f 66 20 63 6f 75 72 73  65 2c 20 6d 65 61 6e 69  |of course, meani|
0005ff30  6e 67 6c 65 73 73 20 66  6f 72 20 52 49 53 43 20  |ngless for RISC |
0005ff40  4f 53 2c 20 62 75 74 20  69 74 20 6d 61 79 20 70  |OS, but it may p|
0005ff50  72 6f 76 65 20 75 73 65  66 75 6c 20 74 6f 20 68  |rove useful to h|
0005ff60  61 76 65 20 74 68 65 6d  20 64 65 66 69 6e 65 64  |ave them defined|
0005ff70  20 66 6f 72 20 73 6f 6d  65 20 70 75 72 70 6f 73  | for some purpos|
0005ff80  65 73 29 2e 0a 00 00 00  44 41 54 41 bf 00 00 00  |es).....DATA....|
0005ff90  4e 65 77 73 42 61 73 65  5f 47 65 74 55 73 65 72  |NewsBase_GetUser|
0005ffa0  49 6e 66 6f 20 28 34 34  30 29 0a 2b 32 34 09 3c  |Info (440).+24.<|
0005ffb0  66 69 65 6c 64 20 74 6f  20 72 65 74 75 72 6e 3d  |field to return=|
0005ffc0  3e 77 69 6d 70 5f 55 4d  4e 42 5f 43 6f 6d 34 33  |>wimp_UMNB_Com43|
0005ffd0  30 4e 3e 20 6f 72 20 30  20 66 6f 72 20 61 6c 6c  |0N> or 0 for all|
0005ffe0  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 0a 2b 33 32  | information.+32|
0005fff0  09 75 73 65 72 20 6e 61  6d 65 20 6f 72 20 70 61  |.user name or pa|
00060000  74 74 65 72 6e 0a 0a 52  65 74 75 72 6e 73 20 69  |ttern..Returns i|
00060010  6e 66 6f 72 6d 61 74 69  6f 6e 20 61 62 6f 75 74  |nformation about|
00060020  20 61 20 75 73 65 72 2e  0a 0a 4e 42 20 54 68 69  | a user...NB Thi|
00060030  73 20 69 73 20 73 75 62  6a 65 63 74 20 74 6f 20  |s is subject to |
00060040  63 68 61 6e 67 65 0a 00  44 41 54 41 99 00 00 00  |change..DATA....|
00060050  4e 65 77 73 42 61 73 65  5f 45 78 61 6d 69 6e 65  |NewsBase_Examine|
00060060  46 6f 72 77 61 72 64 69  6e 67 20 28 34 35 30 29  |Forwarding (450)|
00060070  0a 2b 32 34 09 61 63 74  69 6f 6e 20 28 30 3d 72  |.+24.action (0=r|
00060080  65 61 64 2c 20 31 3d 73  65 74 2c 20 32 3d 63 6c  |ead, 1=set, 2=cl|
00060090  65 61 72 29 0a 2b 33 32  09 75 73 65 72 20 6e 61  |ear).+32.user na|
000600a0  6d 65 0a 78 09 6e 65 77  20 76 61 6c 75 65 20 28  |me.x.new value (|
000600b0  69 66 20 61 63 74 69 6f  6e 3d 31 29 0a 0a 53 65  |if action=1)..Se|
000600c0  74 20 6f 72 20 72 65 61  64 20 66 6f 72 77 61 72  |t or read forwar|
000600d0  64 69 6e 67 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |ding information|
000600e0  0a 00 00 00 44 41 54 41  a3 00 00 00 4e 65 77 73  |....DATA....News|
000600f0  42 61 73 65 5f 45 78 61  6d 69 6e 65 56 61 63 61  |Base_ExamineVaca|
00060100  74 69 6f 6e 20 28 34 36  30 29 0a 2b 32 34 09 61  |tion (460).+24.a|
00060110  63 74 69 6f 6e 20 28 30  3d 72 65 61 64 2c 20 31  |ction (0=read, 1|
00060120  3d 73 65 74 2c 20 32 3d  63 6c 65 61 72 29 0a 2b  |=set, 2=clear).+|
00060130  33 32 09 75 73 65 72 20  6e 61 6d 65 0a 78 09 6d  |32.user name.x.m|
00060140  65 73 73 61 67 65 20 62  6f 64 79 20 66 69 6c 65  |essage body file|
00060150  6e 61 6d 65 20 28 69 66  20 61 63 74 69 6f 6e 3d  |name (if action=|
00060160  31 29 0a 0a 53 65 74 20  6f 72 20 72 65 61 64 20  |1)..Set or read |
00060170  76 61 63 61 74 69 6f 6e  20 6d 65 73 73 61 67 65  |vacation message|
00060180  20 66 69 6c 65 2e 0a 00  44 41 54 41 43 03 00 00  | file...DATAC...|
00060190  4e 65 77 73 42 61 73 65  5f 52 65 45 64 69 74 20  |NewsBase_ReEdit |
000601a0  28 38 30 30 29 0a 2b 32  34 09 66 69 6c 65 20 74  |(800).+24.file t|
000601b0  79 70 65 20 28 30 3d 6d  61 69 6c 2c 20 31 3d 6e  |ype (0=mail, 1=n|
000601c0  65 77 73 29 0a 2b 32 38  09 72 65 66 65 72 65 6e  |ews).+28.referen|
000601d0  63 65 20 6e 75 6d 62 65  72 0a 2b 33 32 09 66 69  |ce number.+32.fi|
000601e0  6c 65 6e 61 6d 65 20 74  6f 20 72 65 2d 65 64 69  |lename to re-edi|
000601f0  74 0a 0a 54 68 69 73 20  6d 65 73 73 61 67 65 20  |t..This message |
00060200  73 68 6f 75 6c 64 20 62  65 20 62 72 6f 61 64 63  |should be broadc|
00060210  61 73 74 20 62 79 20 61  20 71 75 65 75 65 20 63  |ast by a queue c|
00060220  6f 6e 74 72 6f 6c 20 70  72 6f 67 72 61 6d 2c 20  |ontrol program, |
00060230  77 68 65 6e 20 74 68 65  20 75 73 65 72 20 69 6e  |when the user in|
00060240  64 69 63 61 74 65 73 20  74 68 65 79 20 77 69 73  |dicates they wis|
00060250  68 20 74 6f 20 72 65 2d  65 64 69 74 20 61 6e 20  |h to re-edit an |
00060260  61 6c 72 65 61 64 79 2d  71 75 65 75 65 64 20 66  |already-queued f|
00060270  69 6c 65 2e 20 0a 0a 54  68 65 20 72 65 66 65 72  |ile. ..The refer|
00060280  65 6e 63 65 20 6e 75 6d  62 65 72 20 69 73 20 67  |ence number is g|
00060290  65 6e 65 72 61 74 65 64  20 62 79 20 74 68 65 20  |enerated by the |
000602a0  71 75 65 75 65 20 63 6f  6e 74 72 6f 6c 20 70 72  |queue control pr|
000602b0  6f 67 72 61 6d 2c 20 61  6e 64 20 77 69 6c 6c 20  |ogram, and will |
000602c0  62 65 20 72 65 74 75 72  6e 65 64 20 62 79 20 61  |be returned by a|
000602d0  6e 79 20 4e 65 77 73 62  61 73 65 5f 52 65 70 6c  |ny Newsbase_Repl|
000602e0  79 20 6d 65 73 73 61 67  65 20 72 65 71 75 69 72  |y message requir|
000602f0  69 6e 67 20 66 75 72 74  68 65 72 20 61 63 74 69  |ing further acti|
00060300  6f 6e 20 28 73 75 63 68  20 61 73 20 64 65 6c 65  |on (such as dele|
00060310  74 69 6e 67 20 74 68 65  20 6f 72 69 67 69 6e 61  |ting the origina|
00060320  6c 20 71 75 65 75 65 20  65 6e 74 72 79 29 2e 20  |l queue entry). |
00060330  54 68 69 73 20 69 73 20  69 6e 74 65 6e 64 65 64  |This is intended|
00060340  20 74 6f 20 61 69 64 20  75 73 65 20 77 69 74 68  | to aid use with|
00060350  20 6d 75 6c 74 69 70 6c  65 20 72 65 2d 65 64 69  | multiple re-edi|
00060360  74 20 73 65 73 73 69 6f  6e 73 2e 0a 0a 4e 6f 74  |t sessions...Not|
00060370  65 20 74 68 61 74 20 77  68 69 6c 65 20 61 20 72  |e that while a r|
00060380  65 2d 65 64 69 74 20 73  65 73 73 69 6f 6e 20 69  |e-edit session i|
00060390  73 20 69 6e 20 70 72 6f  67 72 65 73 73 2c 20 74  |s in progress, t|
000603a0  68 65 20 6d 65 73 73 61  67 65 20 73 68 6f 75 6c  |he message shoul|
000603b0  64 20 62 65 20 6c 6f 63  6b 65 64 20 69 6e 20 73  |d be locked in s|
000603c0  6f 6d 65 20 77 61 79 20  74 6f 20 70 72 65 76 65  |ome way to preve|
000603d0  6e 74 20 69 74 20 66 72  6f 6d 20 62 65 69 6e 67  |nt it from being|
000603e0  20 73 65 6e 74 2e 20 46  6f 72 20 6b 61 39 71 2c  | sent. For ka9q,|
000603f0  20 61 20 66 69 6c 65 20  63 6f 75 6c 64 20 62 65  | a file could be|
00060400  20 63 72 65 61 74 65 64  20 69 6e 20 74 68 65 20  | created in the |
00060410  22 6c 6f 63 6b 22 20 64  69 72 65 63 74 6f 72 79  |"lock" directory|
00060420  2e 20 4f 74 68 65 72 20  6d 65 74 68 6f 64 73 20  |. Other methods |
00060430  6d 61 79 20 62 65 20 6e  65 65 64 65 64 20 66 6f  |may be needed fo|
00060440  72 20 6f 74 68 65 72 20  74 72 61 6e 73 70 6f 72  |r other transpor|
00060450  74 20 74 79 70 65 73 2e  0a 0a 4e 6f 74 20 75 73  |t types...Not us|
00060460  65 64 20 61 74 20 70 72  65 73 65 6e 74 20 2d 20  |ed at present - |
00060470  6d 61 79 20 62 65 20 64  69 73 63 61 72 64 65 64  |may be discarded|
00060480  2c 20 61 73 20 6d 6f 72  65 20 63 6f 6d 70 6c 69  |, as more compli|
00060490  63 61 74 65 64 20 74 68  61 6e 20 6e 65 63 65 73  |cated than neces|
000604a0  73 61 72 79 20 28 73 65  65 2c 20 65 67 2c 20 21  |sary (see, eg, !|
000604b0  51 65 64 69 74 20 66 6f  72 20 73 69 6d 70 6c 65  |Qedit for simple|
000604c0  72 20 6d 65 74 68 6f 64  29 2e 0a 00 44 41 54 41  |r method)...DATA|
000604d0  10 01 00 00 4e 65 77 73  42 61 73 65 5f 43 6c 69  |....NewsBase_Cli|
000604e0  65 6e 74 50 72 65 73 65  6e 74 20 28 39 30 30 29  |entPresent (900)|
000604f0  0a 6e 6f 20 65 78 74 72  61 20 64 61 74 61 0a 0a  |.no extra data..|
00060500  54 68 69 73 20 69 73 20  73 65 6e 74 20 62 79 20  |This is sent by |
00060510  61 20 63 6c 69 65 6e 74  20 69 6e 20 72 65 70 6c  |a client in repl|
00060520  79 20 74 6f 20 61 20 3c  4e 65 77 73 42 61 73 65  |y to a <NewsBase|
00060530  5f 52 65 70 6c 79 20 43  6c 69 65 6e 74 50 72 65  |_Reply ClientPre|
00060540  73 65 6e 74 3d 3e 77 69  6d 70 5f 75 6d 4e 42 5f  |sent=>wimp_umNB_|
00060550  52 65 70 39 30 30 3e 20  6d 65 73 73 61 67 65 20  |Rep900> message |
00060560  2d 20 62 72 6f 61 64 63  61 73 74 20 62 79 20 6e  |- broadcast by n|
00060570  65 77 73 62 61 73 65 20  70 72 69 6f 72 20 74 6f  |ewsbase prior to|
00060580  20 73 74 61 72 74 69 6e  67 20 61 20 6e 65 77 73  | starting a news|
00060590  72 65 61 64 65 72 2e 0a  0a 54 68 69 73 20 73 68  |reader...This sh|
000605a0  6f 75 6c 64 20 62 65 20  73 65 6e 74 20 69 66 20  |ould be sent if |
000605b0  79 6f 75 20 77 69 73 68  20 74 6f 20 70 72 65 76  |you wish to prev|
000605c0  65 6e 74 20 74 68 65 20  63 6c 69 65 6e 74 20 66  |ent the client f|
000605d0  72 6f 6d 20 6c 6f 61 64  69 6e 67 2e 44 41 54 41  |rom loading.DATA|
000605e0  2b 01 00 00 4e 65 77 73  42 61 73 65 5f 52 65 70  |+...NewsBase_Rep|
000605f0  6c 79 20 73 74 61 74 75  73 0a 53 74 61 74 75 73  |ly status.Status|
00060600  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.Meaning.#Line.0|
00060610  09 43 6f 6d 6d 61 6e 64  20 65 78 65 63 75 74 65  |.Command execute|
00060620  64 20 28 64 61 74 61 20  61 73 20 64 65 73 63 72  |d (data as descr|
00060630  69 62 65 64 29 0a 31 09  43 6f 6d 6d 61 6e 64 20  |ibed).1.Command |
00060640  6f 6b 2c 20 62 75 74 20  63 61 6e 6e 6f 74 20 62  |ok, but cannot b|
00060650  65 20 70 65 72 66 6f 72  6d 65 64 20 66 6f 72 20  |e performed for |
00060660  73 6f 6d 65 20 72 65 61  73 6f 6e 0a 32 09 43 6f  |some reason.2.Co|
00060670  6d 6d 61 6e 64 20 6f 6b  2c 20 62 75 74 20 63 61  |mmand ok, but ca|
00060680  6e 6e 6f 74 20 62 65 20  70 65 72 66 6f 72 6d 65  |nnot be performe|
00060690  64 20 6a 75 73 74 20 6e  6f 77 20 28 74 72 79 20  |d just now (try |
000606a0  6c 61 74 65 72 29 0a 39  09 42 61 64 20 63 6f 6d  |later).9.Bad com|
000606b0  6d 61 6e 64 0a 0a 49 6e  20 63 61 73 65 73 20 31  |mand..In cases 1|
000606c0  2c 20 32 20 61 6e 64 20  39 20 62 6c 6f 63 6b 2b  |, 2 and 9 block+|
000606d0  33 32 20 63 6f 6e 74 61  69 6e 73 20 61 20 64 65  |32 contains a de|
000606e0  73 63 72 69 70 74 69 76  65 20 6d 65 73 73 61 67  |scriptive messag|
000606f0  65 20 64 65 74 61 69 6c  69 6e 67 20 74 68 65 20  |e detailing the |
00060700  65 72 72 6f 72 2e 0a 00  44 41 54 41 89 01 00 00  |error...DATA....|
00060710  4e 65 77 73 42 61 73 65  5f 53 74 61 72 74 75 70  |NewsBase_Startup|
00060720  52 65 70 6c 79 20 28 30  29 0a 2b 32 34 09 61 63  |Reply (0).+24.ac|
00060730  74 75 61 6c 20 4e 65 77  73 42 61 73 65 20 76 65  |tual NewsBase ve|
00060740  72 73 69 6f 6e 0a 2b 32  38 09 66 6c 61 67 73 0a  |rsion.+28.flags.|
00060750  0a 46 6c 61 67 73 20 63  75 72 72 65 6e 74 6c 79  |.Flags currently|
00060760  20 75 6e 64 65 66 69 6e  65 64 20 62 75 74 20 63  | undefined but c|
00060770  6f 75 6c 64 20 69 6e 64  69 63 61 74 65 20 74 6f  |ould indicate to|
00060780  20 74 68 65 20 63 6c 69  65 6e 74 20 73 75 63 68  | the client such|
00060790  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 61 73 20  | information as |
000607a0  77 68 65 74 68 65 72 20  61 72 74 69 63 6c 65 20  |whether article |
000607b0  66 65 74 63 68 20 62 79  20 6e 75 6d 62 65 72 20  |fetch by number |
000607c0  6f 72 20 49 44 20 69 73  20 70 72 65 66 65 72 72  |or ID is preferr|
000607d0  65 64 20 28 69 6e 20 67  65 6e 65 72 61 6c 20 62  |ed (in general b|
000607e0  6f 74 68 20 77 69 6c 6c  20 62 65 20 73 75 70 70  |oth will be supp|
000607f0  6f 72 74 65 64 2c 20 62  75 74 20 6f 6e 65 20 77  |orted, but one w|
00060800  69 6c 6c 20 63 61 72 72  79 20 61 20 67 72 65 61  |ill carry a grea|
00060810  74 65 72 20 73 70 65 65  64 20 70 65 6e 61 6c 74  |ter speed penalt|
00060820  79 29 2e 0a 0a 66 6c 61  67 20 62 69 74 20 30 20  |y)...flag bit 0 |
00060830  3d 20 75 73 65 72 6e 61  6d 65 20 63 6f 6e 74 72  |= username contr|
00060840  6f 6c 20 65 6e 61 62 6c  65 64 2e 0a 0a 4e 65 77  |ol enabled...New|
00060850  73 42 61 73 65 20 77 69  6c 6c 20 61 6c 73 6f 20  |sBase will also |
00060860  62 72 6f 61 64 63 61 73  74 20 74 68 69 73 20 6d  |broadcast this m|
00060870  65 73 73 61 67 65 20 61  75 74 6f 6d 61 74 69 63  |essage automatic|
00060880  61 6c 6c 79 20 6f 6e 20  73 74 61 72 74 75 70 2e  |ally on startup.|
00060890  0a 00 00 00 44 41 54 41  af 00 00 00 4e 65 77 73  |....DATA....News|
000608a0  42 61 73 65 5f 53 68 75  74 64 6f 77 6e 20 28 31  |Base_Shutdown (1|
000608b0  30 29 0a 2b 33 32 09 64  65 73 63 72 69 70 74 69  |0).+32.descripti|
000608c0  76 65 20 73 74 72 69 6e  67 0a 0a 4e 65 77 73 42  |ve string..NewsB|
000608d0  61 73 65 20 61 6c 73 6f  20 62 72 6f 61 64 63 61  |ase also broadca|
000608e0  73 74 73 20 74 68 69 73  20 6d 65 73 73 61 67 65  |sts this message|
000608f0  20 69 66 20 69 74 20 73  68 75 74 73 20 64 6f 77  | if it shuts dow|
00060900  6e 20 64 75 65 20 74 6f  20 61 6e 20 65 72 72 6f  |n due to an erro|
00060910  72 20 6f 72 20 75 73 65  72 20 72 65 71 75 65 73  |r or user reques|
00060920  74 20 28 69 65 20 51 75  69 74 20 66 72 6f 6d 20  |t (ie Quit from |
00060930  74 68 65 20 69 63 6f 6e  62 61 72 20 6d 65 6e 75  |the iconbar menu|
00060940  29 2e 0a 00 44 41 54 41  34 00 00 00 4e 65 77 73  |)...DATA4...News|
00060950  42 61 73 65 5f 53 65 74  55 73 65 72 20 28 32 30  |Base_SetUser (20|
00060960  29 0a 2b 33 32 09 43 75  72 72 65 6e 74 20 75 73  |).+32.Current us|
00060970  65 72 20 6e 61 6d 65 0a  44 41 54 41 36 00 00 00  |er name.DATA6...|
00060980  4e 65 77 73 42 61 73 65  5f 53 69 74 65 49 6e 66  |NewsBase_SiteInf|
00060990  6f 20 28 33 30 29 0a 2b  33 32 09 69 6e 66 6f 72  |o (30).+32.infor|
000609a0  6d 61 74 69 6f 6e 20 73  74 72 69 6e 67 0a 00 00  |mation string...|
000609b0  44 41 54 41 3c 02 00 00  4e 65 77 73 42 61 73 65  |DATA<...NewsBase|
000609c0  5f 47 72 6f 75 70 4c 69  73 74 20 28 31 30 30 29  |_GroupList (100)|
000609d0  0a 2b 32 34 09 6c 6f 77  65 73 74 20 6e 75 6d 62  |.+24.lowest numb|
000609e0  65 72 65 64 20 61 72 74  69 63 6c 65 20 69 6e 20  |ered article in |
000609f0  67 72 6f 75 70 0a 2b 32  38 09 68 69 67 68 65 73  |group.+28.highes|
00060a00  74 20 6e 75 6d 62 65 72  65 64 20 61 72 74 69 63  |t numbered artic|
00060a10  6c 65 20 69 6e 20 67 72  6f 75 70 0a 2b 33 32 09  |le in group.+32.|
00060a20  65 73 74 69 6d 61 74 65  64 20 6e 75 6d 62 65 72  |estimated number|
00060a30  20 6f 66 20 61 72 74 69  63 6c 65 73 20 69 6e 20  | of articles in |
00060a40  67 72 6f 75 70 0a 2b 33  36 09 6e 65 77 73 20 67  |group.+36.news g|
00060a50  72 6f 75 70 20 6e 61 6d  65 0a 6e 09 67 72 6f 75  |roup name.n.grou|
00060a60  70 20 66 6c 61 67 20 73  74 72 69 6e 67 20 28 63  |p flag string (c|
00060a70  6f 6e 74 72 6f 6c 20 74  65 72 6d 69 6e 61 74 65  |ontrol terminate|
00060a80  64 29 0a 0a 53 74 72 65  61 6d 20 6f 66 20 6d 65  |d)..Stream of me|
00060a90  73 73 61 67 65 73 2c 20  6f 6e 65 20 70 65 72 20  |ssages, one per |
00060aa0  61 72 74 69 63 6c 65 2e  20 45 6e 64 20 6f 66 20  |article. End of |
00060ab0  6c 69 73 74 20 69 73 20  73 69 67 6e 61 6c 6c 65  |list is signalle|
00060ac0  64 20 62 79 20 61 20 6e  75 6c 6c 20 73 74 72 69  |d by a null stri|
00060ad0  6e 67 20 61 6e 64 20 6c  6f 77 2f 68 69 67 68 20  |ng and low/high |
00060ae0  61 72 74 69 63 6c 65 73  20 73 65 74 20 74 6f 20  |articles set to |
00060af0  7a 65 72 6f 2e 20 4f 74  68 65 72 77 69 73 65 2c  |zero. Otherwise,|
00060b00  20 61 20 66 69 72 73 74  20 61 72 74 69 63 6c 65  | a first article|
00060b10  20 6e 75 6d 62 65 72 20  6f 66 20 7a 65 72 6f 20  | number of zero |
00060b20  69 6e 64 69 63 61 74 65  73 20 74 68 61 74 20 6e  |indicates that n|
00060b30  6f 20 61 72 74 69 63 6c  65 73 20 61 72 65 20 70  |o articles are p|
00060b40  72 65 73 65 6e 74 20 69  6e 20 74 68 65 20 67 72  |resent in the gr|
00060b50  6f 75 70 2e 0a 0a 43 75  72 72 65 6e 74 6c 79 2c  |oup...Currently,|
00060b60  20 74 68 65 20 6c 6f 63  6b 65 64 20 73 74 61 74  | the locked stat|
00060b70  75 73 20 69 73 20 74 68  65 20 6f 6e 6c 79 20 66  |us is the only f|
00060b80  6c 61 67 20 72 65 74 75  72 6e 65 64 20 2d 20 65  |lag returned - e|
00060b90  69 74 68 65 72 20 22 4c  30 22 20 6f 72 20 22 4c  |ither "L0" or "L|
00060ba0  31 22 20 2d 20 74 6f 20  69 6e 64 69 63 61 74 65  |1" - to indicate|
00060bb0  20 75 6e 6c 6f 63 6b 65  64 20 28 63 6c 69 65 6e  | unlocked (clien|
00060bc0  74 20 69 73 20 61 6c 6c  6f 77 65 64 20 74 6f 20  |t is allowed to |
00060bd0  64 65 6c 65 74 65 20 61  72 74 69 63 6c 65 73 29  |delete articles)|
00060be0  20 6f 72 20 6c 6f 63 6b  65 64 2e 0a 44 41 54 41  | or locked..DATA|
00060bf0  88 00 00 00 4e 65 77 73  42 61 73 65 5f 4e 65 77  |....NewsBase_New|
00060c00  47 72 6f 75 70 4c 69 73  74 20 28 31 31 30 29 0a  |GroupList (110).|
00060c10  2b 33 32 09 6e 77 73 20  67 72 6f 75 70 20 6e 61  |+32.nws group na|
00060c20  6d 65 0a 0a 53 74 72 65  61 6d 20 6f 66 20 6d 65  |me..Stream of me|
00060c30  73 73 61 67 65 73 2c 20  6f 6e 65 20 70 65 72 20  |ssages, one per |
00060c40  61 72 74 69 63 6c 65 2e  20 45 6e 64 20 6f 66 20  |article. End of |
00060c50  6c 69 73 74 20 69 73 20  73 69 67 6e 61 6c 6c 65  |list is signalle|
00060c60  64 20 62 79 20 61 20 6e  75 6c 6c 20 73 74 72 69  |d by a null stri|
00060c70  6e 67 2e 0a 44 41 54 41  cc 00 00 00 4e 65 77 73  |ng..DATA....News|
00060c80  42 61 73 65 5f 41 72 74  4c 69 73 74 20 28 32 30  |Base_ArtList (20|
00060c90  30 29 0a 2b 32 34 09 61  72 74 69 63 6c 65 20 6e  |0).+24.article n|
00060ca0  75 6d 62 65 72 0a 2b 32  38 09 61 72 74 69 63 6c  |umber.+28.articl|
00060cb0  65 20 64 61 74 65 0a 2b  33 32 09 46 72 6f 6d 3a  |e date.+32.From:|
00060cc0  20 66 69 65 6c 64 0a 6e  09 53 75 62 6a 65 63 74  | field.n.Subject|
00060cd0  3a 20 66 69 65 6c 64 0a  6d 09 4d 65 73 73 61 67  |: field.m.Messag|
00060ce0  65 2d 49 44 3a 20 66 69  65 6c 64 0a 0a 53 74 72  |e-ID: field..Str|
00060cf0  65 61 6d 20 6f 66 20 6d  65 73 73 61 67 65 73 2c  |eam of messages,|
00060d00  20 6f 6e 65 20 70 65 72  20 61 72 74 69 63 6c 65  | one per article|
00060d10  2e 20 45 6e 64 20 6f 66  20 6c 69 73 74 20 69 73  |. End of list is|
00060d20  20 73 69 67 6e 61 6c 6c  65 64 20 62 79 20 61 72  | signalled by ar|
00060d30  74 69 63 6c 65 20 6e 75  6d 62 65 72 20 30 2e 0a  |ticle number 0..|
00060d40  44 41 54 41 b4 00 00 00  4e 65 77 73 42 61 73 65  |DATA....NewsBase|
00060d50  5f 41 72 74 4c 69 73 74  49 6e 66 6f 20 28 32 31  |_ArtListInfo (21|
00060d60  30 29 0a 2b 32 34 09 61  72 74 69 63 6c 65 20 6e  |0).+24.article n|
00060d70  75 6d 62 65 72 0a 2b 32  38 09 75 6e 64 65 66 69  |umber.+28.undefi|
00060d80  6e 65 64 0a 2b 33 32 09  72 65 66 65 72 65 6e 63  |ned.+32.referenc|
00060d90  65 20 6c 69 73 74 20 28  73 74 72 69 6e 67 29 0a  |e list (string).|
00060da0  0a 53 74 72 65 61 6d 20  6f 66 20 6d 65 73 73 61  |.Stream of messa|
00060db0  67 65 73 2c 20 6f 6e 65  20 70 65 72 20 61 72 74  |ges, one per art|
00060dc0  69 63 6c 65 2e 20 45 6e  64 20 6f 66 20 6c 69 73  |icle. End of lis|
00060dd0  74 20 69 73 20 73 69 67  6e 61 6c 6c 65 64 20 62  |t is signalled b|
00060de0  79 20 61 72 74 69 63 6c  65 20 6e 75 6d 62 65 72  |y article number|
00060df0  20 30 2e 0a 44 41 54 41  02 01 00 00 4e 65 77 73  | 0..DATA....News|
00060e00  42 61 73 65 5f 47 65 74  41 72 74 69 63 6c 65 20  |Base_GetArticle |
00060e10  28 32 32 30 29 0a 2b 32  34 09 61 72 74 69 63 6c  |(220).+24.articl|
00060e20  65 20 6e 75 6d 62 65 72  0a 2b 32 38 09 61 72 74  |e number.+28.art|
00060e30  69 63 6c 65 20 73 69 7a  65 0a 2b 33 32 09 66 69  |icle size.+32.fi|
00060e40  6c 65 6e 61 6d 65 20 28  63 6f 6e 74 72 6f 6c 20  |lename (control |
00060e50  74 65 72 6d 69 6e 61 74  65 64 29 0a 6e 09 61 72  |terminated).n.ar|
00060e60  74 69 63 6c 65 20 66 6c  61 67 20 73 74 72 69 6e  |ticle flag strin|
00060e70  67 20 28 63 6f 6e 74 72  6f 6c 20 74 65 72 6d 69  |g (control termi|
00060e80  6e 61 74 65 64 29 0a 0a  43 75 72 72 65 6e 74 6c  |nated)..Currentl|
00060e90  79 2c 20 74 68 65 20 6c  6f 63 6b 65 64 20 73 74  |y, the locked st|
00060ea0  61 74 75 73 20 69 73 20  74 68 65 20 6f 6e 6c 79  |atus is the only|
00060eb0  20 66 6c 61 67 20 72 65  74 75 72 6e 65 64 20 2d  | flag returned -|
00060ec0  20 65 69 74 68 65 72 20  22 4c 30 22 20 6f 72 20  | either "L0" or |
00060ed0  22 4c 31 22 20 74 6f 20  69 6e 64 69 63 61 74 65  |"L1" to indicate|
00060ee0  20 75 6e 6c 6f 63 6b 65  64 20 6f 72 20 6c 6f 63  | unlocked or loc|
00060ef0  6b 65 64 2e 0a 0a 00 00  44 41 54 41 dd 00 00 00  |ked.....DATA....|
00060f00  4e 65 77 73 42 61 73 65  5f 55 73 65 72 4c 69 73  |NewsBase_UserLis|
00060f10  74 20 28 34 30 30 29 0a  2b 32 34 09 75 73 65 72  |t (400).+24.user|
00060f20  27 73 20 67 72 6f 75 70  20 6e 75 6d 62 65 72 0a  |'s group number.|
00060f30  2b 32 38 09 66 6c 61 67  73 0a 2b 33 32 09 75 73  |+28.flags.+32.us|
00060f40  65 72 6e 61 6d 65 0a 6e  09 68 6f 6d 65 20 64 69  |ername.n.home di|
00060f50  72 65 63 74 6f 72 79 0a  0a 53 74 72 65 61 6d 20  |rectory..Stream |
00060f60  6f 66 20 6d 65 73 73 61  67 65 73 2c 20 6f 6e 65  |of messages, one|
00060f70  20 70 65 72 20 75 73 65  72 2c 20 77 69 74 68 20  | per user, with |
00060f80  65 6e 64 20 6f 66 20 6c  69 73 74 20 69 6e 64 69  |end of list indi|
00060f90  63 61 74 65 64 20 62 79  20 30 2c 30 2c 22 22 2c  |cated by 0,0,"",|
00060fa0  22 22 0a 0a 46 6c 61 67  73 20 61 72 65 20 64 65  |""..Flags are de|
00060fb0  66 69 6e 65 64 3a 0a 62  69 74 20 30 20 2d 20 70  |fined:.bit 0 - p|
00060fc0  61 73 73 77 6f 72 64 20  69 73 20 72 65 71 75 69  |assword is requi|
00060fd0  72 65 64 2e 0a 00 00 00  44 41 54 41 3d 00 00 00  |red.....DATA=...|
00060fe0  4e 65 77 73 42 61 73 65  5f 47 65 74 55 73 65 72  |NewsBase_GetUser|
00060ff0  49 6e 66 6f 20 28 34 34  30 29 0a 2b 33 32 09 72  |Info (440).+32.r|
00061000  65 71 75 65 73 74 65 64  20 69 6e 66 6f 72 6d 61  |equested informa|
00061010  74 69 6f 6e 0a 00 00 00  44 41 54 41 61 00 00 00  |tion....DATAa...|
00061020  4e 65 77 73 42 61 73 65  5f 45 78 61 6d 69 6e 65  |NewsBase_Examine|
00061030  46 6f 72 77 61 72 64 69  6e 67 20 28 34 35 30 29  |Forwarding (450)|
00061040  0a 2b 33 32 09 75 73 65  72 6e 61 6d 65 0a 78 20  |.+32.username.x |
00061050  20 20 20 20 20 20 66 6f  72 77 61 72 64 69 6e 67  |      forwarding|
00061060  20 61 64 64 72 65 73 73  20 6f 72 20 6e 75 6c 6c  | address or null|
00061070  20 69 66 20 75 6e 73 65  74 00 00 00 44 41 54 41  | if unset...DATA|
00061080  eb 00 00 00 4e 65 77 73  42 61 73 65 5f 45 78 61  |....NewsBase_Exa|
00061090  6d 69 6e 65 56 61 63 61  74 69 6f 6e 20 28 34 36  |mineVacation (46|
000610a0  30 29 0a 2b 33 32 09 75  73 65 72 6e 61 6d 65 0a  |0).+32.username.|
000610b0  78 20 20 20 20 20 20 20  6d 65 73 73 61 67 65 20  |x       message |
000610c0  66 69 6c 65 6e 61 6d 65  2c 20 6f 72 20 6e 75 6c  |filename, or nul|
000610d0  6c 20 69 66 20 75 6e 73  65 74 0a 0a 54 68 65 20  |l if unset..The |
000610e0  74 65 6d 70 6c 61 74 65  20 66 69 6c 65 20 72 65  |template file re|
000610f0  74 75 72 6e 65 64 20 73  68 6f 75 6c 64 20 6e 6f  |turned should no|
00061100  74 20 62 65 20 61 6c 74  65 72 65 64 20 64 69 72  |t be altered dir|
00061110  65 63 74 6c 79 20 62 79  20 61 20 63 6c 69 65 6e  |ectly by a clien|
00061120  74 20 2d 20 66 75 74 75  72 65 20 76 65 72 73 69  |t - future versi|
00061130  6f 6e 73 20 6f 66 20 6e  65 77 73 62 61 73 65 20  |ons of newsbase |
00061140  6d 61 79 20 73 74 6f 72  65 20 74 68 65 20 69 6e  |may store the in|
00061150  66 6f 72 6d 61 74 69 6f  6e 20 64 69 66 66 65 72  |formation differ|
00061160  65 6e 74 6c 79 21 0a 00  44 41 54 41 25 01 00 00  |ently!..DATA%...|
00061170  4e 65 77 73 42 61 73 65  5f 43 6c 69 65 6e 74 50  |NewsBase_ClientP|
00061180  72 65 73 65 6e 74 20 28  39 30 30 29 0a 6e 6f 20  |resent (900).no |
00061190  65 78 74 72 61 20 64 61  74 61 0a 0a 54 68 69 73  |extra data..This|
000611a0  20 4e 65 77 73 62 61 73  65 5f 52 65 70 6c 79 20  | Newsbase_Reply |
000611b0  6d 65 73 73 61 67 65 20  69 73 20 62 72 6f 61 64  |message is broad|
000611c0  63 61 73 74 20 62 79 20  6e 65 77 73 62 61 73 65  |cast by newsbase|
000611d0  20 62 65 66 6f 72 65 20  61 74 74 65 6d 70 74 69  | before attempti|
000611e0  6e 67 20 74 6f 20 73 74  61 72 74 20 61 20 6e 65  |ng to start a ne|
000611f0  77 20 63 6c 69 65 6e 74  20 61 70 70 6c 69 63 61  |w client applica|
00061200  74 69 6f 6e 2e 20 49 66  20 61 20 63 6c 69 65 6e  |tion. If a clien|
00061210  74 20 69 73 20 6c 6f 61  64 65 64 20 61 6e 64 20  |t is loaded and |
00061220  77 69 73 68 65 73 20 74  6f 20 70 72 65 76 65 6e  |wishes to preven|
00061230  74 20 61 6e 6f 74 68 65  72 20 66 72 6f 6d 20 62  |t another from b|
00061240  65 69 6e 67 20 73 74 61  72 74 65 64 2c 20 69 74  |eing started, it|
00061250  20 73 68 6f 75 6c 64 20  72 65 70 6c 79 20 77 69  | should reply wi|
00061260  74 68 20 3c 4e 65 77 73  42 61 73 65 5f 43 6f 6d  |th <NewsBase_Com|
00061270  6d 61 6e 64 20 39 30 30  3d 3e 77 69 6d 70 5f 55  |mand 900=>wimp_U|
00061280  4d 4e 42 5f 43 6f 6d 39  30 30 3e 2e 0a 00 00 00  |MNB_Com900>.....|
00061290  44 41 54 41 1d 01 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
000612a0  57 69 6e 64 6f 77 49 6e  66 6f 20 20 28 26 34 30  |WindowInfo  (&40|
000612b0  30 43 43 29 0a 20 2b 20  32 30 09 77 69 6e 64 6f  |0CC). + 20.windo|
000612c0  77 20 68 61 6e 64 6c 65  0a 20 2b 20 32 34 09 72  |w handle. + 24.r|
000612d0  65 73 65 72 76 65 64 20  28 30 29 0a 20 2b 20 32  |eserved (0). + 2|
000612e0  38 09 73 70 72 69 74 65  20 6e 61 6d 65 20 28 6d  |8.sprite name (m|
000612f0  69 6e 75 73 20 74 68 65  20 69 63 5f 20 62 69 74  |inus the ic_ bit|
00061300  29 0a 20 2b 20 33 36 09  74 69 74 6c 65 20 74 6f  |). + 36.title to|
00061310  20 75 73 65 20 28 61 73  20 73 68 6f 72 74 20 61  | use (as short a|
00061320  73 20 70 6f 73 73 69 62  6c 65 29 0a 20 0a 54 68  |s possible). .Th|
00061330  69 73 20 6d 65 73 73 61  67 65 20 69 73 20 73 65  |is message is se|
00061340  6e 74 20 77 68 65 6e 20  6f 6e 65 20 6f 66 20 79  |nt when one of y|
00061350  6f 75 72 20 77 69 6e 64  6f 77 73 20 69 73 20 69  |our windows is i|
00061360  63 6f 6e 69 73 65 64 2c  20 62 79 20 74 68 65 20  |conised, by the |
00061370  69 63 6f 6e 69 73 65 72  20 74 6f 20 66 69 6e 64  |iconiser to find|
00061380  20 6f 75 74 20 77 68 69  63 68 20 73 70 72 69 74  | out which sprit|
00061390  65 20 61 6e 64 20 6e 61  6d 65 20 74 6f 20 67 69  |e and name to gi|
000613a0  76 65 20 74 68 65 20 69  63 6f 6e 2e 0a 00 00 00  |ve the icon.....|
000613b0  44 41 54 41 1e 01 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
000613c0  57 69 6c 6c 50 72 69 6e  74 20 20 28 26 38 30 31  |WillPrint  (&801|
000613d0  34 31 29 0a 54 68 69 73  20 6d 65 73 73 61 67 65  |41).This message|
000613e0  20 69 73 20 73 65 6e 74  20 74 6f 20 21 50 72 69  | is sent to !Pri|
000613f0  6e 74 65 72 73 20 6f 6e  20 72 65 63 65 69 70 74  |nters on receipt|
00061400  20 6f 66 20 61 20 3c 50  72 69 6e 74 46 69 6c 65  | of a <PrintFile|
00061410  3d 3e 77 69 6d 70 5f 75  6d 38 30 31 34 30 3e 20  |=>wimp_um80140> |
00061420  6d 65 73 73 61 67 65 20  74 6f 20 69 6e 64 69 63  |message to indic|
00061430  61 74 65 20 74 68 61 74  20 70 72 69 6e 74 69 6e  |ate that printin|
00061440  67 20 77 69 6c 6c 20 6f  63 63 75 72 20 64 69 72  |g will occur dir|
00061450  65 63 74 6c 79 20 74 6f  20 50 72 69 6e 74 65 72  |ectly to Printer|
00061460  3a 0a 0a 55 73 65 20 6f  66 20 74 68 69 73 20 6d  |:..Use of this m|
00061470  65 73 73 61 67 65 20 69  73 20 64 65 70 72 65 63  |essage is deprec|
00061480  69 61 74 65 64 2c 20 61  6e 64 20 3c 50 72 69 6e  |iated, and <Prin|
00061490  74 54 79 70 65 4f 64 64  3d 3e 77 69 6d 70 5f 75  |tTypeOdd=>wimp_u|
000614a0  6d 38 30 31 34 35 3e 20  70 72 6f 74 6f 63 6f 6c  |m80145> protocol|
000614b0  20 73 68 6f 75 6c 64 20  62 65 20 75 73 65 64 20  | should be used |
000614c0  69 6e 20 70 72 65 66 65  72 65 6e 63 65 2e 00 00  |in preference...|
000614d0  44 41 54 41 01 03 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
000614e0  50 72 69 6e 74 53 61 76  65 20 20 28 26 38 30 31  |PrintSave  (&801|
000614f0  34 32 29 0a 65 78 74 72  61 20 64 61 74 61 20 69  |42).extra data i|
00061500  6e 20 62 6c 6f 63 6b 20  3a 20 28 61 73 20 3c 44  |n block : (as <D|
00061510  61 74 61 53 61 76 65 3d  3e 57 69 6d 70 5f 75 6d  |ataSave=>Wimp_um|
00061520  31 3e 29 0a 0a 32 30 09  75 6e 75 73 65 64 0a 32  |1>)..20.unused.2|
00061530  34 09 75 6e 75 73 65 64  0a 32 38 09 75 6e 75 73  |4.unused.28.unus|
00061540  65 64 0a 33 32 09 75 6e  75 73 65 64 0a 33 36 09  |ed.32.unused.36.|
00061550  65 73 74 69 6d 61 74 65  64 20 73 69 7a 65 0a 34  |estimated size.4|
00061560  30 09 3c 66 69 6c 65 74  79 70 65 3d 3e 46 69 6c  |0.<filetype=>Fil|
00061570  65 74 79 70 65 73 3a 21  52 6f 6f 74 3e 20 6f 66  |etypes:!Root> of|
00061580  20 64 61 74 61 0a 34 34  09 70 72 6f 70 6f 73 65  | data.44.propose|
00061590  64 20 6c 65 61 66 6e 61  6d 65 2c 20 30 2d 74 65  |d leafname, 0-te|
000615a0  72 6d 69 6e 61 74 65 64  0a 0a 54 68 69 73 20 6d  |rminated..This m|
000615b0  65 73 73 61 67 65 20 69  73 20 73 65 6e 74 20 74  |essage is sent t|
000615c0  6f 20 21 50 72 69 6e 74  65 72 73 20 74 6f 20 69  |o !Printers to i|
000615d0  6e 69 74 69 61 74 65 20  61 20 70 72 69 6e 74 20  |nitiate a print |
000615e0  73 65 73 73 69 6f 6e 2e  20 54 68 69 73 20 73 68  |session. This sh|
000615f0  6f 75 6c 64 20 62 65 20  73 65 6e 74 20 72 65 63  |ould be sent rec|
00061600  6f 72 64 65 64 20 64 65  6c 69 76 65 72 79 20 28  |orded delivery (|
00061610  63 6f 64 65 20 31 38 29  2c 20 61 6e 64 20 69 66  |code 18), and if|
00061620  20 69 74 20 62 6f 75 6e  63 65 73 20 74 68 65 6e  | it bounces then|
00061630  20 79 6f 75 20 73 68 6f  75 6c 64 20 63 6f 6d 70  | you should comp|
00061640  6c 61 69 6e 20 74 68 61  74 20 6e 6f 20 70 72 69  |lain that no pri|
00061650  6e 74 65 72 20 64 72 69  76 65 72 20 69 73 20 70  |nter driver is p|
00061660  72 65 73 65 6e 74 2e 0a  0a 50 72 69 6e 74 65 72  |resent...Printer|
00061670  73 20 77 69 6c 6c 20 72  65 73 70 6f 6e 64 20 77  |s will respond w|
00061680  69 74 68 20 6f 6e 65 20  6f 66 20 3a 0a 20 8f 09  |ith one of :. ..|
00061690  3c 50 72 69 6e 74 45 72  72 6f 72 3d 3e 77 69 6d  |<PrintError=>wim|
000616a0  70 5f 75 6d 38 30 31 34  34 3e 20 69 66 20 74 68  |p_um80144> if th|
000616b0  65 20 70 72 69 6e 74 65  72 20 69 73 20 62 75 73  |e printer is bus|
000616c0  79 2e 0a 20 8f 09 3c 50  72 69 6e 74 46 69 6c 65  |y.. ..<PrintFile|
000616d0  3d 3e 77 69 6d 70 5f 75  6d 38 30 31 34 30 3e 20  |=>wimp_um80140> |
000616e0  28 66 6f 72 20 63 6f 6d  70 61 74 61 62 69 6c 69  |(for compatabili|
000616f0  74 79 20 77 69 74 68 20  52 69 73 63 20 4f 53 20  |ty with Risc OS |
00061700  32 20 61 70 70 6c 69 63  61 74 69 6f 6e 73 29 2e  |2 applications).|
00061710  0a 20 8f 09 3c 50 72 69  6e 74 54 79 70 65 4f 64  |. ..<PrintTypeOd|
00061720  64 3d 3e 77 69 6d 70 5f  75 6d 38 30 31 34 35 3e  |d=>wimp_um80145>|
00061730  20 69 66 20 69 74 20 64  6f 65 73 6e 27 74 20 6b  | if it doesn't k|
00061740  6e 6f 77 20 68 6f 77 20  74 6f 20 70 72 69 6e 74  |now how to print|
00061750  20 74 68 65 20 66 69 6c  65 2e 0a 20 8f 09 3c 44  | the file.. ..<D|
00061760  61 74 61 53 61 76 65 41  63 6b 3d 3e 77 69 6d 70  |ataSaveAck=>wimp|
00061770  5f 75 6d 32 3e 20 69 66  20 74 68 65 20 66 69 6c  |_um2> if the fil|
00061780  65 20 73 68 6f 75 6c 64  20 62 65 20 73 61 76 65  |e should be save|
00061790  64 20 66 6f 72 20 71 75  65 75 65 69 6e 67 20 28  |d for queueing (|
000617a0  6c 61 74 65 72 2c 20 61  20 50 72 69 6e 74 54 79  |later, a PrintTy|
000617b0  70 65 4f 64 64 20 6d 65  73 73 61 67 65 20 77 69  |peOdd message wi|
000617c0  6c 6c 20 62 65 20 62 72  6f 61 64 63 61 73 74 29  |ll be broadcast)|
000617d0  2e 00 00 00 44 41 54 41  96 01 00 00 4d 65 73 73  |....DATA....Mess|
000617e0  61 67 65 5f 50 72 69 6e  74 49 6e 69 74 20 20 28  |age_PrintInit  (|
000617f0  26 38 30 31 34 33 29 0a  54 68 69 73 20 6d 65 73  |&80143).This mes|
00061800  73 61 67 65 20 69 73 20  73 65 6e 74 20 62 79 20  |sage is sent by |
00061810  21 50 72 69 6e 74 65 72  73 20 77 68 65 6e 20 69  |!Printers when i|
00061820  74 20 68 61 73 20 6c 6f  61 64 65 64 2e 20 41 6c  |t has loaded. Al|
00061830  6c 20 6f 74 68 65 72 20  70 72 69 6e 74 65 72 20  |l other printer |
00061840  64 72 69 76 65 72 73 20  73 68 6f 75 6c 64 20 71  |drivers should q|
00061850  75 69 74 20 71 75 69 65  74 6c 79 20 6f 6e 20 72  |uit quietly on r|
00061860  65 63 65 69 76 69 6e 67  20 74 68 69 73 20 6d 65  |eceiving this me|
00061870  73 73 61 67 65 2e 0a 0a  54 68 65 20 50 52 4d 27  |ssage...The PRM'|
00061880  73 20 64 6f 20 6e 6f 74  20 73 70 65 63 69 66 79  |s do not specify|
00061890  20 77 68 61 74 20 73 68  6f 75 6c 64 20 68 61 70  | what should hap|
000618a0  70 65 6e 20 69 66 20 74  68 65 20 61 63 74 69 76  |pen if the activ|
000618b0  65 20 70 72 69 6e 74 65  72 20 64 72 69 76 65 72  |e printer driver|
000618c0  20 69 73 20 27 61 63 74  69 76 65 6c 79 27 20 70  | is 'actively' p|
000618d0  72 69 6e 74 69 6e 67 2e  20 49 20 77 6f 75 6c 64  |rinting. I would|
000618e0  20 72 65 63 6f 6d 6d 65  6e 64 20 74 68 61 74 20  | recommend that |
000618f0  73 75 63 68 20 64 72 69  76 65 72 73 20 73 68 6f  |such drivers sho|
00061900  75 6c 64 20 63 6f 6d 70  6c 61 69 6e 20 61 6e 64  |uld complain and|
00061910  20 73 65 6e 64 20 3c 50  72 65 51 75 69 74 3d 3e  | send <PreQuit=>|
00061920  77 69 6d 70 5f 75 6d 38  3e 20 66 6f 6c 6c 6f 77  |wimp_um8> follow|
00061930  65 64 20 62 79 20 3c 51  75 69 74 3d 3e 77 69 6d  |ed by <Quit=>wim|
00061940  70 5f 75 6d 30 3e 20 74  6f 20 74 68 65 20 6f 72  |p_um0> to the or|
00061950  69 67 69 6e 61 74 6f 72  20 6f 66 20 73 75 63 68  |iginator of such|
00061960  20 6d 65 73 73 61 67 65  73 2e 00 00 44 41 54 41  | messages...DATA|
00061970  c4 01 00 00 4d 65 73 73  61 67 65 5f 50 72 69 6e  |....Message_Prin|
00061980  74 45 72 72 6f 72 20 20  28 26 38 30 31 34 34 29  |tError  (&80144)|
00061990  0a 65 78 74 72 61 20 64  61 74 61 20 69 6e 20 62  |.extra data in b|
000619a0  6c 6f 63 6b 3a 0a 0a 32  30 09 3c 65 72 72 6f 72  |lock:..20.<error|
000619b0  20 6e 75 6d 62 65 72 3d  3e 2e 65 72 72 6f 72 73  | number=>.errors|
000619c0  3e 0a 32 34 09 65 72 72  6f 72 20 6d 65 73 73 61  |>.24.error messa|
000619d0  67 65 0a 0a 54 68 69 73  20 6d 65 73 73 61 67 65  |ge..This message|
000619e0  20 69 73 20 73 65 6e 74  20 62 79 20 21 50 72 69  | is sent by !Pri|
000619f0  6e 74 65 72 73 20 69 66  20 61 6e 20 65 72 72 6f  |nters if an erro|
00061a00  72 20 6f 63 63 75 72 73  20 64 75 72 69 6e 67 20  |r occurs during |
00061a10  70 72 69 6e 74 69 6e 67  2e 20 49 66 20 74 68 65  |printing. If the|
00061a20  20 6c 65 6e 67 74 68 20  6f 66 20 74 68 65 20 62  | length of the b|
00061a30  6c 6f 63 6b 20 69 73 20  32 30 20 74 68 65 6e 20  |lock is 20 then |
00061a40  79 6f 75 20 73 68 6f 75  6c 64 20 61 73 73 75 6d  |you should assum|
00061a50  65 20 74 68 61 74 20 74  68 65 20 70 72 69 6e 74  |e that the print|
00061a60  65 72 20 69 73 20 62 75  73 79 20 61 6e 64 20 67  |er is busy and g|
00061a70  69 76 65 20 61 20 6d 65  73 73 61 67 65 20 74 6f  |ive a message to|
00061a80  20 74 68 61 74 20 65 66  66 65 63 74 20 2d 20 74  | that effect - t|
00061a90  68 69 73 20 69 73 20 6f  6e 6c 79 20 61 70 70 6c  |his is only appl|
00061aa0  69 63 61 62 6c 65 20 74  6f 20 52 69 73 63 20 4f  |icable to Risc O|
00061ab0  53 20 32 2e 0a 23 73 75  62 70 61 67 65 20 65 72  |S 2..#subpage er|
00061ac0  72 6f 72 73 0a 50 72 69  6e 74 45 72 72 6f 72 20  |rors.PrintError |
00061ad0  65 72 72 6f 72 73 0a 65  72 72 6f 72 09 6d 65 61  |errors.error.mea|
00061ae0  6e 69 6e 67 0a 23 4c 69  6e 65 0a 31 09 43 61 6e  |ning.#Line.1.Can|
00061af0  20 6f 6e 6c 79 20 70 72  69 6e 74 20 66 72 6f 6d  | only print from|
00061b00  20 61 70 70 6c 69 63 61  74 69 6f 6e 73 20 77 68  | applications wh|
00061b10  65 6e 20 61 20 70 72 69  6e 74 65 72 20 68 61 73  |en a printer has|
00061b20  20 62 65 65 6e 20 73 65  6c 65 63 74 65 64 2e 0a  | been selected..|
00061b30  44 41 54 41 6c 03 00 00  4d 65 73 73 61 67 65 5f  |DATAl...Message_|
00061b40  50 72 69 6e 74 54 79 70  65 4f 64 64 20 20 28 26  |PrintTypeOdd  (&|
00061b50  38 30 31 34 35 29 0a 65  78 74 72 61 20 64 61 74  |80145).extra dat|
00061b60  61 20 69 6e 20 62 6c 6f  63 6b 3a 0a 0a 34 30 09  |a in block:..40.|
00061b70  3c 66 69 6c 65 74 79 70  65 3d 3e 46 69 6c 65 74  |<filetype=>Filet|
00061b80  79 70 65 73 3a 21 52 6f  6f 74 3e 20 6f 66 20 64  |ypes:!Root> of d|
00061b90  61 74 61 0a 34 34 09 66  69 6c 65 6e 61 6d 65 0a  |ata.44.filename.|
00061ba0  0a 54 68 69 73 20 6d 65  73 73 61 67 65 20 69 73  |.This message is|
00061bb0  20 73 65 6e 74 20 62 79  20 21 50 72 69 6e 74 65  | sent by !Printe|
00061bc0  72 73 20 77 68 65 6e 20  69 74 20 64 6f 65 73 6e  |rs when it doesn|
00061bd0  27 74 20 6b 6e 6f 77 20  68 6f 77 20 74 6f 20 70  |'t know how to p|
00061be0  72 69 6e 74 20 74 68 65  20 66 69 6c 65 2e 20 54  |rint the file. T|
00061bf0  68 65 20 66 69 6c 65 74  79 70 65 20 61 6e 64 20  |he filetype and |
00061c00  66 69 6c 65 6e 61 6d 65  20 63 61 6e 6e 6f 74 20  |filename cannot |
00061c10  62 65 20 72 65 6c 69 65  64 20 6f 6e 20 69 66 20  |be relied on if |
00061c20  77 65 20 68 61 76 65 20  6a 75 73 74 20 63 6f 6d  |we have just com|
00061c30  65 20 66 72 6f 6d 20 61  20 3c 50 72 69 6e 74 53  |e from a <PrintS|
00061c40  61 76 65 3d 3e 77 69 6d  70 5f 75 6d 38 30 31 34  |ave=>wimp_um8014|
00061c50  32 3e 20 6d 65 73 73 61  67 65 2c 20 74 68 6f 75  |2> message, thou|
00061c60  67 68 20 77 68 79 20 74  68 65 20 50 52 4d 27 73  |gh why the PRM's|
00061c70  20 73 74 61 74 65 20 74  68 69 73 2c 20 49 27 6d  | state this, I'm|
00061c80  20 6e 6f 74 20 73 75 72  65 2e 0a 0a 49 66 20 61  | not sure...If a|
00061c90  6e 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 6b 6e  |n application kn|
00061ca0  6f 77 73 20 68 6f 77 20  74 6f 20 70 72 69 6e 74  |ows how to print|
00061cb0  20 74 68 61 74 20 66 69  6c 65 74 79 70 65 20 28  | that filetype (|
00061cc0  64 6f 68 2c 20 68 6f 77  20 63 61 6e 20 79 6f 75  |doh, how can you|
00061cd0  20 64 6f 20 74 68 69 73  20 69 66 20 79 6f 75 20  | do this if you |
00061ce0  63 61 6e 27 74 20 72 65  6c 79 20 6f 6e 20 69 74  |can't rely on it|
00061cf0  20 3f 29 20 74 68 65 6e  20 69 74 20 73 68 6f 75  | ?) then it shou|
00061d00  6c 64 20 72 65 73 70 6f  6e 64 20 77 69 74 68 20  |ld respond with |
00061d10  3c 50 72 69 6e 74 54 79  70 65 4b 6e 6f 77 6e 3d  |<PrintTypeKnown=|
00061d20  3e 77 69 6d 70 5f 75 6d  38 30 31 34 36 3e 20 61  |>wimp_um80146> a|
00061d30  6e 64 20 65 69 74 68 65  72 20 3a 0a 20 8f 09 50  |nd either :. ..P|
00061d40  72 69 6e 74 20 74 68 65  20 66 69 6c 65 20 74 6f  |rint the file to|
00061d50  20 50 72 69 6e 74 65 72  3a 0a 20 8f 09 4f 75 74  | Printer:. ..Out|
00061d60  70 75 74 20 74 68 65 20  66 69 6c 65 20 28 64 6f  |put the file (do|
00061d70  65 73 20 74 68 69 73 20  6d 65 61 6e 20 70 72 69  |es this mean pri|
00061d80  6e 74 20 61 67 61 69 6e  20 3f 29 20 74 6f 20 50  |nt again ?) to P|
00061d90  72 69 6e 74 65 72 24 54  65 6d 70 20 2f 62 65 66  |rinter$Temp /bef|
00061da0  6f 72 65 2f 20 72 65 73  70 6f 6e 64 69 6e 67 20  |ore/ responding |
00061db0  77 69 74 68 20 50 72 69  6e 74 54 79 70 65 4b 6e  |with PrintTypeKn|
00061dc0  6f 77 6e 2e 0a 0a 49 66  20 69 74 20 64 6f 65 73  |own...If it does|
00061dd0  20 6e 6f 74 20 6b 6e 6f  77 20 74 68 65 20 74 79  | not know the ty|
00061de0  70 65 2c 20 74 68 65 6e  20 69 74 20 73 68 6f 75  |pe, then it shou|
00061df0  6c 64 20 69 67 6e 6f 72  65 20 74 68 65 20 6d 65  |ld ignore the me|
00061e00  73 73 61 67 65 20 61 6e  64 20 61 77 61 69 74 20  |ssage and await |
00061e10  61 20 3c 44 61 74 61 53  61 76 65 41 63 6b 3d 3e  |a <DataSaveAck=>|
00061e20  77 69 6d 70 5f 75 6d 32  3e 20 28 77 68 69 63 68  |wimp_um2> (which|
00061e30  20 6d 61 79 20 6e 65 76  65 72 20 61 72 72 69 76  | may never arriv|
00061e40  65 20 69 66 20 61 6e 6f  74 68 65 72 20 61 70 70  |e if another app|
00061e50  6c 69 63 61 74 69 6f 6e  20 6b 6e 6f 77 73 20 68  |lication knows h|
00061e60  6f 77 20 74 6f 20 70 72  69 6e 74 20 74 68 65 20  |ow to print the |
00061e70  66 69 6c 65 29 20 74 6f  20 71 75 65 75 65 20 74  |file) to queue t|
00061e80  68 65 20 66 69 6c 65 20  66 6f 72 20 6c 61 74 65  |he file for late|
00061e90  72 20 70 72 69 6e 74 69  6e 67 2e 0a 44 41 54 41  |r printing..DATA|
00061ea0  a0 00 00 00 4d 65 73 73  61 67 65 5f 50 72 69 6e  |....Message_Prin|
00061eb0  74 54 79 70 65 4b 6e 6f  77 6e 20 20 28 26 38 30  |tTypeKnown  (&80|
00061ec0  31 34 36 29 0a 54 68 69  73 20 6d 65 73 73 61 67  |146).This messag|
00061ed0  65 20 69 73 20 73 65 6e  74 20 74 6f 20 21 50 72  |e is sent to !Pr|
00061ee0  69 6e 74 65 72 73 20 74  6f 20 69 6e 64 69 63 61  |inters to indica|
00061ef0  74 65 20 74 68 61 74 20  61 6e 20 61 70 70 6c 69  |te that an appli|
00061f00  63 61 74 69 6f 6e 20 68  61 73 20 70 72 69 6e 74  |cation has print|
00061f10  65 64 2c 20 6f 72 20 69  73 20 70 72 69 6e 74 69  |ed, or is printi|
00061f20  6e 67 20 28 69 73 20 74  68 61 74 20 72 69 67 68  |ng (is that righ|
00061f30  74 20 3f 29 20 61 20 66  69 6c 65 2e 44 41 54 41  |t ?) a file.DATA|
00061f40  85 00 00 00 4d 65 73 73  61 67 65 5f 53 65 74 50  |....Message_SetP|
00061f50  72 69 6e 74 65 72 20 20  28 26 38 30 31 34 37 29  |rinter  (&80147)|
00061f60  0a 54 68 69 73 20 6d 65  73 73 61 67 65 20 69 73  |.This message is|
00061f70  20 73 65 6e 74 20 62 79  20 21 50 72 69 6e 74 65  | sent by !Printe|
00061f80  72 73 20 74 6f 20 69 6e  64 69 63 61 74 65 20 74  |rs to indicate t|
00061f90  68 61 74 20 74 68 65 20  70 72 69 6e 74 65 72 20  |hat the printer |
00061fa0  73 65 74 74 6e 67 73 20  6f 72 20 73 65 6c 65 63  |settngs or selec|
00061fb0  74 69 6f 6e 20 68 61 73  20 63 68 61 6e 67 65 64  |tion has changed|
00061fc0  2e 00 00 00 44 41 54 41  c7 01 00 00 4d 65 73 73  |....DATA....Mess|
00061fd0  61 67 65 5f 50 53 50 72  69 6e 74 65 72 51 75 65  |age_PSPrinterQue|
00061fe0  72 79 20 20 28 26 38 30  31 34 43 29 0a 65 78 74  |ry  (&8014C).ext|
00061ff0  72 61 20 64 61 74 61 20  69 6e 20 62 6c 6f 63 6b  |ra data in block|
00062000  20 3a 0a 32 30 09 62 75  66 66 65 72 20 61 64 64  | :.20.buffer add|
00062010  72 65 73 73 20 28 6f 72  20 7a 65 72 6f 29 0a 32  |ress (or zero).2|
00062020  34 09 62 75 66 66 65 72  20 73 69 7a 65 0a 0a 54  |4.buffer size..T|
00062030  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 73  |his message is s|
00062040  65 6e 74 20 62 79 20 21  46 6f 6e 74 50 72 69 6e  |ent by !FontPrin|
00062050  74 20 74 6f 20 21 50 72  69 6e 74 65 72 73 20 74  |t to !Printers t|
00062060  6f 20 61 73 6b 20 66 6f  72 20 69 6e 66 6f 72 6d  |o ask for inform|
00062070  61 74 69 6f 6e 2e 20 49  66 20 74 68 65 20 62 75  |ation. If the bu|
00062080  66 66 65 72 20 73 69 7a  65 20 69 73 20 6e 6f 74  |ffer size is not|
00062090  20 7a 65 72 6f 20 74 68  65 6e 20 74 68 65 20 64  | zero then the d|
000620a0  61 74 61 20 70 6c 61 63  65 64 20 69 6e 20 74 68  |ata placed in th|
000620b0  65 20 62 75 66 66 65 72  20 73 68 6f 75 6c 64 20  |e buffer should |
000620c0  62 65 20 3a 0a 8f 09 43  75 72 72 65 6e 74 20 70  |be :...Current p|
000620d0  72 69 6e 74 65 72 20 6e  61 6d 65 0a 8f 09 43 75  |rinter name...Cu|
000620e0  72 72 65 6e 74 20 70 72  69 6e 74 65 72 20 74 79  |rrent printer ty|
000620f0  70 65 0a 8f 09 50 61 74  68 6e 61 6d 65 20 74 6f  |pe...Pathname to|
00062100  20 70 72 69 6e 74 65 72  20 66 6f 6e 74 20 66 69  | printer font fi|
00062110  6c 65 0a 0a 21 50 72 69  6e 74 65 72 73 20 73 68  |le..!Printers sh|
00062120  6f 75 6c 64 20 61 6c 77  61 79 73 20 72 65 73 70  |ould always resp|
00062130  6f 6e 64 20 62 79 20 70  6c 61 63 69 6e 67 20 74  |ond by placing t|
00062140  68 65 20 73 69 7a 65 20  6f 66 20 74 68 65 20 62  |he size of the b|
00062150  75 66 66 65 72 20 69 6e  20 74 68 65 20 62 6c 6f  |uffer in the blo|
00062160  63 6b 20 61 6e 64 20 73  65 6e 64 69 6e 67 20 3c  |ck and sending <|
00062170  50 53 50 72 69 6e 74 65  72 41 63 6b 3d 3e 77 69  |PSPrinterAck=>wi|
00062180  6d 70 5f 75 6d 38 30 31  34 63 3e 00 44 41 54 41  |mp_um8014c>.DATA|
00062190  70 01 00 00 4d 65 73 73  61 67 65 5f 50 53 50 72  |p...Message_PSPr|
000621a0  69 6e 74 65 72 41 63 6b  20 20 28 26 38 30 31 34  |interAck  (&8014|
000621b0  44 29 0a 65 78 74 72 61  20 64 61 74 61 20 69 6e  |D).extra data in|
000621c0  20 62 6c 6f 63 6b 20 3a  0a 32 34 09 62 75 66 66  | block :.24.buff|
000621d0  65 72 20 73 69 7a 65 0a  0a 54 68 69 73 20 6d 65  |er size..This me|
000621e0  73 73 61 67 65 20 69 73  20 73 65 6e 74 20 62 79  |ssage is sent by|
000621f0  20 21 50 72 69 6e 74 65  72 73 20 74 6f 20 21 46  | !Printers to !F|
00062200  6f 6e 74 50 72 69 6e 74  20 74 6f 20 6e 6f 74 69  |ontPrint to noti|
00062210  66 79 20 74 68 61 74 20  69 74 20 68 61 73 20 65  |fy that it has e|
00062220  69 74 68 65 72 20 66 69  6c 6c 65 64 20 69 6e 20  |ither filled in |
00062230  74 68 65 20 62 6c 6f 63  6b 20 72 65 71 75 69 72  |the block requir|
00062240  65 64 20 62 79 20 3c 50  53 50 72 69 6e 74 65 72  |ed by <PSPrinter|
00062250  51 75 65 72 79 3d 3e 77  69 6d 70 5f 75 6d 38 30  |Query=>wimp_um80|
00062260  31 34 63 3e 2c 20 6f 72  20 74 6f 20 74 65 6c 6c  |14c>, or to tell|
00062270  20 69 74 20 74 68 65 20  73 69 7a 65 20 6f 66 20  | it the size of |
00062280  74 68 65 20 62 6c 6f 63  6b 20 72 65 71 75 69 72  |the block requir|
00062290  65 64 2e 0a 0a 49 66 20  21 46 6f 6e 74 50 72 69  |ed...If !FontPri|
000622a0  6e 74 20 64 6f 65 73 20  6e 6f 74 20 72 65 63 65  |nt does not rece|
000622b0  69 76 65 20 74 68 69 73  20 6d 65 73 73 61 67 65  |ive this message|
000622c0  20 74 68 65 6e 20 69 74  20 73 68 6f 75 6c 64 20  | then it should |
000622d0  72 65 70 6f 72 74 20 61  6e 20 65 72 72 6f 72 20  |report an error |
000622e0  61 73 20 6e 6f 20 70 72  69 6e 74 65 72 20 69 73  |as no printer is|
000622f0  20 69 6e 73 74 61 6c 6c  65 64 2e 0a 44 41 54 41  | installed..DATA|
00062300  aa 00 00 00 4d 65 73 73  61 67 65 5f 50 53 50 72  |....Message_PSPr|
00062310  69 6e 74 65 72 4d 6f 64  69 66 69 65 64 20 20 28  |interModified  (|
00062320  26 38 30 31 34 45 29 0a  54 68 69 73 20 6d 65 73  |&8014E).This mes|
00062330  73 61 67 65 20 69 73 20  73 65 6e 74 20 62 79 20  |sage is sent by |
00062340  21 46 6f 6e 74 50 72 69  6e 74 20 77 68 65 6e 20  |!FontPrint when |
00062350  74 68 65 20 66 6f 6e 74  20 6c 69 73 74 20 66 69  |the font list fi|
00062360  6c 65 20 68 61 73 20 63  68 61 6e 67 65 64 2e 20  |le has changed. |
00062370  54 68 65 20 70 72 69 6e  74 65 72 20 64 72 69 76  |The printer driv|
00062380  65 72 20 73 68 6f 75 6c  64 20 72 65 2d 72 65 61  |er should re-rea|
00062390  64 20 74 68 65 20 66 69  6c 65 20 6f 6e 20 72 65  |d the file on re|
000623a0  63 65 69 70 74 2e 00 00  44 41 54 41 d7 00 00 00  |ceipt...DATA....|
000623b0  4d 65 73 73 61 67 65 5f  50 53 50 72 69 6e 74 65  |Message_PSPrinte|
000623c0  72 44 65 66 61 75 6c 74  20 20 28 26 38 30 31 34  |rDefault  (&8014|
000623d0  46 29 0a 54 68 69 73 20  6d 65 73 73 61 67 65 20  |F).This message |
000623e0  69 73 20 73 65 6e 74 20  62 79 20 21 46 6f 6e 74  |is sent by !Font|
000623f0  50 72 69 6e 74 20 77 68  65 6e 20 74 68 65 20 66  |Print when the f|
00062400  6f 6e 74 20 6c 69 73 74  20 66 69 6c 65 20 73 68  |ont list file sh|
00062410  6f 75 6c 64 20 62 65 20  72 65 73 65 74 20 74 6f  |ould be reset to|
00062420  20 69 74 27 73 20 64 65  66 61 75 6c 74 20 73 74  | it's default st|
00062430  61 74 65 2e 20 54 68 65  20 70 72 69 6e 74 65 72  |ate. The printer|
00062440  20 64 72 69 76 65 72 20  73 68 6f 75 6c 64 20 72  | driver should r|
00062450  65 73 70 6f 6e 64 20 77  69 74 68 20 3c 50 53 50  |espond with <PSP|
00062460  72 69 6e 74 65 72 44 65  66 61 75 6c 74 65 64 3d  |rinterDefaulted=|
00062470  3e 77 69 6d 70 5f 75 6d  38 30 31 35 30 3e 2e 00  |>wimp_um80150>..|
00062480  44 41 54 41 b7 00 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
00062490  50 53 50 72 69 6e 74 65  72 44 65 66 61 75 6c 74  |PSPrinterDefault|
000624a0  65 64 20 20 28 26 38 30  31 35 30 29 0a 54 68 69  |ed  (&80150).Thi|
000624b0  73 20 6d 65 73 73 61 67  65 20 69 73 20 73 65 6e  |s message is sen|
000624c0  74 20 62 79 20 21 50 72  69 6e 74 65 72 73 20 77  |t by !Printers w|
000624d0  68 65 6e 20 74 68 65 20  66 6f 6e 74 20 6c 69 73  |hen the font lis|
000624e0  74 20 66 69 6c 65 20 68  61 73 20 62 65 65 6e 20  |t file has been |
000624f0  72 65 73 65 74 2e 20 54  68 69 73 20 69 73 20 75  |reset. This is u|
00062500  73 75 61 6c 6c 79 20 69  6e 20 72 65 73 70 6f 6e  |sually in respon|
00062510  73 65 20 74 6f 20 3c 50  53 50 72 69 6e 74 65 72  |se to <PSPrinter|
00062520  44 65 66 61 75 6c 74 3d  3e 77 69 6d 70 5f 75 6d  |Default=>wimp_um|
00062530  38 30 31 34 46 3e 2e 00  44 41 54 41 ae 00 00 00  |8014F>..DATA....|
00062540  4d 65 73 73 61 67 65 5f  50 53 50 72 69 6e 74 65  |Message_PSPrinte|
00062550  72 4e 6f 74 50 53 20 20  28 26 38 30 31 35 31 29  |rNotPS  (&80151)|
00062560  0a 54 68 69 73 20 6d 65  73 73 61 67 65 20 69 73  |.This message is|
00062570  20 73 65 6e 74 20 62 79  20 21 50 72 69 6e 74 65  | sent by !Printe|
00062580  72 73 20 69 66 20 69 74  20 72 65 63 65 69 76 65  |rs if it receive|
00062590  73 20 3c 50 53 50 72 69  6e 74 65 72 51 75 65 72  |s <PSPrinterQuer|
000625a0  79 3d 3e 77 69 6d 70 5f  75 6d 38 30 31 34 43 3e  |y=>wimp_um8014C>|
000625b0  20 61 6e 64 20 74 68 65  20 63 75 72 72 65 6e 74  | and the current|
000625c0  6c 79 20 73 65 6c 65 63  74 65 64 20 70 72 69 6e  |ly selected prin|
000625d0  74 65 72 20 69 73 20 6e  6f 74 20 70 6f 73 74 73  |ter is not posts|
000625e0  63 72 69 70 74 2e 00 00  44 41 54 41 9c 00 00 00  |cript...DATA....|
000625f0  4d 65 73 73 61 67 65 5f  52 65 73 65 74 50 72 69  |Message_ResetPri|
00062600  6e 74 65 72 20 20 28 26  38 30 31 35 32 29 0a 54  |nter  (&80152).T|
00062610  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 73  |his message is s|
00062620  65 6e 74 20 74 6f 20 21  50 72 69 6e 74 65 72 73  |ent to !Printers|
00062630  20 74 6f 20 65 6e 73 75  72 65 20 74 68 61 74 20  | to ensure that |
00062640  74 68 65 20 70 72 69 6e  74 65 72 20 73 65 74 74  |the printer sett|
00062650  69 6e 67 73 20 61 72 65  20 63 6f 72 72 65 63 74  |ings are correct|
00062660  20 66 6f 72 20 74 68 65  20 63 75 72 72 65 6e 74  | for the current|
00062670  6c 79 20 73 65 6c 65 63  74 65 64 20 70 72 69 6e  |ly selected prin|
00062680  74 65 72 2e 44 41 54 41  64 00 00 00 4d 65 73 73  |ter.DATAd...Mess|
00062690  61 67 65 5f 50 53 49 73  46 6f 6e 74 52 75 6e 6e  |age_PSIsFontRunn|
000626a0  69 6e 67 20 20 28 26 38  30 31 35 33 29 0a 49 66  |ing  (&80153).If|
000626b0  20 21 46 6f 6e 74 50 72  69 6e 74 20 69 73 20 72  | !FontPrint is r|
000626c0  75 6e 6e 69 6e 67 20 69  74 20 77 69 6c 6c 20 61  |unning it will a|
000626d0  63 6b 6e 6f 77 6c 65 64  67 65 20 74 68 69 73 20  |cknowledge this |
000626e0  6d 65 73 73 61 67 65 2e  44 41 54 41 1c 07 00 00  |message.DATA....|
000626f0  45 78 74 65 72 6e 61 6c  20 45 64 69 74 20 63 6c  |External Edit cl|
00062700  69 65 6e 74 73 0a 54 68  65 20 63 6c 69 65 6e 74  |ients.The client|
00062710  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 69 73 20  | application is |
00062720  64 65 66 69 6e 65 64 20  61 73 20 74 68 61 74 20  |defined as that |
00062730  77 68 69 63 68 20 69 6e  69 74 69 61 74 65 73 20  |which initiates |
00062740  74 68 65 20 65 64 69 74  69 6e 67 20 73 65 73 73  |the editing sess|
00062750  69 6f 6e 2c 20 69 65 20  74 68 61 74 20 77 68 69  |ion, ie that whi|
00062760  63 68 20 61 73 6b 73 20  74 68 65 20 65 64 69 74  |ch asks the edit|
00062770  6f 72 20 66 6f 72 20 61  20 6e 65 77 20 73 65 73  |or for a new ses|
00062780  73 69 6f 6e 2e 0a 0a 54  68 65 20 63 6c 69 65 6e  |sion...The clien|
00062790  74 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 64 65  |t application de|
000627a0  63 69 64 65 73 20 28 75  73 75 61 6c 6c 79 20 61  |cides (usually a|
000627b0  74 20 74 68 65 20 72 65  71 75 65 73 74 20 6f 66  |t the request of|
000627c0  20 74 68 65 20 75 73 65  72 29 20 74 68 61 74 20  | the user) that |
000627d0  73 6f 6d 65 20 64 61 74  61 20 6e 65 65 64 73 20  |some data needs |
000627e0  74 6f 20 62 65 20 65 64  69 74 65 64 2e 20 55 6e  |to be edited. Un|
000627f0  61 62 6c 65 20 74 6f 20  73 75 70 70 6c 79 20 74  |able to supply t|
00062800  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 74 73  |his function its|
00062810  65 6c 66 2c 20 69 74 20  62 72 6f 61 64 63 61 73  |elf, it broadcas|
00062820  74 73 20 74 6f 20 61 6c  6c 20 6f 74 68 65 72 20  |ts to all other |
00062830  61 70 70 6c 69 63 61 74  69 6f 6e 73 20 72 65 71  |applications req|
00062840  75 65 73 74 69 6e 67 20  61 6e 20 45 78 74 65 72  |uesting an Exter|
00062850  6e 61 6c 20 45 64 69 74  69 6e 67 20 73 65 73 73  |nal Editing sess|
00062860  69 6f 6e 20 28 3c 45 64  69 74 52 71 3d 3e 57 69  |ion (<EditRq=>Wi|
00062870  6d 70 5f 55 4d 34 35 64  38 30 3e 29 2e 0a 0a 49  |mp_UM45d80>)...I|
00062880  66 20 6e 6f 20 72 65 70  6c 79 20 69 73 20 72 65  |f no reply is re|
00062890  63 69 65 76 65 64 20 28  74 68 65 20 6d 65 73 73  |cieved (the mess|
000628a0  61 67 65 20 62 6f 75 6e  63 65 73 29 2c 20 74 68  |age bounces), th|
000628b0  65 6e 20 74 68 65 20 63  6c 69 65 6e 74 20 6d 61  |en the client ma|
000628c0  79 20 74 61 6b 65 20 61  6e 79 20 61 70 70 72 6f  |y take any appro|
000628d0  70 72 69 61 74 65 20 61  63 74 69 6f 6e 20 28 66  |priate action (f|
000628e0  6f 72 20 65 78 61 6d 70  6c 65 2c 20 72 75 6e 20  |or example, run |
000628f0  61 6e 20 65 64 69 74 6f  72 20 28 55 73 69 6e 67  |an editor (Using|
00062900  20 74 68 65 20 3c 41 6c  69 61 73 20 76 61 72 69  | the <Alias vari|
00062910  61 62 6c 65 3d 3e 57 69  6d 70 5f 55 4d 45 78 74  |able=>Wimp_UMExt|
00062920  45 64 69 74 56 61 72 69  61 62 6c 65 3e 29 20 61  |EditVariable>) a|
00062930  6e 64 20 74 68 65 6e 20  72 65 2d 62 72 6f 61 64  |nd then re-broad|
00062940  63 61 73 74 20 74 68 65  20 72 65 71 75 65 73 74  |cast the request|
00062950  29 2c 20 62 75 74 20 69  66 20 74 68 65 20 65 64  |), but if the ed|
00062960  69 74 20 69 73 20 6e 6f  74 20 70 6f 73 73 69 62  |it is not possib|
00062970  6c 65 2c 20 74 68 65 20  63 6c 69 65 6e 74 20 77  |le, the client w|
00062980  69 6c 6c 20 69 6e 66 6f  72 6d 20 74 68 65 20 75  |ill inform the u|
00062990  73 65 72 20 77 69 74 68  20 61 6e 20 65 72 72 6f  |ser with an erro|
000629a0  72 20 6d 65 73 73 61 67  65 20 69 6e 64 69 63 61  |r message indica|
000629b0  74 69 6e 67 20 74 68 61  74 20 74 68 65 20 65 64  |ting that the ed|
000629c0  69 74 20 69 73 20 6e 6f  74 20 70 6f 73 73 69 62  |it is not possib|
000629d0  6c 65 2e 0a 0a 49 66 20  61 20 72 65 70 6c 79 20  |le...If a reply |
000629e0  69 73 20 72 65 63 65 69  76 65 64 20 28 3c 45 64  |is received (<Ed|
000629f0  69 74 41 63 6b 3d 3e 57  69 6d 70 5f 55 4d 34 35  |itAck=>Wimp_UM45|
00062a00  64 38 31 3e 29 2c 20 74  68 65 6e 20 61 20 77 69  |d81>), then a wi|
00062a10  6e 64 6f 77 20 77 69 6c  6c 20 68 61 76 65 20 62  |ndow will have b|
00062a20  65 65 6e 20 6f 70 65 6e  65 64 2c 20 61 6e 64 20  |een opened, and |
00062a30  74 68 65 20 75 73 65 72  20 6d 61 79 20 6e 6f 77  |the user may now|
00062a40  20 65 64 69 74 20 74 68  65 20 28 62 6c 61 6e 6b  | edit the (blank|
00062a50  29 20 64 61 74 61 20 69  6e 20 74 68 69 73 20 77  |) data in this w|
00062a60  69 6e 64 6f 77 2e 20 54  68 65 20 63 6c 69 65 6e  |indow. The clien|
00062a70  74 20 6e 6f 77 20 68 61  73 20 74 68 65 20 66 6f  |t now has the fo|
00062a80  6c 6c 6f 77 69 6e 67 20  6f 70 74 69 6f 6e 73 3a  |llowing options:|
00062a90  0a 0a 8f 09 42 79 20 73  74 61 72 74 69 6e 67 20  |....By starting |
00062aa0  61 20 64 61 74 61 20 74  72 61 6e 73 66 65 72 20  |a data transfer |
00062ab0  74 6f 20 74 68 65 20 65  64 69 74 6f 72 20 28 3c  |to the editor (<|
00062ac0  45 64 69 74 44 61 74 61  53 61 76 65 3d 3e 57 69  |EditDataSave=>Wi|
00062ad0  6d 70 5f 55 4d 34 35 64  38 34 3e 29 2c 20 74 68  |mp_UM45d84>), th|
00062ae0  65 20 63 6c 69 65 6e 74  20 63 61 6e 20 69 6e 73  |e client can ins|
00062af0  65 72 74 20 73 6f 6d 65  20 64 61 74 61 20 61 74  |ert some data at|
00062b00  20 74 68 65 20 90 63 75  72 72 65 6e 74 20 20 70  | the .current  p|
00062b10  6f 73 69 74 69 6f 6e 91  20 69 6e 20 74 68 65 20  |osition. in the |
00062b20  65 64 69 74 65 64 20 64  61 74 61 3b 20 74 68 69  |edited data; thi|
00062b30  73 20 63 61 6e 20 62 65  20 64 6f 6e 65 20 61 74  |s can be done at|
00062b40  20 61 6e 79 20 74 69 6d  65 2c 20 62 75 74 20 69  | any time, but i|
00062b50  73 20 6d 61 69 6e 6c 79  20 69 6e 74 65 6e 64 65  |s mainly intende|
00062b60  64 20 74 6f 20 73 75 70  70 6c 79 20 61 6e 20 69  |d to supply an i|
00062b70  6e 69 74 69 61 6c 20 63  68 75 6e 6b 20 6f 66 20  |nitial chunk of |
00062b80  64 61 74 61 20 74 6f 20  62 65 20 65 64 69 74 65  |data to be edite|
00062b90  64 2e 20 46 6f 72 20 65  78 61 6d 70 6c 65 2c 20  |d. For example, |
00062ba0  61 20 63 6f 6d 70 69 6c  65 72 20 6d 69 67 68 74  |a compiler might|
00062bb0  20 6d 61 6b 65 20 45 64  69 74 20 64 69 73 70 6c  | make Edit displ|
00062bc0  61 79 20 61 20 73 6f 75  72 63 65 20 63 6f 64 65  |ay a source code|
00062bd0  20 66 69 6c 65 20 69 66  20 61 6e 20 65 72 72 6f  | file if an erro|
00062be0  72 20 68 61 73 20 62 65  65 6e 20 66 6f 75 6e 64  |r has been found|
00062bf0  20 64 75 72 69 6e 67 20  63 6f 6d 70 69 6c 61 74  | during compilat|
00062c00  69 6f 6e 2e 0a 0a 8f 09  42 79 20 73 65 6e 64 69  |ion.....By sendi|
00062c10  6e 67 20 61 6e 20 61 70  70 72 6f 70 72 69 61 74  |ng an appropriat|
00062c20  65 20 6d 65 73 73 61 67  65 20 28 3c 45 64 69 74  |e message (<Edit|
00062c30  43 75 72 73 6f 72 3d 3e  57 69 6d 70 5f 55 4d 34  |Cursor=>Wimp_UM4|
00062c40  35 64 38 35 3e 29 2c 20  74 68 65 20 63 6c 69 65  |5d85>), the clie|
00062c50  6e 74 20 63 61 6e 20 73  65 74 20 61 20 73 65 6c  |nt can set a sel|
00062c60  65 63 74 69 6f 6e 20 6f  72 20 63 75 72 73 6f 72  |ection or cursor|
00062c70  20 70 6f 73 69 74 69 6f  6e 20 69 6e 20 74 68 65  | position in the|
00062c80  20 65 64 69 74 65 64 20  64 61 74 61 2e 20 46 6f  | edited data. Fo|
00062c90  72 20 65 78 61 6d 70 6c  65 2c 20 74 68 65 20 63  |r example, the c|
00062ca0  6f 6d 70 69 6c 65 72 20  6d 69 67 68 74 20 68 69  |ompiler might hi|
00062cb0  67 68 6c 69 67 68 74 20  74 68 65 20 6c 69 6e 65  |ghlight the line|
00062cc0  20 6f 66 20 63 6f 64 65  20 63 6f 6e 74 61 69 6e  | of code contain|
00062cd0  69 6e 67 20 74 68 65 20  65 72 72 6f 72 2e 0a 0a  |ing the error...|
00062ce0  8f 09 41 6e 6f 74 68 65  72 20 6d 65 73 73 61 67  |..Another messag|
00062cf0  65 20 28 3c 45 64 69 74  52 65 74 75 72 6e 3d 3e  |e (<EditReturn=>|
00062d00  57 69 6d 70 5f 55 4d 34  35 64 38 32 3e 29 20 6d  |Wimp_UM45d82>) m|
00062d10  61 79 20 62 65 20 73 65  6e 74 20 62 79 20 74 68  |ay be sent by th|
00062d20  65 20 63 6c 69 65 6e 74  20 61 74 20 61 6e 79 20  |e client at any |
00062d30  74 69 6d 65 20 74 6f 20  72 65 71 75 65 73 74 20  |time to request |
00062d40  74 68 61 74 20 74 68 65  20 64 61 74 61 20 62 65  |that the data be|
00062d50  20 72 65 74 75 72 6e 65  64 2e 20 46 6f 72 20 65  | returned. For e|
00062d60  78 61 6d 70 6c 65 2c 20  74 68 65 20 63 6f 6d 70  |xample, the comp|
00062d70  69 6c 65 72 20 63 6f 75  6c 64 20 69 6e 63 6c 75  |iler could inclu|
00062d80  64 65 20 61 20 62 75 74  74 6f 6e 2f 6d 65 6e 75  |de a button/menu|
00062d90  20 6f 70 74 69 6f 6e 20  73 6f 6d 65 77 68 65 72  | option somewher|
00062da0  65 20 77 68 69 63 68 20  73 61 79 73 20 27 72 65  |e which says 're|
00062db0  63 6f 6d 70 69 6c 65 27  2c 20 77 68 69 63 68 20  |compile', which |
00062dc0  77 69 6c 6c 20 61 75 74  6f 6d 61 74 69 63 61 6c  |will automatical|
00062dd0  6c 79 20 72 65 74 72 69  65 76 65 20 74 68 65 20  |ly retrieve the |
00062de0  63 6f 64 65 20 62 65 69  6e 67 20 65 64 69 74 65  |code being edite|
00062df0  64 20 61 6e 64 20 72 65  63 6f 6d 70 69 6c 65 20  |d and recompile |
00062e00  69 74 2e 0a 44 41 54 41  db 04 00 00 45 78 74 65  |it..DATA....Exte|
00062e10  72 6e 61 6c 20 45 64 69  74 20 65 64 69 74 6f 72  |rnal Edit editor|
00062e20  73 0a 54 68 65 20 65 64  69 74 6f 72 20 61 70 70  |s.The editor app|
00062e30  6c 69 63 61 74 69 6f 6e  20 69 73 20 64 65 66 69  |lication is defi|
00062e40  6e 65 64 20 61 73 20 74  68 61 74 20 77 68 69 63  |ned as that whic|
00062e50  68 20 61 63 63 65 70 74  73 20 65 64 69 74 69 6e  |h accepts editin|
00062e60  67 20 73 65 73 73 69 6f  6e 20 6d 65 73 73 61 67  |g session messag|
00062e70  65 73 2c 20 69 65 20 74  68 61 74 20 77 69 74 68  |es, ie that with|
00062e80  69 6e 20 77 68 69 63 68  20 74 68 65 20 65 64 69  |in which the edi|
00062e90  74 69 6e 67 20 6f 66 20  74 68 65 20 6f 62 6a 65  |ting of the obje|
00062ea0  63 74 20 74 61 6b 65 73  20 70 6c 61 63 65 2e 0a  |ct takes place..|
00062eb0  0a 55 70 6f 6e 20 72 65  63 65 69 70 74 20 6f 66  |.Upon receipt of|
00062ec0  20 61 6e 20 65 78 74 65  72 6e 61 6c 20 65 64 69  | an external edi|
00062ed0  74 20 72 65 71 75 65 73  74 20 62 72 6f 61 64 63  |t request broadc|
00062ee0  61 73 74 20 28 3c 45 64  69 74 52 71 3d 3e 57 69  |ast (<EditRq=>Wi|
00062ef0  6d 70 5f 55 4d 34 35 64  38 30 3e 29 2c 20 74 68  |mp_UM45d80>), th|
00062f00  65 20 65 64 69 74 6f 72  20 63 68 65 63 6b 73 20  |e editor checks |
00062f10  74 68 65 20 3c 64 61 74  61 20 74 79 70 65 3d 3e  |the <data type=>|
00062f20  77 69 6d 70 5f 55 4d 45  78 74 45 64 69 74 44 61  |wimp_UMExtEditDa|
00062f30  74 61 74 79 70 65 73 3e  2c 20 61 6e 64 20 69 66  |tatypes>, and if|
00062f40  20 69 74 20 69 73 20 61  62 6c 65 20 74 6f 20 65  | it is able to e|
00062f50  64 69 74 20 74 68 65 20  64 61 74 61 2c 20 69 74  |dit the data, it|
00062f60  20 6f 70 65 6e 73 20 61  20 73 75 69 74 61 62 6c  | opens a suitabl|
00062f70  65 20 77 69 6e 64 6f 77  20 28 6f 6e 20 61 20 27  |e window (on a '|
00062f80  62 6c 61 6e 6b 27 20 64  61 74 61 66 69 6c 65 29  |blank' datafile)|
00062f90  20 61 6e 64 20 72 65 70  6c 69 65 73 20 74 6f 20  | and replies to |
00062fa0  74 68 65 20 20 6d 65 73  73 61 67 65 20 28 77 69  |the  message (wi|
00062fb0  74 68 20 3c 45 64 69 74  41 63 6b 3d 3e 57 69 6d  |th <EditAck=>Wim|
00062fc0  70 5f 55 4d 34 35 64 38  31 3e 29 2e 20 0a 0a 49  |p_UM45d81>). ..I|
00062fd0  74 20 77 69 6c 6c 20 61  6c 6c 6f 77 20 74 68 65  |t will allow the|
00062fe0  20 75 73 65 72 20 74 6f  20 65 64 69 74 20 74 68  | user to edit th|
00062ff0  65 20 64 61 74 61 20 28  75 6e 6c 65 73 73 20 74  |e data (unless t|
00063000  68 65 20 72 65 71 75 65  73 74 20 77 61 73 20 66  |he request was f|
00063010  6f 72 20 72 65 61 64 2d  6f 6e 6c 79 20 64 61 74  |or read-only dat|
00063020  61 29 2c 20 61 6e 64 20  63 61 6e 20 61 6c 73 6f  |a), and can also|
00063030  20 68 61 6e 64 6c 65 20  73 6f 6d 65 20 65 78 74  | handle some ext|
00063040  72 61 20 66 75 6e 63 74  69 6f 6e 73 3a 0a 0a 8f  |ra functions:...|
00063050  20 49 66 20 61 20 64 61  74 61 20 74 72 61 6e 73  | If a data trans|
00063060  66 65 72 20 69 73 20 73  74 61 72 74 65 64 20 62  |fer is started b|
00063070  79 20 74 68 65 20 63 6c  69 65 6e 74 20 28 3c 45  |y the client (<E|
00063080  64 69 74 44 61 74 61 53  61 76 65 3d 3e 57 69 6d  |ditDataSave=>Wim|
00063090  70 5f 55 4d 34 35 64 38  34 3e 29 2c 20 69 74 20  |p_UM45d84>), it |
000630a0  77 69 6c 6c 20 69 6e 73  65 72 74 20 74 68 65 20  |will insert the |
000630b0  6e 65 77 20 64 61 74 61  20 20 69 6e 74 6f 20 74  |new data  into t|
000630c0  68 65 20 45 78 74 45 64  69 74 20 64 61 74 61 2c  |he ExtEdit data,|
000630d0  20 61 74 20 74 68 65 20  63 75 72 72 65 6e 74 20  | at the current |
000630e0  27 63 75 72 73 6f 72 27  20 70 6f 73 69 74 69 6f  |'cursor' positio|
000630f0  6e 20 28 75 73 75 61 6c  6c 79 20 74 68 65 20 65  |n (usually the e|
00063100  6e 64 20 6f 66 20 74 68  65 20 66 69 6c 65 29 2e  |nd of the file).|
00063110  0a 0a 8f 20 49 66 20 74  68 65 20 63 6c 69 65 6e  |... If the clien|
00063120  74 20 72 65 71 75 65 73  74 73 20 74 68 65 20 64  |t requests the d|
00063130  61 74 61 20 62 61 63 6b  20 28 3c 45 64 69 74 52  |ata back (<EditR|
00063140  65 74 75 72 6e 3d 3e 57  69 6d 70 5f 55 4d 34 35  |eturn=>Wimp_UM45|
00063150  64 38 32 3e 29 2c 20 6f  72 20 69 66 20 74 68 65  |d82>), or if the|
00063160  20 75 73 65 72 20 63 68  6f 6f 73 65 73 20 74 68  | user chooses th|
00063170  65 20 27 73 61 76 65 27  20 6d 65 6e 75 20 6f 70  |e 'save' menu op|
00063180  74 69 6f 6e 2c 20 61 20  72 65 76 65 72 73 65 20  |tion, a reverse |
00063190  64 61 74 61 20 74 72 61  6e 73 66 65 72 20 77 69  |data transfer wi|
000631a0  6c 6c 20 62 65 20 69 6e  69 74 69 61 74 65 64 20  |ll be initiated |
000631b0  62 61 63 6b 20 74 6f 20  74 68 65 20 63 6c 69 65  |back to the clie|
000631c0  6e 74 2e 0a 0a 8f 20 43  6c 6f 73 69 6e 67 20 74  |nt.... Closing t|
000631d0  68 65 20 45 78 74 45 64  69 74 20 77 69 6e 64 6f  |he ExtEdit windo|
000631e0  77 20 73 68 6f 75 6c 64  20 61 62 6f 72 74 20 74  |w should abort t|
000631f0  68 65 20 74 72 61 6e 73  66 65 72 20 2f 77 69 74  |he transfer /wit|
00063200  68 6f 75 74 2f 20 72 65  74 75 72 6e 69 6e 67 20  |hout/ returning |
00063210  74 68 65 20 64 61 74 61  20 74 6f 20 74 68 65 20  |the data to the |
00063220  63 6c 69 65 6e 74 2e 0a  0a 8f 20 49 66 20 74 68  |client.... If th|
00063230  65 20 63 6c 69 65 6e 74  20 72 65 71 75 65 73 74  |e client request|
00063240  20 61 20 6e 65 77 20 73  65 6c 65 63 74 69 6f 6e  | a new selection|
00063250  20 74 6f 20 62 65 20 68  69 67 68 6c 69 67 68 74  | to be highlight|
00063260  65 64 20 28 3c 45 64 69  74 43 75 72 73 6f 72 3d  |ed (<EditCursor=|
00063270  3e 57 69 6d 70 5f 55 4d  34 35 64 38 35 3e 29 2c  |>Wimp_UM45d85>),|
00063280  20 74 68 65 6e 20 74 68  65 20 65 64 69 74 6f 72  | then the editor|
00063290  20 73 68 6f 75 6c 64 20  6d 6f 76 65 20 74 6f 20  | should move to |
000632a0  74 68 65 20 6c 6f 63 61  74 69 6f 6e 20 73 70 65  |the location spe|
000632b0  63 69 66 69 65 64 20 61  6e 64 20 64 69 73 70 6c  |cified and displ|
000632c0  61 79 20 74 68 65 20 68  69 67 6c 69 67 68 74 69  |ay the higlighti|
000632d0  6e 67 20 61 73 20 72 65  71 75 69 72 65 64 2e 00  |ng as required..|
000632e0  44 41 54 41 9d 00 00 00  4a 6f 62 20 48 61 6e 64  |DATA....Job Hand|
000632f0  6c 65 0a 54 68 65 20 4a  6f 62 20 48 61 6e 64 6c  |le.The Job Handl|
00063300  65 20 63 6f 6e 73 69 73  74 73 20 6f 66 20 74 77  |e consists of tw|
00063310  6f 20 31 36 20 62 69 74  20 76 61 6c 75 65 73 20  |o 16 bit values |
00063320  3a 0a 20 20 42 69 74 20  30 2d 31 35 09 3a 20 22  |:.  Bit 0-15.: "|
00063330  43 6c 69 65 6e 74 22 20  68 61 6e 64 6c 65 0a 20  |Client" handle. |
00063340  20 42 69 74 20 31 36 2d  33 31 09 3a 20 22 45 64  | Bit 16-31.: "Ed|
00063350  69 74 6f 72 22 20 68 61  6e 64 6c 65 0a 0a 42 6f  |itor" handle..Bo|
00063360  74 68 20 76 61 6c 75 65  73 20 73 68 6f 75 6c 64  |th values should|
00063370  20 62 65 20 6e 6f 6e 2d  7a 65 72 6f 2e 00 00 00  | be non-zero....|
00063380  44 41 54 41 0e 01 00 00  46 6c 61 67 20 57 6f 72  |DATA....Flag Wor|
00063390  64 0a 42 69 74 09 4d 65  61 6e 69 6e 67 20 77 68  |d.Bit.Meaning wh|
000633a0  65 6e 20 53 65 74 0a 23  4c 69 6e 65 0a 20 30 09  |en Set.#Line. 0.|
000633b0  43 6f 6e 74 69 6e 75 6f  75 73 20 65 64 69 74 69  |Continuous editi|
000633c0  6e 67 2e 20 44 6f 6e 27  74 20 63 6c 6f 73 65 20  |ng. Don't close |
000633d0  61 66 74 65 72 20 73 61  76 65 2e 0a 20 31 09 53  |after save.. 1.S|
000633e0  65 6c 65 63 74 69 6f 6e  2e 20 45 64 69 74 52 65  |election. EditRe|
000633f0  74 75 72 6e 20 3a 20 53  65 6e 64 20 73 65 6c 65  |turn : Send sele|
00063400  63 74 69 6f 6e 20 6f 6e  6c 79 2e 0a 20 32 09 52  |ction only.. 2.R|
00063410  65 61 64 2d 4f 6e 6c 79  2e 0a 20 33 09 49 6d 6d  |ead-Only.. 3.Imm|
00063420  65 64 69 61 74 65 20 50  6c 61 79 62 61 63 6b 2e  |ediate Playback.|
00063430  20 22 50 6c 61 79 20 73  61 6d 70 6c 65 20 26 20  | "Play sample & |
00063440  71 75 69 74 22 0a 20 34  09 41 64 6a 75 73 74 20  |quit". 4.Adjust |
00063450  73 65 6c 65 63 74 69 6f  6e 2e 0a 20 0a 42 69 74  |selection.. .Bit|
00063460  73 20 35 20 74 6f 20 33  31 20 61 72 65 20 72 65  |s 5 to 31 are re|
00063470  73 65 72 76 65 64 20 61  6e 64 20 73 68 6f 75 6c  |served and shoul|
00063480  64 20 62 65 20 73 65 74  20 74 6f 20 30 2e 00 00  |d be set to 0...|
00063490  44 41 54 41 20 02 00 00  55 6e 69 74 20 6d 65 61  |DATA ...Unit mea|
000634a0  6e 69 6e 67 73 0a 23 57  72 61 70 20 4f 66 66 0a  |nings.#Wrap Off.|
000634b0  46 69 6c 65 74 79 70 65  09 09 09 55 6e 69 74 20  |Filetype...Unit |
000634c0  72 65 70 72 65 73 65 6e  74 73 0a 23 4c 69 6e 65  |represents.#Line|
000634d0  0a 3c 54 65 78 74 3d 3e  46 69 6c 65 74 79 70 65  |.<Text=>Filetype|
000634e0  73 3a 46 46 46 3e 09 09  43 68 61 72 61 63 74 65  |s:FFF>..Characte|
000634f0  72 0a 3c 43 6f 6d 6d 61  6e 64 3d 3e 46 69 6c 65  |r.<Command=>File|
00063500  74 79 70 65 73 3a 46 46  45 3e 09 43 68 61 72 61  |types:FFE>.Chara|
00063510  63 74 65 72 0a 3c 54 61  73 6b 4f 62 65 79 3d 3e  |cter.<TaskObey=>|
00063520  46 69 6c 65 74 79 70 65  73 3a 46 44 37 3e 09 43  |Filetypes:FD7>.C|
00063530  68 61 72 61 63 74 65 72  0a 3c 54 61 73 6b 45 78  |haracter.<TaskEx|
00063540  65 63 3d 3e 46 69 6c 65  74 79 70 65 73 3a 46 44  |ec=>Filetypes:FD|
00063550  36 3e 09 43 68 61 72 61  63 74 65 72 0a 3c 4f 62  |6>.Character.<Ob|
00063560  65 79 3d 3e 46 69 6c 65  74 79 70 65 73 3a 46 45  |ey=>Filetypes:FE|
00063570  42 3e 09 09 43 68 61 72  61 63 74 65 72 0a 3c 42  |B>..Character.<B|
00063580  61 73 69 63 54 78 74 3d  3e 46 69 6c 65 74 79 70  |asicTxt=>Filetyp|
00063590  65 73 3a 46 44 31 3e 09  43 68 61 72 61 63 74 65  |es:FD1>.Characte|
000635a0  72 0a 3c 44 61 74 61 3d  3e 46 69 6c 65 74 79 70  |r.<Data=>Filetyp|
000635b0  65 73 3a 46 46 44 3e 09  09 42 79 74 65 20 6f 66  |es:FFD>..Byte of|
000635c0  66 73 65 74 0a 3c 42 41  53 49 43 3d 3e 46 69 6c  |fset.<BASIC=>Fil|
000635d0  65 74 79 70 65 73 3a 46  46 42 3e 09 09 42 79 74  |etypes:FFB>..Byt|
000635e0  65 20 6f 66 66 73 65 74  0a 3c 53 70 72 69 74 65  |e offset.<Sprite|
000635f0  3d 3e 46 69 6c 65 74 79  70 65 73 3a 46 46 39 3e  |=>Filetypes:FF9>|
00063600  09 09 53 70 72 69 74 65  20 6e 75 6d 62 65 72 0a  |..Sprite number.|
00063610  3c 50 61 6c 65 74 74 65  3d 3e 46 69 6c 65 74 79  |<Palette=>Filety|
00063620  70 65 73 3a 46 45 44 3e  09 43 6f 6c 6f 75 72 20  |pes:FED>.Colour |
00063630  6e 75 6d 62 65 72 20 61  73 20 69 6e 64 65 78 20  |number as index |
00063640  69 6e 74 6f 20 73 74 61  6e 64 61 72 64 20 66 69  |into standard fi|
00063650  6c 65 20 66 6f 72 6d 61  74 0a 3c 44 72 61 77 46  |le format.<DrawF|
00063660  69 6c 65 3d 3e 46 69 6c  65 74 79 70 65 73 3a 41  |ile=>Filetypes:A|
00063670  46 46 3e 09 44 72 61 77  20 6f 62 6a 65 63 74 0a  |FF>.Draw object.|
00063680  3c 41 52 4d 6f 76 69 65  3d 3e 46 69 6c 65 74 79  |<ARMovie=>Filety|
00063690  70 65 73 3a 41 45 37 3e  09 41 6e 69 6d 61 74 69  |pes:AE7>.Animati|
000636a0  6f 6e 20 66 72 61 6d 65  20 6e 75 6d 62 65 72 0a  |on frame number.|
000636b0  44 41 54 41 66 01 00 00  44 61 74 61 20 74 79 70  |DATAf...Data typ|
000636c0  65 20 77 6f 72 64 0a 54  68 65 20 44 61 74 61 20  |e word.The Data |
000636d0  74 79 70 65 20 77 6f 72  64 20 63 6f 6e 73 69 73  |type word consis|
000636e0  74 73 20 6f 66 20 74 77  6f 20 31 36 20 62 69 74  |ts of two 16 bit|
000636f0  20 76 61 6c 75 65 73 20  3a 0a 20 20 42 69 74 20  | values :.  Bit |
00063700  30 2d 31 35 09 3a 20 53  74 61 6e 64 61 72 64 20  |0-15.: Standard |
00063710  41 63 6f 72 6e 20 3c 46  69 6c 65 74 79 70 65 3d  |Acorn <Filetype=|
00063720  3e 46 69 6c 65 74 79 70  65 73 3a 21 52 6f 6f 74  |>Filetypes:!Root|
00063730  3e 0a 20 20 42 69 74 20  31 36 2d 33 31 09 3a 20  |>.  Bit 16-31.: |
00063740  22 3c 53 75 62 74 79 70  65 3d 3e 57 69 6d 70 5f  |"<Subtype=>Wimp_|
00063750  55 4d 45 78 74 45 64 69  74 53 75 62 74 79 70 65  |UMExtEditSubtype|
00063760  73 3e 22 0a 0a 53 75 62  74 79 70 65 20 30 20 6d  |s>"..Subtype 0 m|
00063770  65 61 6e 73 20 74 68 61  74 20 74 68 65 20 66 69  |eans that the fi|
00063780  6c 65 74 79 70 65 20 73  61 79 73 20 69 74 20 61  |letype says it a|
00063790  6c 6c 2c 20 77 68 69 6c  65 20 73 75 62 74 79 70  |ll, while subtyp|
000637a0  65 73 20 26 30 30 30 31  20 74 6f 20 26 30 34 46  |es &0001 to &04F|
000637b0  46 20 61 72 65 20 72 65  73 65 72 76 65 64 20 66  |F are reserved f|
000637c0  6f 72 20 74 68 65 20 75  73 65 72 2e 20 41 70 70  |or the user. App|
000637d0  6c 69 63 61 74 69 6f 6e  73 20 66 6f 72 20 67 65  |lications for ge|
000637e0  6e 65 72 61 6c 20 64 69  73 74 72 69 62 75 74 69  |neral distributi|
000637f0  6f 6e 20 73 68 6f 75 6c  64 20 72 65 71 75 65 73  |on should reques|
00063800  74 20 61 20 70 72 6f 70  65 72 20 61 6c 6c 6f 63  |t a proper alloc|
00063810  61 74 69 6f 6e 2e 00 00  44 41 54 41 1b 01 00 00  |ation...DATA....|
00063820  45 78 74 65 72 6e 61 6c  20 45 64 69 74 20 73 75  |External Edit su|
00063830  62 74 79 70 65 73 0a 54  68 65 20 6f 66 66 69 63  |btypes.The offic|
00063840  69 61 6c 20 61 6c 6c 6f  63 61 74 69 6f 6e 20 6f  |ial allocation o|
00063850  66 20 73 75 62 74 79 70  65 73 20 68 61 73 20 79  |f subtypes has y|
00063860  65 74 20 74 6f 20 62 65  20 64 65 63 69 64 65 64  |et to be decided|
00063870  2c 20 62 75 74 20 61 73  20 6f 6e 6c 79 20 6f 6e  |, but as only on|
00063880  65 20 73 75 62 74 79 70  65 20 69 73 20 6b 6e 6f  |e subtype is kno|
00063890  77 20 74 6f 20 74 68 65  20 61 75 74 68 6f 72 2c  |w to the author,|
000638a0  20 74 68 69 73 20 69 73  20 6e 6f 74 20 72 65 61  | this is not rea|
000638b0  6c 6c 79 20 61 20 70 72  6f 62 6c 65 6d 2e 0a 0a  |lly a problem...|
000638c0  44 61 74 61 74 79 70 65  09 46 69 6c 65 20 63 6f  |Datatype.File co|
000638d0  6e 74 65 6e 74 73 09 09  4f 77 6e 65 72 0a 23 4c  |ntents..Owner.#L|
000638e0  69 6e 65 0a 30 31 32 43  30 46 46 46 09 44 4a 46  |ine.012C0FFF.DJF|
000638f0  20 74 75 6e 65 20 28 44  4a 46 2d 4a 52 46 29 09  | tune (DJF-JRF).|
00063900  3c 4a 75 73 74 69 6e 20  46 6c 65 74 63 68 65 72  |<Justin Fletcher|
00063910  3d 3e 66 69 6c 65 74 79  70 65 73 3a 41 75 74 68  |=>filetypes:Auth|
00063920  6f 72 73 5f 4a 75 73 74  69 6e 46 6c 65 74 63 68  |ors_JustinFletch|
00063930  65 72 3e 00 44 41 54 41  c2 01 00 00 45 78 74 65  |er>.DATA....Exte|
00063940  72 6e 61 6c 20 45 64 69  74 20 70 72 6f 74 6f 63  |rnal Edit protoc|
00063950  6f 6c 20 6d 6f 64 65 72  61 74 6f 72 0a 43 75 72  |ol moderator.Cur|
00063960  72 65 6e 74 6c 79 2c 20  4a 61 73 6f 6e 20 57 69  |rently, Jason Wi|
00063970  6c 6c 69 61 6d 73 20 69  73 20 77 6f 72 6b 69 6e  |lliams is workin|
00063980  67 20 66 6f 72 20 43 6f  6d 70 75 74 65 72 20 43  |g for Computer C|
00063990  6f 6e 63 65 70 74 73 20  61 6e 64 20 68 61 73 20  |oncepts and has |
000639a0  69 6d 70 6c 69 65 64 20  74 68 61 74 20 68 65 20  |implied that he |
000639b0  6e 6f 20 6c 6f 6e 67 65  72 20 77 69 73 68 65 73  |no longer wishes|
000639c0  20 74 6f 20 73 75 70 70  6f 72 74 20 74 68 65 20  | to support the |
000639d0  45 78 74 65 72 6e 61 6c  20 45 64 69 74 20 70 72  |External Edit pr|
000639e0  6f 74 6f 63 6f 6c 2e 20  54 68 75 73 2c 20 74 68  |otocol. Thus, th|
000639f0  65 20 70 72 6f 74 6f 63  6f 6c 20 68 61 73 20 6e  |e protocol has n|
00063a00  6f 74 20 61 64 76 61 6e  63 65 64 20 73 69 6e 63  |ot advanced sinc|
00063a10  65 20 6d 75 63 68 20 73  69 6e 63 65 20 69 74 73  |e much since its|
00063a20  20 63 72 65 61 74 69 6f  6e 20 32 20 79 65 61 72  | creation 2 year|
00063a30  73 20 61 67 6f 2e 0a 0a  3c 4a 75 73 74 69 6e 20  |s ago...<Justin |
00063a40  46 6c 65 74 63 68 65 72  3d 3e 66 69 6c 65 74 79  |Fletcher=>filety|
00063a50  70 65 73 3a 41 75 74 68  6f 72 73 5f 4a 75 73 74  |pes:Authors_Just|
00063a60  69 6e 46 6c 65 74 63 68  65 72 3e 20 68 61 73 20  |inFletcher> has |
00063a70  74 61 6b 65 6e 20 75 70  20 6d 6f 64 65 72 61 74  |taken up moderat|
00063a80  69 6f 6e 20 6f 66 20 74  68 69 73 20 70 72 6f 74  |ion of this prot|
00063a90  6f 63 6f 6c 2c 20 61 6e  64 20 61 6e 79 62 6f 64  |ocol, and anybod|
00063aa0  79 20 77 68 6f 20 68 61  73 20 69 64 65 61 73 20  |y who has ideas |
00063ab0  66 6f 72 20 74 68 65 20  70 72 6f 74 6f 63 6f 6c  |for the protocol|
00063ac0  2c 20 6f 72 20 77 69 73  68 65 73 20 6d 6f 72 65  |, or wishes more|
00063ad0  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 6f 6e 20  | information on |
00063ae0  69 74 20 73 68 6f 75 6c  64 20 63 6f 6e 74 61 63  |it should contac|
00063af0  74 20 68 69 6d 2e 00 00  44 41 54 41 f9 00 00 00  |t him...DATA....|
00063b00  57 69 6d 70 5f 41 64 64  4d 65 73 73 61 67 65 73  |Wimp_AddMessages|
00063b10  20 28 26 34 30 30 46 36  29 0a 23 50 61 72 65 6e  | (&400F6).#Paren|
00063b20  74 20 57 69 6d 70 5f 0a  3d 3e 09 52 30 20 3d 09  |t Wimp_.=>.R0 =.|
00063b30  50 6f 69 6e 74 65 72 20  74 6f 20 61 72 72 61 79  |Pointer to array|
00063b40  20 6f 66 20 3c 6d 65 73  73 61 67 65 20 63 6f 64  | of <message cod|
00063b50  65 73 3d 3e 77 69 6d 70  5f 73 65 6e 64 6d 65 73  |es=>wimp_sendmes|
00063b60  73 61 67 65 30 3e 20 28  30 2d 74 65 72 6d 69 6e  |sage0> (0-termin|
00063b70  61 74 65 64 29 0a 0a 45  78 74 65 6e 64 73 20 74  |ated)..Extends t|
00063b80  68 65 20 73 65 74 20 6f  66 20 75 73 65 72 20 6d  |he set of user m|
00063b90  65 73 73 61 67 65 73 20  74 68 61 74 20 74 68 65  |essages that the|
00063ba0  20 74 61 73 6b 20 67 65  74 73 2e 20 54 68 65 20  | task gets. The |
00063bb0  57 69 6d 70 20 61 64 64  73 20 74 68 65 20 6d 65  |Wimp adds the me|
00063bc0  73 73 61 67 65 73 20 74  6f 20 74 68 6f 73 65 20  |ssages to those |
00063bd0  67 69 76 65 6e 20 69 6e  20 52 33 20 69 6e 20 3c  |given in R3 in <|
00063be0  57 69 6d 70 5f 49 6e 69  74 69 61 6c 69 73 65 3e  |Wimp_Initialise>|
00063bf0  2e 00 00 00 44 41 54 41  98 00 00 00 57 69 6d 70  |....DATA....Wimp|
00063c00  5f 52 65 67 69 73 74 65  72 46 69 6c 74 65 72 20  |_RegisterFilter |
00063c10  28 26 34 30 30 46 35 29  0a 55 73 65 64 20 62 79  |(&400F5).Used by|
00063c20  20 74 68 65 20 46 69 6c  74 65 72 20 4d 61 6e 61  | the Filter Mana|
00063c30  67 65 72 20 74 6f 20 63  6f 6d 6d 75 6e 69 63 61  |ger to communica|
00063c40  74 65 20 77 69 74 68 20  74 68 65 20 57 69 6d 70  |te with the Wimp|
00063c50  0a 0a 44 6f 20 6e 6f 74  20 75 73 65 2e 20 55 73  |..Do not use. Us|
00063c60  65 20 74 68 65 20 3c 46  69 6c 74 65 72 4d 61 6e  |e the <FilterMan|
00063c70  61 67 65 72 3d 3e 46 69  6c 74 65 72 5f 3e 20 53  |ager=>Filter_> S|
00063c80  57 49 73 20 69 6e 73 74  65 61 64 2e 44 41 54 41  |WIs instead.DATA|
00063c90  ee 00 00 00 57 69 6d 70  5f 52 65 6d 6f 76 65 4d  |....Wimp_RemoveM|
00063ca0  65 73 73 61 67 65 73 20  28 26 34 30 30 46 37 29  |essages (&400F7)|
00063cb0  0a 23 50 61 72 65 6e 74  20 57 69 6d 70 5f 0a 3d  |.#Parent Wimp_.=|
00063cc0  3e 09 52 30 20 3d 09 50  6f 69 6e 74 65 72 20 74  |>.R0 =.Pointer t|
00063cd0  6f 20 61 72 72 61 79 20  6f 66 20 3c 6d 65 73 73  |o array of <mess|
00063ce0  61 67 65 20 63 6f 64 65  73 3d 3e 77 69 6d 70 5f  |age codes=>wimp_|
00063cf0  73 65 6e 64 6d 65 73 73  61 67 65 30 3e 20 28 30  |sendmessage0> (0|
00063d00  2d 74 65 72 6d 69 6e 61  74 65 64 29 0a 0a 52 65  |-terminated)..Re|
00063d10  6d 6f 76 65 73 20 74 68  65 20 6d 65 73 73 61 67  |moves the messag|
00063d20  65 73 20 69 6e 20 74 68  65 20 61 72 72 61 79 20  |es in the array |
00063d30  74 68 65 20 73 65 74 20  6f 66 20 75 73 65 72 20  |the set of user |
00063d40  6d 65 73 73 61 67 65 73  20 74 68 61 74 20 74 68  |messages that th|
00063d50  65 20 74 61 73 6b 20 67  65 74 73 2e 0a 0a 53 65  |e task gets...Se|
00063d60  65 20 61 6c 73 6f 20 3c  57 69 6d 70 5f 41 64 64  |e also <Wimp_Add|
00063d70  4d 65 73 73 61 67 65 73  3e 2e 00 00 44 41 54 41  |Messages>...DATA|
00063d80  ba 03 00 00 57 69 6d 70  5f 54 65 78 74 4f 70 20  |....Wimp_TextOp |
00063d90  28 26 34 30 30 46 39 29  0a 3d 3e 09 52 30 20 3d  |(&400F9).=>.R0 =|
00063da0  09 72 65 61 73 6f 6e 20  63 6f 64 65 0a 09 20 09  |.reason code.. .|
00063db0  20 31 09 3c 63 61 6c 63  75 6c 61 74 65 20 77 69  | 1.<calculate wi|
00063dc0  64 74 68 20 6f 66 20 73  74 72 69 6e 67 3d 3e 2e  |dth of string=>.|
00063dd0  31 3e 0a 09 20 09 20 32  09 3c 70 6c 6f 74 20 74  |1>.. . 2.<plot t|
00063de0  65 78 74 3d 3e 2e 32 3e  0a 6f 74 68 65 72 20 72  |ext=>.2>.other r|
00063df0  65 67 69 73 74 65 72 73  20 64 65 70 65 6e 64 20  |egisters depend |
00063e00  6f 6e 20 52 30 0a 0a 4f  70 65 72 61 74 69 6f 6e  |on R0..Operation|
00063e10  73 20 6f 6e 20 74 65 78  74 20 69 6e 20 74 68 65  |s on text in the|
00063e20  20 63 75 72 72 65 6e 74  20 64 65 73 6b 74 6f 70  | current desktop|
00063e30  20 66 6f 6e 74 2e 20 28  4f 6e 6c 79 20 66 6f 72  | font. (Only for|
00063e40  20 52 69 73 63 4f 53 20  33 2e 35 20 61 6e 64 20  | RiscOS 3.5 and |
00063e50  6c 61 74 65 72 29 0a 0a  53 65 65 20 61 6c 73 6f  |later)..See also|
00063e60  3a 20 3c 57 69 6d 70 5f  52 65 61 64 53 79 73 49  |: <Wimp_ReadSysI|
00063e70  6e 66 6f 3e 20 77 69 74  68 20 52 30 3d 38 0a 23  |nfo> with R0=8.#|
00063e80  0a 23 53 75 62 70 61 67  65 20 31 0a 57 69 6d 70  |.#Subpage 1.Wimp|
00063e90  5f 54 65 78 74 4f 70 20  31 20 28 26 34 30 30 46  |_TextOp 1 (&400F|
00063ea0  39 29 0a 3d 3e 09 52 30  20 3d 09 31 0a 09 52 31  |9).=>.R0 =.1..R1|
00063eb0  20 3d 09 50 6f 69 6e 74  65 72 20 74 6f 20 73 74  | =.Pointer to st|
00063ec0  72 69 6e 67 0a 09 52 32  20 3d 09 4e 75 6d 62 65  |ring..R2 =.Numbe|
00063ed0  72 20 6f 66 20 63 68 61  72 61 63 74 65 72 73 20  |r of characters |
00063ee0  74 6f 20 73 63 61 6e 2c  0a 09 20 09 6f 72 20 30  |to scan,.. .or 0|
00063ef0  20 66 6f 72 20 77 68 6f  6c 65 20 73 74 72 69 6e  | for whole strin|
00063f00  67 0a 0a 5c 3c 3d 09 52  30 20 3d 09 53 74 72 69  |g..\<=.R0 =.Stri|
00063f10  6e 67 20 77 69 64 74 68  20 69 6e 20 4f 53 20 75  |ng width in OS u|
00063f20  6e 69 74 73 0a 0a 43 61  6c 63 75 6c 61 74 65 73  |nits..Calculates|
00063f30  20 74 68 65 20 77 69 64  74 68 20 6f 66 20 61 20  | the width of a |
00063f40  28 73 75 62 29 73 74 72  69 6e 67 2c 20 69 66 20  |(sub)string, if |
00063f50  70 6c 6f 74 74 65 64 20  69 6e 20 74 68 65 20 63  |plotted in the c|
00063f60  75 72 72 65 6e 74 20 64  65 73 6b 74 6f 70 20 66  |urrent desktop f|
00063f70  6f 6e 74 2e 20 44 65 73  6b 74 6f 70 20 66 6f 6e  |ont. Desktop fon|
00063f80  74 20 63 61 6e 20 62 65  20 6f 75 74 6c 69 6e 65  |t can be outline|
00063f90  20 66 6f 6e 74 20 6f 72  20 6f 6c 64 20 42 42 43  | font or old BBC|
00063fa0  2d 74 79 70 65 20 66 6f  6e 74 2e 0a 23 0a 23 53  |-type font..#.#S|
00063fb0  75 62 70 61 67 65 20 32  0a 57 69 6d 70 5f 54 65  |ubpage 2.Wimp_Te|
00063fc0  78 74 4f 70 20 32 20 28  26 34 30 30 46 39 29 0a  |xtOp 2 (&400F9).|
00063fd0  3d 3e 09 52 30 20 3d 09  32 20 2b 20 66 6c 61 67  |=>.R0 =.2 + flag|
00063fe0  73 3a 0a 09 20 09 20 09  42 69 74 09 4d 65 61 6e  |s:.. . .Bit.Mean|
00063ff0  69 6e 67 0a 09 20 09 20  09 33 30 09 56 65 72 74  |ing.. . .30.Vert|
00064000  69 63 61 6c 6c 79 20 6a  75 73 74 69 66 79 2c 20  |ically justify, |
00064010  73 6f 20 62 61 73 65 6c  69 6e 65 20 6f 66 20 63  |so baseline of c|
00064020  68 61 72 61 63 74 65 72  73 20 69 73 20 61 74 20  |haracters is at |
00064030  73 61 6d 65 20 68 65 69  67 68 74 20 61 73 20 77  |same height as w|
00064040  68 65 6e 20 75 73 69 6e  67 20 73 79 73 74 65 6d  |hen using system|
00064050  20 66 6f 6e 74 0a 09 20  09 20 09 33 31 09 52 69  | font.. . .31.Ri|
00064060  67 68 74 2d 6a 75 73 74  69 66 79 20 0a 09 52 31  |ght-justify ..R1|
00064070  20 3d 09 50 6f 69 6e 74  65 72 20 74 6f 20 73 74  | =.Pointer to st|
00064080  72 69 6e 67 0a 09 52 32  20 3d 09 2d 31 20 28 3f  |ring..R2 =.-1 (?|
00064090  29 0a 09 52 33 20 3d 09  2d 31 20 28 3f 29 0a 09  |)..R3 =.-1 (?)..|
000640a0  52 34 20 3d 09 58 20 63  6f 6f 72 64 69 6e 61 74  |R4 =.X coordinat|
000640b0  65 0a 09 52 35 20 3d 09  59 20 63 6f 6f 72 64 69  |e..R5 =.Y coordi|
000640c0  6e 61 74 65 0a 0a 50 6c  6f 74 73 20 61 20 73 74  |nate..Plots a st|
000640d0  72 69 6e 67 20 69 6e 20  74 68 65 20 63 75 72 72  |ring in the curr|
000640e0  65 6e 74 20 64 65 73 6b  74 6f 70 20 66 6f 6e 74  |ent desktop font|
000640f0  2e 20 50 72 69 6f 72 20  74 6f 20 70 6c 6f 74 74  |. Prior to plott|
00064100  69 6e 67 2c 20 74 68 65  20 66 6f 6e 74 20 63 6f  |ing, the font co|
00064110  6c 6f 75 72 73 20 61 72  65 20 73 65 74 20 28 77  |lours are set (w|
00064120  69 74 68 20 3c 57 69 6d  70 5f 53 65 74 43 6f 6c  |ith <Wimp_SetCol|
00064130  6f 75 72 3e 29 2e 00 00  44 41 54 41 3f 04 00 00  |our>)...DATA?...|
00064140  57 69 6d 70 5f 44 72 61  67 42 6f 78 20 20 28 26  |Wimp_DragBox  (&|
00064150  34 30 30 44 30 29 0a 23  50 61 72 65 6e 74 20 57  |400D0).#Parent W|
00064160  69 6d 70 5f 0a 3d 3e 09  52 31 20 3d 09 70 6f 69  |imp_.=>.R1 =.poi|
00064170  6e 74 65 72 20 74 6f 20  3c 62 6c 6f 63 6b 3d 3e  |nter to <block=>|
00064180  2e 62 6c 6f 63 6b 3e 2c  20 6f 72 20 2d 31 20 74  |.block>, or -1 t|
00064190  6f 20 63 61 6e 63 65 6c  20 64 72 61 67 0a 0a 54  |o cancel drag..T|
000641a0  68 69 73 20 53 57 49 20  69 6e 69 74 69 61 74 65  |his SWI initiate|
000641b0  73 20 61 20 64 72 61 67  2e 20 41 20 64 72 61 67  |s a drag. A drag|
000641c0  20 63 61 6e 20 73 70 61  6e 20 73 65 76 65 72 61  | can span severa|
000641d0  6c 20 63 61 6c 6c 73 20  74 6f 20 57 69 6d 70 5f  |l calls to Wimp_|
000641e0  50 6f 6c 6c 2c 20 73 6f  20 74 68 65 20 74 61 73  |Poll, so the tas|
000641f0  6b 20 6d 75 73 74 20 72  65 6d 65 6d 62 65 72 20  |k must remember |
00064200  77 68 61 74 20 69 73 20  62 65 69 6e 67 20 64 72  |what is being dr|
00064210  61 67 67 65 64 20 28 61  6e 64 20 77 68 79 20 3a  |agged (and why :|
00064220  2d 29 2e 0a 0a 54 65 72  6d 69 6e 61 74 65 64 20  |-)...Terminated |
00064230  64 72 61 67 20 69 73 20  72 65 70 6f 72 74 65 64  |drag is reported|
00064240  20 62 79 20 57 69 6d 70  20 6d 65 73 73 61 67 65  | by Wimp message|
00064250  20 37 2e 0a 23 0a 23 53  75 62 70 61 67 65 20 62  | 7..#.#Subpage b|
00064260  6c 6f 63 6b 0a 42 6c 6f  63 6b 20 64 65 73 63 72  |lock.Block descr|
00064270  69 62 69 6e 67 20 64 72  61 67 0a 20 30 09 57 69  |ibing drag. 0.Wi|
00064280  6e 64 6f 77 20 68 61 6e  64 6c 65 20 28 66 6f 72  |ndow handle (for|
00064290  20 64 72 61 67 74 79 70  65 73 20 31 2d 34 20 6f  | dragtypes 1-4 o|
000642a0  6e 6c 79 29 0a 20 34 09  3c 44 72 61 67 74 79 70  |nly). 4.<Dragtyp|
000642b0  65 3d 3e 2e 64 72 61 67  74 79 70 65 3e 0a 20 38  |e=>.dragtype>. 8|
000642c0  09 4d 69 6e 20 78 20 6f  66 20 69 6e 69 74 69 61  |.Min x of initia|
000642d0  6c 20 64 72 61 67 62 6f  78 0a 20 31 32 09 4d 69  |l dragbox. 12.Mi|
000642e0  6e 20 79 0a 20 31 36 09  4d 61 78 20 78 0a 20 32  |n y. 16.Max x. 2|
000642f0  30 09 4d 61 78 20 79 0a  0a 46 6f 72 20 74 79 70  |0.Max y..For typ|
00064300  65 73 20 35 2d 31 31 20  6f 6e 6c 79 20 3a 0a 0a  |es 5-11 only :..|
00064310  20 32 34 09 4d 69 6e 20  78 20 6f 66 20 70 61 72  | 24.Min x of par|
00064320  65 6e 74 62 6f 78 0a 20  32 38 09 4d 69 6e 20 79  |entbox. 28.Min y|
00064330  0a 20 33 32 09 4d 61 78  20 78 0a 20 33 36 09 4d  |. 32.Max x. 36.M|
00064340  61 78 20 79 0a 0a 46 6f  72 20 74 79 70 65 73 20  |ax y..For types |
00064350  38 2d 31 31 20 6f 6e 6c  79 20 3a 0a 0a 20 34 30  |8-11 only :.. 40|
00064360  09 52 31 32 20 76 61 6c  75 65 20 66 6f 72 20 75  |.R12 value for u|
00064370  73 65 72 72 6f 75 74 69  6e 65 73 0a 20 34 34 09  |serroutines. 44.|
00064380  41 64 64 72 65 73 73 20  6f 66 20 64 72 61 77 62  |Address of drawb|
00064390  6f 78 20 72 6f 75 74 69  6e 65 0a 20 34 38 09 41  |ox routine. 48.A|
000643a0  64 64 72 65 73 73 20 6f  66 20 72 65 6d 6f 76 65  |ddress of remove|
000643b0  62 6f 78 20 72 6f 75 74  69 6e 65 0a 20 35 32 09  |box routine. 52.|
000643c0  41 64 64 72 65 73 73 20  6f 66 20 6d 6f 76 65 62  |Address of moveb|
000643d0  6f 78 20 72 6f 75 74 69  6e 65 20 28 6f 72 20 5c  |ox routine (or \|
000643e0  3c 30 20 69 66 20 6e 6f  6e 65 29 0a 23 0a 23 53  |<0 if none).#.#S|
000643f0  75 62 70 61 67 65 20 64  72 61 67 74 79 70 65 0a  |ubpage dragtype.|
00064400  44 72 61 67 74 79 70 65  73 0a 20 31 09 44 72 61  |Dragtypes. 1.Dra|
00064410  67 20 77 69 6e 64 6f 77  20 70 6f 73 69 74 69 6f  |g window positio|
00064420  6e 0a 20 32 09 44 72 61  67 20 77 69 6e 64 6f 77  |n. 2.Drag window|
00064430  20 73 69 7a 65 0a 20 33  09 44 72 61 67 20 68 6f  | size. 3.Drag ho|
00064440  72 69 7a 6f 6e 74 61 6c  20 73 63 72 6f 6c 6c 0a  |rizontal scroll.|
00064450  20 34 09 44 72 61 67 20  76 65 72 74 69 63 61 6c  | 4.Drag vertical|
00064460  20 73 63 72 6f 6c 6c 0a  20 35 09 44 72 61 67 20  | scroll. 5.Drag |
00064470  66 69 78 65 64 20 73 69  7a 65 20 62 6f 78 0a 20  |fixed size box. |
00064480  36 09 44 72 61 67 20 72  75 62 62 65 72 62 6f 78  |6.Drag rubberbox|
00064490  0a 20 37 09 44 72 61 67  20 70 6f 69 6e 74 0a 20  |. 7.Drag point. |
000644a0  38 09 44 72 61 67 20 66  69 78 65 64 20 73 69 7a  |8.Drag fixed siz|
000644b0  65 20 75 73 65 72 62 6f  78 0a 20 39 09 44 72 61  |e userbox. 9.Dra|
000644c0  67 20 72 75 62 62 65 72  20 75 73 65 72 62 6f 78  |g rubber userbox|
000644d0  0a 20 31 30 09 41 73 20  38 2c 20 62 75 74 20 64  |. 10.As 8, but d|
000644e0  6f 6e 27 74 20 63 61 6e  63 65 6c 20 77 68 65 6e  |on't cancel when|
000644f0  20 62 75 74 74 6f 6e 73  20 61 72 65 20 72 65 6c  | buttons are rel|
00064500  65 61 73 65 64 0a 20 31  31 09 41 73 20 39 2c 20  |eased. 11.As 9, |
00064510  62 75 74 20 64 6f 6e 27  74 20 63 61 6e 63 65 6c  |but don't cancel|
00064520  20 77 68 65 6e 20 62 75  74 74 6f 6e 73 20 61 72  | when buttons ar|
00064530  65 20 72 65 6c 65 61 73  65 64 0a 0a 44 72 61 67  |e released..Drag|
00064540  74 79 70 65 20 31 20 69  73 20 75 73 65 66 75 6c  |type 1 is useful|
00064550  20 66 6f 72 20 64 72 61  67 67 69 6e 67 20 77 69  | for dragging wi|
00064560  6e 64 6f 77 73 20 77 69  74 68 20 6e 6f 20 74 69  |ndows with no ti|
00064570  74 6c 65 62 61 72 2e 00  44 49 52 24 ac 01 00 00  |tlebar..DIR$....|
00064580  ac 01 00 00 24 47 06 00  45 ff ff ff d8 bf ee ff  |....$G..E.......|
00064590  03 01 00 00 13 00 00 00  00 00 00 00 43 61 72 65  |............Care|
000645a0  74 50 6f 73 69 74 69 6f  6e 00 00 00 28 48 06 00  |tPosition...(H..|
000645b0  46 ff ff ff 1d 74 33 45  34 01 00 00 13 00 00 00  |F....t3E4.......|
000645c0  00 00 00 00 49 63 6f 6e  53 74 61 74 65 00 00 00  |....IconState...|
000645d0  5c 49 06 00 46 ff ff ff  c0 2e a8 b8 64 01 00 00  |\I..F.......d...|
000645e0  13 00 00 00 00 00 00 00  4d 65 6e 75 53 74 61 74  |........MenuStat|
000645f0  65 00 00 00 c0 4a 06 00  46 ff ff ff 0b 5d 3d 25  |e....J..F....]=%|
00064600  16 02 00 00 13 00 00 00  00 00 00 00 50 6f 69 6e  |............Poin|
00064610  74 65 72 49 6e 66 6f 00  d8 4c 06 00 45 fd ff ff  |terInfo..L..E...|
00064620  0a 21 f3 ff 87 00 00 00  13 00 00 00 00 00 00 00  |.!..............|
00064630  70 6f 69 6e 74 65 72 69  6e 66 6f 30 00 00 00 00  |pointerinfo0....|
00064640  60 4d 06 00 45 fd ff ff  43 1c f3 ff 63 01 00 00  |`M..E...C...c...|
00064650  13 00 00 00 00 00 00 00  70 6f 69 6e 74 65 72 69  |........pointeri|
00064660  6e 66 6f 31 00 00 00 00  c4 4e 06 00 45 ff ff ff  |nfo1.....N..E...|
00064670  93 99 ee ff ab 01 00 00  13 00 00 00 00 00 00 00  |................|
00064680  57 69 6e 64 6f 77 49 6e  66 6f 00 00 70 50 06 00  |WindowInfo..pP..|
00064690  45 ff ff ff 9f 90 ee ff  f4 00 00 00 13 00 00 00  |E...............|
000646a0  00 00 00 00 57 69 6e 64  6f 77 4f 75 74 6c 69 6e  |....WindowOutlin|
000646b0  65 00 00 00 64 51 06 00  46 fd ff ff 7f 77 fa 2a  |e...dQ..F....w.*|
000646c0  79 00 00 00 13 00 00 00  00 00 00 00 77 69 6e 64  |y...........wind|
000646d0  6f 77 6f 75 74 6c 69 6e  65 30 00 00 e0 51 06 00  |owoutline0...Q..|
000646e0  45 ff ff ff a9 8d ee ff  93 01 00 00 13 00 00 00  |E...............|
000646f0  00 00 00 00 57 69 6e 64  6f 77 53 74 61 74 65 00  |....WindowState.|
00064700  74 53 06 00 46 ff ff ff  fa df 41 de c7 01 00 00  |tS..F.....A.....|
00064710  13 00 00 00 00 00 00 00  52 65 63 74 61 6e 67 6c  |........Rectangl|
00064720  65 00 00 00 44 41 54 41  03 01 00 00 57 69 6d 70  |e...DATA....Wimp|
00064730  5f 47 65 74 43 61 72 65  74 50 6f 73 69 74 69 6f  |_GetCaretPositio|
00064740  6e 20 20 28 26 34 30 30  44 33 29 0a 23 50 61 72  |n  (&400D3).#Par|
00064750  65 6e 74 20 57 69 6d 70  5f 0a 3d 3e 09 52 31 20  |ent Wimp_.=>.R1 |
00064760  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |= pointer to blo|
00064770  63 6b 0a 0a 5c 3c 3d 09  62 6c 6f 63 6b 20 63 6f  |ck..\<=.block co|
00064780  6e 74 61 69 6e 73 20 3a  0a 09 20 20 30 09 77 69  |ntains :..  0.wi|
00064790  6e 64 6f 77 20 68 61 6e  64 6c 65 20 28 2d 31 20  |ndow handle (-1 |
000647a0  69 66 20 6f 66 66 29 0a  09 20 20 34 09 69 63 6f  |if off)..  4.ico|
000647b0  6e 20 68 61 6e 64 6c 65  2c 20 6f 72 20 2d 31 0a  |n handle, or -1.|
000647c0  09 20 20 38 09 78 20 6f  66 66 73 65 74 0a 09 20  |.  8.x offset.. |
000647d0  20 31 32 09 79 20 6f 66  66 73 65 74 0a 09 20 20  | 12.y offset..  |
000647e0  31 36 09 3c 68 65 69 67  68 74 20 2b 20 66 6c 61  |16.<height + fla|
000647f0  67 73 3d 3e 77 69 6d 70  5f 63 61 72 65 74 68 66  |gs=>wimp_carethf|
00064800  3e 2c 20 6f 72 20 2d 31  0a 09 20 20 32 30 09 69  |>, or -1..  20.i|
00064810  6e 64 65 78 20 69 6e 74  6f 20 73 74 72 69 6e 67  |ndex into string|
00064820  2c 20 6f 72 20 2d 31 00  44 41 54 41 34 01 00 00  |, or -1.DATA4...|
00064830  57 69 6d 70 5f 47 65 74  49 63 6f 6e 53 74 61 74  |Wimp_GetIconStat|
00064840  65 20 20 28 26 34 30 30  43 45 29 0a 23 50 61 72  |e  (&400CE).#Par|
00064850  65 6e 74 20 57 69 6d 70  5f 0a 23 57 72 61 70 20  |ent Wimp_.#Wrap |
00064860  4f 66 66 0a 3d 3e 09 52  31 20 3d 20 70 6f 69 6e  |Off.=>.R1 = poin|
00064870  74 65 72 20 74 6f 20 62  6c 6f 63 6b 20 3a 0a 09  |ter to block :..|
00064880  20 20 30 20 20 57 69 6e  64 6f 77 20 68 61 6e 64  |  0  Window hand|
00064890  6c 65 0a 09 20 20 34 20  20 49 63 6f 6e 20 68 61  |le..  4  Icon ha|
000648a0  6e 64 6c 65 0a 0a 5c 3c  3d 09 4f 6e 20 65 78 69  |ndle..\<=.On exi|
000648b0  74 20 74 68 65 20 62 6c  6f 63 6b 20 77 69 6c 6c  |t the block will|
000648c0  20 61 6c 73 6f 20 63 6f  6e 74 61 69 6e 20 3a 0a  | also contain :.|
000648d0  09 20 20 38 20 20 33 32  2d 62 79 74 65 20 3c 69  |.  8  32-byte <i|
000648e0  63 6f 6e 20 62 6c 6f 63  6b 3d 3e 77 69 6d 70 5f  |con block=>wimp_|
000648f0  69 63 6f 6e 62 6c 6f 63  6b 3e 2e 0a 23 57 72 61  |iconblock>..#Wra|
00064900  70 20 4f 6e 0a 0a 49 66  20 79 6f 75 20 77 61 6e  |p On..If you wan|
00064910  74 20 74 6f 20 73 65 61  72 63 68 20 66 6f 72 20  |t to search for |
00064920  61 6e 20 69 63 6f 6e 20  77 69 74 68 20 70 61 72  |an icon with par|
00064930  74 69 63 75 6c 61 72 20  66 6c 61 67 20 73 65 74  |ticular flag set|
00064940  74 69 6e 67 73 2c 20 75  73 65 20 3c 57 69 6d 70  |tings, use <Wimp|
00064950  5f 57 68 69 63 68 49 63  6f 6e 3e 2e 44 41 54 41  |_WhichIcon>.DATA|
00064960  64 01 00 00 57 69 6d 70  5f 47 65 74 4d 65 6e 75  |d...Wimp_GetMenu|
00064970  53 74 61 74 65 20 20 28  26 34 30 30 46 34 29 0a  |State  (&400F4).|
00064980  23 50 61 72 65 6e 74 20  57 69 6d 70 5f 0a 23 57  |#Parent Wimp_.#W|
00064990  72 61 70 20 4f 66 66 0a  3d 3e 09 52 30 20 3d 09  |rap Off.=>.R0 =.|
000649a0  30 20 74 6f 20 72 65 74  75 72 6e 20 74 68 65 20  |0 to return the |
000649b0  63 75 72 72 65 6e 74 20  6d 65 6e 75 20 74 72 65  |current menu tre|
000649c0  65 20 73 74 61 74 65 0a  09 20 09 31 20 74 6f 20  |e state.. .1 to |
000649d0  72 65 74 75 72 6e 20 74  72 65 65 20 66 6f 72 20  |return tree for |
000649e0  77 69 6e 64 6f 77 2f 69  63 6f 6e 20 70 61 69 72  |window/icon pair|
000649f0  0a 23 57 72 61 70 0a 09  52 31 20 3d 09 62 75 66  |.#Wrap..R1 =.buf|
00064a00  66 65 72 20 66 6f 72 20  72 65 73 75 6c 74 0a 09  |fer for result..|
00064a10  52 32 20 3d 09 77 69 6e  64 6f 77 20 68 61 6e 64  |R2 =.window hand|
00064a20  6c 65 20 6f 66 20 6d 65  6e 75 20 69 66 20 52 30  |le of menu if R0|
00064a30  3d 31 0a 09 52 33 20 3d  09 69 63 6f 6e 20 68 61  |=1..R3 =.icon ha|
00064a40  6e 64 6c 65 20 6f 66 20  65 6e 74 72 79 20 69 6e  |ndle of entry in|
00064a50  20 6d 65 6e 75 20 69 66  20 52 30 3d 31 0a 0a 54  | menu if R0=1..T|
00064a60  68 69 73 20 53 57 49 20  72 65 74 75 72 6e 73 20  |his SWI returns |
00064a70  61 20 6c 69 73 74 20 6f  66 20 6e 75 6d 62 65 72  |a list of number|
00064a80  73 2c 20 73 61 6d 65 20  61 73 20 74 68 65 20 6f  |s, same as the o|
00064a90  6e 65 20 79 6f 75 20 67  65 74 20 61 66 74 65 72  |ne you get after|
00064aa0  20 61 20 3c 6d 65 6e 75  20 73 65 6c 65 63 74 69  | a <menu selecti|
00064ab0  6f 6e 3d 3e 77 69 6d 70  5f 70 6f 6c 6c 39 3e 2e  |on=>wimp_poll9>.|
00064ac0  44 41 54 41 16 02 00 00  57 69 6d 70 5f 47 65 74  |DATA....Wimp_Get|
00064ad0  50 6f 69 6e 74 65 72 49  6e 66 6f 20 20 28 26 34  |PointerInfo  (&4|
00064ae0  30 30 43 46 29 0a 23 50  61 72 65 6e 74 20 57 69  |00CF).#Parent Wi|
00064af0  6d 70 5f 0a 3d 3e 09 52  31 20 3d 20 70 6f 69 6e  |mp_.=>.R1 = poin|
00064b00  74 65 72 20 74 6f 20 62  6c 6f 63 6b 0a 5c 3c 3d  |ter to block.\<=|
00064b10  09 52 30 20 63 6f 72 72  75 70 74 65 64 20 28 20  |.R0 corrupted ( |
00064b20  3d 20 6d 6f 75 73 65 20  78 20 3f 20 29 0a 09 42  |= mouse x ? )..B|
00064b30  6c 6f 63 6b 20 63 6f 6e  74 61 69 6e 73 20 3a 0a  |lock contains :.|
00064b40  09 20 20 30 09 4d 6f 75  73 65 20 78 0a 09 20 20  |.  0.Mouse x..  |
00064b50  34 09 4d 6f 75 73 65 20  79 0a 09 20 20 38 09 3c  |4.Mouse y..  8.<|
00064b60  42 75 74 74 6f 6e 20 73  74 61 74 65 3d 3e 77 69  |Button state=>wi|
00064b70  6d 70 5f 67 65 74 70 6f  69 6e 74 65 72 69 6e 66  |mp_getpointerinf|
00064b80  6f 30 3e 0a 09 20 20 31  32 09 57 69 6e 64 6f 77  |o0>..  12.Window|
00064b90  20 68 61 6e 64 6c 65 20  28 2d 31 20 66 6f 72 20  | handle (-1 for |
00064ba0  62 61 63 6b 67 72 2c 20  2d 32 20 66 6f 72 20 69  |backgr, -2 for i|
00064bb0  63 6f 6e 62 61 72 29 0a  09 20 20 31 36 09 3c 49  |conbar)..  16.<I|
00064bc0  63 6f 6e 20 68 61 6e 64  6c 65 3d 3e 77 69 6d 70  |con handle=>wimp|
00064bd0  5f 67 65 74 70 6f 69 6e  74 65 72 69 6e 66 6f 31  |_getpointerinfo1|
00064be0  3e 0a 09 20 20 0a 54 68  69 73 20 77 6f 75 6c 64  |>..  .This would|
00064bf0  20 61 70 70 65 61 72 20  74 6f 20 72 65 74 75 72  | appear to retur|
00064c00  6e 20 6e 6f 74 20 74 68  65 20 63 75 72 72 65 6e  |n not the curren|
00064c10  74 20 6d 6f 75 73 65 20  73 74 61 74 65 20 62 75  |t mouse state bu|
00064c20  74 20 69 74 73 20 73 74  61 74 65 20 77 68 65 6e  |t its state when|
00064c30  20 74 68 65 20 6c 61 73  74 20 3c 57 69 6d 70 5f  | the last <Wimp_|
00064c40  50 6f 6c 6c 3e 20 77 61  73 20 65 78 65 63 75 74  |Poll> was execut|
00064c50  65 64 2e 20 54 68 69 73  20 6d 65 61 6e 73 20 74  |ed. This means t|
00064c60  68 61 74 20 69 74 20 69  73 20 70 65 72 66 65 63  |hat it is perfec|
00064c70  74 6c 79 20 73 61 66 65  20 74 6f 20 75 73 65 20  |tly safe to use |
00064c80  69 74 20 61 66 74 65 72  20 61 20 6c 6f 6e 67 20  |it after a long |
00064c90  6d 65 6e 75 20 63 6c 69  63 6b 20 64 65 6c 61 79  |menu click delay|
00064ca0  20 74 6f 20 72 65 63 72  65 61 74 65 20 74 68 65  | to recreate the|
00064cb0  20 6d 65 6e 75 20 6f 72  20 61 73 20 61 20 6d 65  | menu or as a me|
00064cc0  61 6e 73 20 6f 66 20 64  72 61 67 67 69 6e 67 20  |ans of dragging |
00064cd0  62 6f 78 65 73 2e 00 00  44 41 54 41 87 00 00 00  |boxes...DATA....|
00064ce0  42 75 74 74 6f 6e 20 73  74 61 74 65 0a 42 69 74  |Button state.Bit|
00064cf0  09 4d 65 61 6e 69 6e 67  20 77 68 65 6e 20 73 65  |.Meaning when se|
00064d00  74 0a 23 4c 69 6e 65 0a  30 09 52 69 67 68 74 20  |t.#Line.0.Right |
00064d10  62 75 74 74 6f 6e 20 70  72 65 73 73 65 64 0a 31  |button pressed.1|
00064d20  09 4d 69 64 64 6c 65 20  62 75 74 74 6f 6e 20 70  |.Middle button p|
00064d30  72 65 73 73 65 64 0a 32  09 4c 65 66 74 20 62 75  |ressed.2.Left bu|
00064d40  74 74 6f 6e 20 70 72 65  73 73 65 64 0a 0a 33 2d  |tton pressed..3-|
00064d50  33 31 20 61 72 65 20 72  65 73 65 72 76 65 64 00  |31 are reserved.|
00064d60  44 41 54 41 63 01 00 00  49 63 6f 6e 20 68 61 6e  |DATAc...Icon han|
00064d70  64 6c 65 0a 49 66 20 70  6f 73 69 74 69 76 65 2c  |dle.If positive,|
00064d80  20 74 68 65 6e 20 69 74  20 72 65 61 6c 6c 79 20  | then it really |
00064d90  69 73 20 61 6e 20 69 63  6f 6e 20 68 61 6e 64 6c  |is an icon handl|
00064da0  65 2e 0a 49 66 20 6e 65  67 61 74 69 76 65 2c 20  |e..If negative, |
00064db0  69 74 20 6d 65 61 6e 73  20 3a 0a 20 2d 31 09 57  |it means :. -1.W|
00064dc0  6f 72 6b 20 61 72 65 61  0a 20 2d 32 09 42 61 63  |ork area. -2.Bac|
00064dd0  6b 20 69 63 6f 6e 0a 20  2d 33 09 43 6c 6f 73 65  |k icon. -3.Close|
00064de0  20 69 63 6f 6e 0a 20 2d  34 09 54 69 74 6c 65 20  | icon. -4.Title |
00064df0  62 61 72 0a 20 2d 35 09  54 6f 67 67 6c 65 20 73  |bar. -5.Toggle s|
00064e00  69 7a 65 20 69 63 6f 6e  0a 20 2d 36 09 53 63 72  |ize icon. -6.Scr|
00064e10  6f 6c 6c 20 75 70 20 61  72 72 6f 77 0a 20 2d 37  |oll up arrow. -7|
00064e20  09 56 65 72 74 69 63 61  6c 20 73 63 72 6f 6c 6c  |.Vertical scroll|
00064e30  62 61 72 0a 20 2d 38 09  53 63 72 6f 6c 6c 20 64  |bar. -8.Scroll d|
00064e40  6f 77 6e 20 61 72 72 6f  77 0a 20 2d 39 09 41 64  |own arrow. -9.Ad|
00064e50  6a 75 73 74 20 73 69 7a  65 20 69 63 6f 6e 0a 20  |just size icon. |
00064e60  2d 31 30 09 53 63 72 6f  6c 6c 20 6c 65 66 74 20  |-10.Scroll left |
00064e70  61 72 72 6f 77 0a 20 2d  31 31 09 48 6f 72 69 7a  |arrow. -11.Horiz|
00064e80  6f 6e 74 61 6c 20 73 63  72 6f 6c 6c 62 61 72 0a  |ontal scrollbar.|
00064e90  20 2d 31 32 09 53 63 72  6f 6c 6c 20 72 69 67 68  | -12.Scroll righ|
00064ea0  74 20 61 72 72 6f 77 0a  20 2d 31 33 09 54 68 65  |t arrow. -13.The|
00064eb0  20 6f 75 74 65 72 20 77  69 6e 64 6f 77 20 66 72  | outer window fr|
00064ec0  61 6d 65 00 44 41 54 41  ab 01 00 00 57 69 6d 70  |ame.DATA....Wimp|
00064ed0  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 20 20  |_GetWindowInfo  |
00064ee0  28 26 34 30 30 43 43 29  0a 23 50 61 72 65 6e 74  |(&400CC).#Parent|
00064ef0  20 57 69 6d 70 5f 0a 3d  3e 09 52 31 20 3d 20 70  | Wimp_.=>.R1 = p|
00064f00  6f 69 6e 74 65 72 20 74  6f 20 62 6c 6f 63 6b 20  |ointer to block |
00064f10  63 6f 6e 74 61 69 6e 69  6e 67 20 77 69 6e 64 6f  |containing windo|
00064f20  77 20 68 61 6e 64 6c 65  0a 0a 5c 3c 3d 09 62 6c  |w handle..\<=.bl|
00064f30  6f 63 6b 20 63 6f 6e 74  61 69 6e 73 0a 09 20 20  |ock contains..  |
00064f40  30 09 57 69 6e 64 6f 77  20 68 61 6e 64 6c 65 0a  |0.Window handle.|
00064f50  09 20 20 34 2e 2e 09 3c  57 69 6e 64 6f 77 20 62  |.  4...<Window b|
00064f60  6c 6f 63 6b 3d 3e 77 69  6d 70 5f 77 69 6e 64 6f  |lock=>wimp_windo|
00064f70  77 62 6c 6f 63 6b 3e 0a  0a 54 68 69 73 20 53 57  |wblock>..This SW|
00064f80  49 20 72 65 74 75 72 6e  73 20 63 6f 6d 70 6c 65  |I returns comple|
00064f90  74 65 20 64 65 74 61 69  6c 73 20 6f 66 20 74 68  |te details of th|
00064fa0  65 20 67 69 76 65 6e 20  77 69 6e 64 6f 77 73 20  |e given windows |
00064fb0  73 74 61 74 65 2c 20 69  6e 63 6c 75 64 69 6e 67  |state, including|
00064fc0  20 61 6e 79 20 69 63 6f  6e 73 20 63 72 65 61 74  | any icons creat|
00064fd0  65 64 20 61 66 74 65 72  20 74 68 65 20 77 69 6e  |ed after the win|
00064fe0  64 6f 77 20 69 74 73 65  6c 66 2e 0a 0a 49 66 20  |dow itself...If |
00064ff0  62 69 74 20 30 20 6f 66  20 52 31 20 69 73 20 73  |bit 0 of R1 is s|
00065000  65 74 2c 20 74 68 65 6e  20 74 68 65 20 69 63 6f  |et, then the ico|
00065010  6e 73 20 61 72 65 20 2a  6e 6f 74 2a 20 72 65 74  |ns are *not* ret|
00065020  75 72 6e 65 64 2e 2e 20  28 52 31 20 69 73 20 6e  |urned.. (R1 is n|
00065030  6f 72 6d 61 6c 6c 79 20  61 20 77 6f 72 64 2d 61  |ormally a word-a|
00065040  6c 69 67 6e 65 64 20 61  64 64 72 65 73 73 20 77  |ligned address w|
00065050  68 65 72 65 20 62 69 74  20 30 20 61 6e 64 20 31  |here bit 0 and 1|
00065060  20 61 72 65 20 62 6f 74  68 20 7a 65 72 6f 29 00  | are both zero).|
00065070  44 41 54 41 f4 00 00 00  57 69 6d 70 5f 47 65 74  |DATA....Wimp_Get|
00065080  57 69 6e 64 6f 77 4f 75  74 6c 69 6e 65 20 20 28  |WindowOutline  (|
00065090  26 34 30 30 45 30 29 0a  23 50 61 72 65 6e 74 20  |&400E0).#Parent |
000650a0  57 69 6d 70 5f 0a 3d 3e  09 52 31 20 3d 20 62 6c  |Wimp_.=>.R1 = bl|
000650b0  6f 63 6b 20 63 6f 6e 74  61 69 6e 69 6e 67 20 77  |ock containing w|
000650c0  69 6e 64 6f 77 20 68 61  6e 64 6c 65 0a 5c 3c 3d  |indow handle.\<=|
000650d0  09 42 6c 6f 63 6b 20 61  74 20 52 31 20 3c 75 70  |.Block at R1 <up|
000650e0  64 61 74 65 64 3d 3e 77  69 6d 70 5f 67 65 74 77  |dated=>wimp_getw|
000650f0  69 6e 64 6f 77 6f 75 74  6c 69 6e 65 30 3e 0a 0a  |indowoutline0>..|
00065100  54 68 69 73 20 53 57 49  20 72 65 74 75 72 6e 73  |This SWI returns|
00065110  20 74 68 65 20 63 6f 6f  72 64 69 6e 61 74 65 73  | the coordinates|
00065120  20 6f 66 20 61 20 72 65  63 74 61 6e 67 6c 65 20  | of a rectangle |
00065130  77 68 69 63 68 20 63 6f  6d 70 6c 65 74 65 6c 79  |which completely|
00065140  20 63 6f 76 65 72 73 20  74 68 65 20 77 69 6e 64  | covers the wind|
00065150  6f 77 2c 20 62 6f 72 64  65 72 73 20 61 6e 64 20  |ow, borders and |
00065160  61 6c 6c 2e 44 41 54 41  79 00 00 00 42 6c 6f 63  |all.DATAy...Bloc|
00065170  6b 20 3a 0a 23 57 72 61  70 20 4f 66 66 0a 30 09  |k :.#Wrap Off.0.|
00065180  57 69 6e 64 6f 77 20 68  61 6e 64 6c 65 0a 34 09  |Window handle.4.|
00065190  42 6f 75 6e 64 69 6e 67  20 62 6f 78 09 6d 69 6e  |Bounding box.min|
000651a0  78 20 28 69 6e 63 6c 29  0a 38 09 20 09 09 6d 69  |x (incl).8. ..mi|
000651b0  6e 79 20 28 69 6e 63 6c  29 0a 31 32 09 20 09 09  |ny (incl).12. ..|
000651c0  6d 61 78 78 20 28 65 78  63 6c 29 0a 31 36 09 20  |maxx (excl).16. |
000651d0  09 09 6d 61 78 79 20 28  65 78 63 6c 29 00 00 00  |..maxy (excl)...|
000651e0  44 41 54 41 93 01 00 00  57 69 6d 70 5f 47 65 74  |DATA....Wimp_Get|
000651f0  57 69 6e 64 6f 77 53 74  61 74 65 20 28 26 34 30  |WindowState (&40|
00065200  30 43 42 29 0a 23 50 61  72 65 6e 74 20 57 69 6d  |0CB).#Parent Wim|
00065210  70 5f 0a 3d 3e 09 52 31  20 3d 20 70 6f 69 6e 74  |p_.=>.R1 = point|
00065220  65 72 20 74 6f 20 62 6c  6f 63 6b 20 77 68 69 63  |er to block whic|
00065230  68 20 63 6f 6e 74 61 69  6e 73 20 77 69 6e 64 6f  |h contains windo|
00065240  77 20 68 61 6e 64 6c 65  2e 0a 0a 5c 3c 3d 09 42  |w handle...\<=.B|
00065250  6c 6f 63 6b 20 61 74 20  52 31 20 63 6f 6e 74 61  |lock at R1 conta|
00065260  69 6e 73 20 3a 0a 09 20  20 30 09 57 69 6e 64 6f  |ins :..  0.Windo|
00065270  77 20 48 61 6e 64 6c 65  0a 09 20 20 34 09 56 69  |w Handle..  4.Vi|
00065280  73 69 62 6c 65 20 61 72  65 61 20 6d 69 6e 69 6d  |sible area minim|
00065290  75 6d 20 78 0a 09 20 20  38 09 56 69 73 69 62 6c  |um x..  8.Visibl|
000652a0  65 20 61 72 65 61 20 6d  69 6e 69 6d 75 6d 20 79  |e area minimum y|
000652b0  0a 09 20 20 31 32 09 56  69 73 69 62 6c 65 20 61  |..  12.Visible a|
000652c0  72 65 61 20 6d 61 78 69  6d 75 6d 20 78 0a 09 20  |rea maximum x.. |
000652d0  20 31 36 09 56 69 73 69  62 6c 65 20 61 72 65 61  | 16.Visible area|
000652e0  20 6d 61 78 69 6d 75 6d  20 79 0a 09 20 20 32 30  | maximum y..  20|
000652f0  09 53 63 72 6f 6c 6c 20  78 20 6f 66 66 73 65 74  |.Scroll x offset|
00065300  0a 09 20 20 32 34 09 53  63 72 6f 6c 6c 20 79 20  |..  24.Scroll y |
00065310  6f 66 66 73 65 74 0a 09  20 20 32 38 09 48 61 6e  |offset..  28.Han|
00065320  64 6c 65 20 74 6f 20 6f  70 65 6e 20 77 69 6e 64  |dle to open wind|
00065330  6f 77 20 62 65 68 69 6e  64 20 28 2d 31 3d 74 6f  |ow behind (-1=to|
00065340  70 2c 2d 32 3d 62 6f 74  74 6f 6d 29 0a 09 20 20  |p,-2=bottom)..  |
00065350  33 32 09 3c 57 69 6e 64  6f 77 20 66 6c 61 67 73  |32.<Window flags|
00065360  3d 3e 77 69 6d 70 5f 77  69 6e 64 6f 77 66 6c 61  |=>wimp_windowfla|
00065370  67 73 3e 00 44 41 54 41  c7 01 00 00 57 69 6d 70  |gs>.DATA....Wimp|
00065380  5f 47 65 74 52 65 63 74  61 6e 67 6c 65 20 20 28  |_GetRectangle  (|
00065390  26 34 30 30 43 41 29 0a  23 50 61 72 65 6e 74 20  |&400CA).#Parent |
000653a0  57 69 6d 70 5f 0a 3d 3e  09 52 31 20 3d 09 70 6f  |Wimp_.=>.R1 =.po|
000653b0  69 6e 74 65 72 20 74 6f  20 62 6c 6f 63 6b 20 63  |inter to block c|
000653c0  6f 6e 74 61 69 6e 69 6e  67 20 77 69 6e 64 6f 77  |ontaining window|
000653d0  20 68 61 6e 64 6c 65 0a  5c 3c 3d 09 52 30 20 3d  | handle.\<=.R0 =|
000653e0  09 30 20 69 66 20 6e 6f  20 6d 6f 72 65 0a 09 42  |.0 if no more..B|
000653f0  6c 6f 63 6b 20 61 74 20  52 31 20 69 73 20 3c 75  |lock at R1 is <u|
00065400  70 64 61 74 65 64 3d 3e  2e 62 6c 6f 63 6b 3e 0a  |pdated=>.block>.|
00065410  0a 54 68 69 73 20 53 57  49 20 72 65 74 75 72 6e  |.This SWI return|
00065420  73 20 69 6e 66 6f 20 6f  66 20 74 68 65 20 6e 65  |s info of the ne|
00065430  78 74 20 72 65 63 74 61  6e 67 6c 65 20 74 6f 20  |xt rectangle to |
00065440  62 65 20 72 65 64 72 61  77 6e 2e 0a 23 0a 23 53  |be redrawn..#.#S|
00065450  75 62 70 61 67 65 20 62  6c 6f 63 6b 0a 52 65 63  |ubpage block.Rec|
00065460  74 61 6e 67 6c 65 20 74  6f 20 62 65 20 72 65 64  |tangle to be red|
00065470  72 61 77 6e 0a 30 09 57  69 6e 64 6f 77 20 68 61  |rawn.0.Window ha|
00065480  6e 64 6c 65 0a 34 09 56  69 73 69 62 6c 65 20 61  |ndle.4.Visible a|
00065490  72 65 61 09 6d 69 6e 78  20 28 69 6e 63 6c 29 0a  |rea.minx (incl).|
000654a0  38 09 20 09 09 6d 69 6e  79 20 28 69 6e 63 6c 29  |8. ..miny (incl)|
000654b0  0a 31 32 09 20 09 09 6d  61 78 78 20 28 65 78 63  |.12. ..maxx (exc|
000654c0  6c 29 0a 31 36 09 20 09  09 6d 61 78 79 20 28 65  |l).16. ..maxy (e|
000654d0  78 63 6c 29 0a 32 30 09  53 63 72 6f 6c 6c 78 0a  |xcl).20.Scrollx.|
000654e0  32 34 09 53 63 72 6f 6c  6c 79 0a 32 38 09 52 65  |24.Scrolly.28.Re|
000654f0  64 72 61 77 20 72 65 63  74 09 6d 69 6e 78 20 28  |draw rect.minx (|
00065500  69 6e 63 6c 29 0a 33 32  09 20 09 09 6d 69 6e 79  |incl).32. ..miny|
00065510  20 28 69 6e 63 6c 29 0a  33 36 09 20 09 09 6d 61  | (incl).36. ..ma|
00065520  78 78 20 28 65 78 63 6c  29 0a 34 30 09 20 09 09  |xx (excl).40. ..|
00065530  6d 61 78 79 20 28 65 78  63 6c 29 00 44 49 52 24  |maxy (excl).DIR$|
00065540  4c 01 00 00 4c 01 00 00  88 56 06 00 46 ff ff ff  |L...L....V..F...|
00065550  f2 3c 51 29 a7 01 00 00  13 00 00 00 00 00 00 00  |.<Q)............|
00065560  43 61 72 65 74 50 6f 73  69 74 69 6f 6e 00 00 00  |CaretPosition...|
00065570  30 58 06 00 45 ff ff ff  34 ce ed ff 96 00 00 00  |0X..E...4.......|
00065580  13 00 00 00 00 00 00 00  43 6f 6c 6f 75 72 00 00  |........Colour..|
00065590  c8 58 06 00 45 ff ff ff  95 bc ed ff 5a 01 00 00  |.X..E.......Z...|
000655a0  13 00 00 00 00 00 00 00  45 78 74 65 6e 74 00 00  |........Extent..|
000655b0  24 5a 06 00 45 ff ff ff  91 ac ed ff c4 00 00 00  |$Z..E...........|
000655c0  13 00 00 00 00 00 00 00  46 6f 6e 74 43 6f 6c 6f  |........FontColo|
000655d0  75 72 73 00 e8 5a 06 00  46 ff ff ff 18 03 74 47  |urs..Z..F.....tG|
000655e0  ad 01 00 00 13 00 00 00  00 00 00 00 49 63 6f 6e  |............Icon|
000655f0  53 74 61 74 65 00 00 00  98 5c 06 00 47 ff ff ff  |State....\..G...|
00065600  3a f2 18 0a 0c 01 00 00  13 00 00 00 00 00 00 00  |:...............|
00065610  4d 6f 64 65 00 00 00 00  a4 5d 06 00 45 ff ff ff  |Mode.....]..E...|
00065620  5b 85 ed ff 32 01 00 00  13 00 00 00 00 00 00 00  |[...2...........|
00065630  50 6f 69 6e 74 65 72 53  68 61 70 65 00 00 00 00  |PointerShape....|
00065640  d8 5e 06 00 46 ff ff ff  09 60 98 1c f1 01 00 00  |.^..F....`......|
00065650  13 00 00 00 00 00 00 00  50 61 6c 65 74 74 65 00  |........Palette.|
00065660  cc 60 06 00 47 ff ff ff  ed 1a 19 0a e8 00 00 00  |.`..G...........|
00065670  13 00 00 00 00 00 00 00  57 61 74 63 68 64 6f 67  |........Watchdog|
00065680  53 74 61 74 65 00 00 00  44 41 54 41 a7 01 00 00  |State...DATA....|
00065690  57 69 6d 70 5f 53 65 74  43 61 72 65 74 50 6f 73  |Wimp_SetCaretPos|
000656a0  69 74 69 6f 6e 20 20 28  26 34 30 30 44 32 29 0a  |ition  (&400D2).|
000656b0  23 50 61 72 65 6e 74 20  57 69 6d 70 5f 0a 3d 3e  |#Parent Wimp_.=>|
000656c0  09 52 30 20 3d 20 77 69  6e 64 6f 77 20 68 61 6e  |.R0 = window han|
000656d0  64 6c 65 20 28 2d 31 20  74 6f 20 74 75 72 6e 20  |dle (-1 to turn |
000656e0  6f 66 66 29 0a 09 52 31  20 3d 20 69 63 6f 6e 20  |off)..R1 = icon |
000656f0  68 61 6e 64 6c 65 2c 20  6f 72 20 2d 31 0a 09 52  |handle, or -1..R|
00065700  32 20 3d 20 78 20 6f 66  66 73 65 74 0a 09 52 33  |2 = x offset..R3|
00065710  20 3d 20 79 20 6f 66 66  73 65 74 0a 09 52 34 20  | = y offset..R4 |
00065720  3d 20 3c 68 65 69 67 68  74 20 2b 20 66 6c 61 67  |= <height + flag|
00065730  73 3d 3e 77 69 6d 70 5f  63 61 72 65 74 68 66 3e  |s=>wimp_carethf>|
00065740  2c 20 6f 72 20 2d 31 0a  09 52 35 20 3d 20 69 6e  |, or -1..R5 = in|
00065750  64 65 78 20 69 6e 74 6f  20 73 74 72 69 6e 67 2c  |dex into string,|
00065760  20 6f 72 20 2d 31 0a 0a  54 68 69 73 20 53 57 49  | or -1..This SWI|
00065770  20 6d 6f 76 65 73 20 63  61 72 65 74 20 74 6f 20  | moves caret to |
00065780  61 20 6e 65 77 20 70 6f  73 69 74 69 6f 6e 2e 0a  |a new position..|
00065790  49 66 20 74 68 65 20 63  61 72 65 74 20 69 73 20  |If the caret is |
000657a0  6d 6f 76 65 64 20 74 6f  20 61 20 6e 65 77 20 77  |moved to a new w|
000657b0  69 6e 64 6f 77 2c 20 61  20 4c 6f 73 65 43 61 72  |indow, a LoseCar|
000657c0  65 74 20 6d 65 73 73 61  67 65 20 69 73 20 73 65  |et message is se|
000657d0  6e 74 20 74 6f 20 74 68  65 20 6f 77 6e 65 72 20  |nt to the owner |
000657e0  6f 66 20 74 68 65 20 6f  6c 64 20 77 69 6e 64 6f  |of the old windo|
000657f0  77 2c 20 61 6e 64 20 61  20 47 61 69 6e 43 61 72  |w, and a GainCar|
00065800  65 74 20 6d 65 73 73 61  67 65 20 69 73 20 73 65  |et message is se|
00065810  6e 74 20 74 6f 20 74 68  65 20 6f 77 6e 65 72 20  |nt to the owner |
00065820  6f 66 20 74 68 65 20 6e  65 77 20 6f 6e 65 2e 00  |of the new one..|
00065830  44 41 54 41 96 00 00 00  57 69 6d 70 5f 53 65 74  |DATA....Wimp_Set|
00065840  43 6f 6c 6f 75 72 20 20  28 26 34 30 30 45 36 29  |Colour  (&400E6)|
00065850  0a 23 50 61 72 65 6e 74  20 57 69 6d 70 5f 0a 3d  |.#Parent Wimp_.=|
00065860  3e 09 52 30 20 3a 09 62  69 74 73 09 30 2d 33 20  |>.R0 :.bits.0-3 |
00065870  57 69 6d 70 20 63 6f 6c  6f 75 72 0a 09 20 09 62  |Wimp colour.. .b|
00065880  69 74 73 09 34 2d 36 20  47 43 4f 4c 20 61 63 74  |its.4-6 GCOL act|
00065890  69 6f 6e 0a 09 20 09 62  69 74 09 37 09 30 20 66  |ion.. .bit.7.0 f|
000658a0  6f 72 20 66 6f 72 65 67  72 6f 75 6e 64 2c 0a 09  |or foreground,..|
000658b0  20 09 20 09 20 09 31 20  66 6f 72 20 62 61 63 6b  | . . .1 for back|
000658c0  67 72 6f 75 6e 64 00 00  44 41 54 41 5a 01 00 00  |ground..DATAZ...|
000658d0  57 69 6d 70 5f 53 65 74  45 78 74 65 6e 74 20 28  |Wimp_SetExtent (|
000658e0  26 34 30 30 44 37 29 0a  23 50 61 72 65 6e 74 20  |&400D7).#Parent |
000658f0  57 69 6d 70 5f 0a 3d 3e  09 52 30 20 3d 20 77 69  |Wimp_.=>.R0 = wi|
00065900  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 09 52 31 20  |ndow handle..R1 |
00065910  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |= pointer to blo|
00065920  63 6b 0a 0a 09 52 31 09  2b 30 09 6e 65 77 20 77  |ck...R1.+0.new w|
00065930  6f 72 6b 61 72 65 61 20  6d 69 6e 20 78 0a 09 20  |orkarea min x.. |
00065940  09 2b 34 09 6e 65 77 20  77 6f 72 6b 61 72 65 61  |.+4.new workarea|
00065950  20 6d 69 6e 20 79 0a 09  20 09 2b 38 09 6e 65 77  | min y.. .+8.new|
00065960  20 77 6f 72 6b 61 72 65  61 20 6d 61 78 20 78 0a  | workarea max x.|
00065970  09 20 09 2b 31 32 09 6e  65 77 20 77 6f 72 6b 61  |. .+12.new worka|
00065980  72 65 61 20 6d 61 78 20  79 0a 0a 56 69 73 69 62  |rea max y..Visib|
00065990  6c 65 20 77 6f 72 6b 61  72 65 61 20 6d 75 73 74  |le workarea must|
000659a0  20 62 65 20 77 68 6f 6c  6c 79 20 77 69 74 68 69  | be wholly withi|
000659b0  6e 20 6e 65 77 20 77 6f  72 6b 61 72 65 61 20 65  |n new workarea e|
000659c0  78 74 65 6e 74 2e 0a 0a  57 6f 72 6b 61 72 65 61  |xtent...Workarea|
000659d0  20 65 78 74 65 6e 74 20  6d 75 73 74 20 63 6f 72  | extent must cor|
000659e0  72 65 73 70 6f 6e 64 20  74 6f 20 61 20 77 68 6f  |respond to a who|
000659f0  6c 65 20 6e 75 6d 62 65  72 20 6f 66 20 70 69 78  |le number of pix|
00065a00  65 6c 73 2c 20 6f 72 20  73 74 72 61 6e 67 65 20  |els, or strange |
00065a10  65 66 66 65 63 74 73 20  6d 61 79 20 6f 63 63 75  |effects may occu|
00065a20  72 2e 00 00 44 41 54 41  c4 00 00 00 57 69 6d 70  |r...DATA....Wimp|
00065a30  5f 53 65 74 46 6f 6e 74  43 6f 6c 6f 75 72 73 20  |_SetFontColours |
00065a40  20 28 26 34 30 30 46 33  29 0a 23 50 61 72 65 6e  | (&400F3).#Paren|
00065a50  74 20 57 69 6d 70 5f 0a  3d 3e 09 52 31 20 3d 20  |t Wimp_.=>.R1 = |
00065a60  46 6f 6e 74 20 62 61 63  6b 67 72 6f 75 6e 64 20  |Font background |
00065a70  63 6f 6c 6f 75 72 0a 09  52 32 20 3d 20 46 6f 6e  |colour..R2 = Fon|
00065a80  74 20 66 6f 72 65 67 72  6f 75 6e 64 20 63 6f 6c  |t foreground col|
00065a90  6f 75 72 0a 0a 54 68 69  73 20 53 57 49 20 73 65  |our..This SWI se|
00065aa0  74 73 20 75 70 20 74 68  65 20 61 6e 74 69 2d 61  |ts up the anti-a|
00065ab0  6c 69 61 73 65 64 20 66  6f 6e 74 20 63 6f 6c 6f  |liased font colo|
00065ac0  75 72 73 2c 20 66 72 6f  6d 20 74 68 65 20 74 77  |urs, from the tw|
00065ad0  6f 20 73 75 70 70 6c 69  65 64 20 77 69 6d 70 2d  |o supplied wimp-|
00065ae0  63 6f 6c 6f 75 72 73 2e  44 41 54 41 ad 01 00 00  |colours.DATA....|
00065af0  57 69 6d 70 5f 53 65 74  49 63 6f 6e 53 74 61 74  |Wimp_SetIconStat|
00065b00  65 20 20 28 26 34 30 30  43 44 29 0a 23 50 61 72  |e  (&400CD).#Par|
00065b10  65 6e 74 20 57 69 6d 70  5f 0a 3d 3e 09 52 31 20  |ent Wimp_.=>.R1 |
00065b20  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |= pointer to blo|
00065b30  63 6b 20 3a 0a 09 20 20  30 09 57 69 6e 64 6f 77  |ck :..  0.Window|
00065b40  20 68 61 6e 64 6c 65 20  28 2d 31 2c 2d 32 20 66  | handle (-1,-2 f|
00065b50  6f 72 20 69 63 6f 6e 62  61 72 29 0a 09 20 20 34  |or iconbar)..  4|
00065b60  09 49 63 6f 6e 20 68 61  6e 64 6c 65 0a 09 20 20  |.Icon handle..  |
00065b70  38 09 45 4f 52 20 77 6f  72 64 0a 09 20 20 31 32  |8.EOR word..  12|
00065b80  09 43 6c 65 61 72 20 77  6f 72 64 0a 0a 54 68 69  |.Clear word..Thi|
00065b90  73 20 53 57 49 20 73 65  74 73 20 74 68 65 20 69  |s SWI sets the i|
00065ba0  63 6f 6e 27 73 20 3c 66  6c 61 67 73 3d 3e 77 69  |con's <flags=>wi|
00065bb0  6d 70 5f 69 63 6f 6e 66  6c 61 67 73 3e 20 61 73  |mp_iconflags> as|
00065bc0  20 66 6f 6c 6c 6f 77 73  20 3a 0a 20 20 6e 65 77  | follows :.  new|
00065bd0  20 3d 20 28 6f 6c 64 20  42 49 43 20 63 6c 65 61  | = (old BIC clea|
00065be0  72 5f 77 6f 72 64 29 20  45 4f 52 20 45 4f 52 5f  |r_word) EOR EOR_|
00065bf0  77 6f 72 64 0a 0a 23 54  61 62 0a 20 43 09 45 09  |word..#Tab. C.E.|
00065c00  45 66 66 65 63 74 0a 23  4c 69 6e 65 0a 20 30 09  |Effect.#Line. 0.|
00065c10  30 09 50 72 65 73 65 72  76 65 20 62 69 74 0a 20  |0.Preserve bit. |
00065c20  30 09 31 09 54 6f 67 67  6c 65 20 62 69 74 0a 20  |0.1.Toggle bit. |
00065c30  31 09 30 09 43 6c 65 61  72 20 62 69 74 0a 20 31  |1.0.Clear bit. 1|
00065c40  09 31 09 53 65 74 20 62  69 74 0a 0a 54 68 69 73  |.1.Set bit..This|
00065c50  20 53 57 49 20 61 6c 73  6f 20 63 61 75 73 65 73  | SWI also causes|
00065c60  20 74 68 65 20 69 63 6f  6e 20 74 6f 20 62 65 20  | the icon to be |
00065c70  72 65 64 72 61 77 6e 2c  20 65 76 65 6e 20 69 66  |redrawn, even if|
00065c80  20 6e 6f 20 62 69 74 73  20 61 72 65 20 63 68 61  | no bits are cha|
00065c90  6e 67 65 64 2e 00 00 00  44 41 54 41 0c 01 00 00  |nged....DATA....|
00065ca0  57 69 6d 70 5f 53 65 74  4d 6f 64 65 20 20 28 26  |Wimp_SetMode  (&|
00065cb0  34 30 30 45 33 29 0a 23  50 61 72 65 6e 74 20 57  |400E3).#Parent W|
00065cc0  69 6d 70 5f 0a 3d 3e 09  52 30 20 3d 20 4d 6f 64  |imp_.=>.R0 = Mod|
00065cd0  65 20 6e 75 6d 62 65 72  2c 20 6f 72 20 70 6f 69  |e number, or poi|
00065ce0  6e 74 65 72 20 74 6f 20  3c 4d 6f 64 65 20 53 65  |nter to <Mode Se|
00065cf0  6c 65 63 74 6f 72 3d 3e  57 69 6d 70 5f 4d 6f 64  |lector=>Wimp_Mod|
00065d00  65 53 65 6c 65 63 74 3e  0a 3c 3d 09 53 63 72 65  |eSelect>.<=.Scre|
00065d10  65 6e 20 75 70 64 61 74  65 64 2e 0a 0a 54 68 69  |en updated...Thi|
00065d20  73 20 53 57 49 20 63 68  61 6e 67 65 73 20 74 68  |s SWI changes th|
00065d30  65 20 64 69 73 70 6c 61  79 20 6d 6f 64 65 20 75  |e display mode u|
00065d40  73 65 64 20 62 79 20 57  69 6d 70 2e 20 50 61 6c  |sed by Wimp. Pal|
00065d50  65 74 74 65 20 61 6e 64  20 6d 6f 75 73 65 2d 70  |ette and mouse-p|
00065d60  6f 69 6e 74 65 72 20 61  72 65 20 72 65 73 65 74  |ointer are reset|
00065d70  2e 20 53 63 72 65 65 6e  20 6d 65 6d 6f 72 79 20  |. Screen memory |
00065d80  69 73 20 72 65 61 6c 6c  6f 63 61 74 65 64 2c 20  |is reallocated, |
00065d90  61 6e 64 20 73 63 72 65  65 6e 20 72 65 62 75 69  |and screen rebui|
00065da0  6c 74 2e 0a 44 41 54 41  32 01 00 00 57 69 6d 70  |lt..DATA2...Wimp|
00065db0  5f 53 65 74 50 6f 69 6e  74 65 72 53 68 61 70 65  |_SetPointerShape|
00065dc0  0a 23 50 61 72 65 6e 74  20 57 69 6d 70 5f 0a 3d  |.#Parent Wimp_.=|
00065dd0  3e 09 52 30 20 3d 20 53  68 61 70 65 20 6e 75 6d  |>.R0 = Shape num|
00065de0  62 65 72 20 28 30 20 74  6f 20 74 75 72 6e 20 6f  |ber (0 to turn o|
00065df0  66 66 29 0a 09 52 31 20  3d 20 70 74 72 20 74 6f  |ff)..R1 = ptr to|
00065e00  20 73 68 61 70 65 2d 64  61 74 61 20 28 2d 31 20  | shape-data (-1 |
00065e10  66 6f 72 20 6e 6f 20 63  68 61 6e 67 65 29 0a 09  |for no change)..|
00065e20  52 32 20 3d 20 77 69 64  74 68 20 69 6e 20 70 69  |R2 = width in pi|
00065e30  78 65 6c 73 20 28 6d 75  6c 74 69 70 6c 65 20 6f  |xels (multiple o|
00065e40  66 20 34 29 0a 09 52 33  20 3d 20 68 65 69 67 68  |f 4)..R3 = heigh|
00065e50  74 20 69 6e 20 70 69 78  65 6c 73 0a 09 52 34 20  |t in pixels..R4 |
00065e60  3d 20 61 63 74 69 76 65  20 70 6f 69 6e 74 20 78  |= active point x|
00065e70  20 6f 66 66 73 65 74 0a  09 52 35 20 3d 20 61 63  | offset..R5 = ac|
00065e80  74 69 76 65 20 70 6f 69  6e 74 20 79 20 6f 66 66  |tive point y off|
00065e90  73 65 74 0a 0a 54 68 69  73 20 53 57 49 20 69 73  |set..This SWI is|
00065ea0  20 6f 75 74 64 61 74 65  64 2e 0a 4e 65 77 20 70  | outdated..New p|
00065eb0  72 6f 67 72 61 6d 73 20  73 68 6f 75 6c 64 20 75  |rograms should u|
00065ec0  73 65 20 3c 57 69 6d 70  5f 53 70 72 69 74 65 4f  |se <Wimp_SpriteO|
00065ed0  70 3e 2c 33 36 2e 00 00  44 41 54 41 f1 01 00 00  |p>,36...DATA....|
00065ee0  57 69 6d 70 5f 53 65 74  50 61 6c 65 74 74 65 20  |Wimp_SetPalette |
00065ef0  20 28 26 34 30 30 45 34  29 0a 23 50 61 72 65 6e  | (&400E4).#Paren|
00065f00  74 20 57 69 6d 70 5f 0a  3d 3e 09 52 31 20 3d 20  |t Wimp_.=>.R1 = |
00065f10  32 30 2d 77 6f 72 64 20  3c 70 61 6c 65 74 74 65  |20-word <palette|
00065f20  20 62 6c 6f 63 6b 3d 3e  2e 62 6c 6f 63 6b 3e 0a  | block=>.block>.|
00065f30  0a 54 68 69 73 20 53 57  49 20 72 65 70 72 6f 67  |.This SWI reprog|
00065f40  72 61 6d 73 20 74 68 65  20 57 69 6d 70 2d 70 61  |rams the Wimp-pa|
00065f50  6c 65 74 74 65 2e 20 49  6e 20 31 36 2d 63 6f 6c  |lette. In 16-col|
00065f60  6f 75 72 20 6d 6f 64 65  73 2c 20 74 68 65 20 76  |our modes, the v|
00065f70  69 64 65 6f 2d 70 61 6c  65 74 74 65 20 69 73 20  |ideo-palette is |
00065f80  61 6c 73 6f 20 72 65 70  72 6f 67 72 61 6d 6d 65  |also reprogramme|
00065f90  64 2c 20 61 6e 64 20 69  6e 20 6f 74 68 65 72 20  |d, and in other |
00065fa0  6d 6f 64 65 73 20 74 68  65 20 57 69 6d 70 27 73  |modes the Wimp's|
00065fb0  20 63 6f 6c 6f 75 72 20  6c 6f 6f 6b 75 70 20 74  | colour lookup t|
00065fc0  61 62 6c 65 20 6d 61 79  20 63 68 61 6e 67 65 2e  |able may change.|
00065fd0  20 3d 3e 20 59 6f 75 20  6d 75 73 74 20 66 6f 72  | => You must for|
00065fe0  63 65 20 61 20 72 65 64  72 61 77 20 6f 66 20 73  |ce a redraw of s|
00065ff0  63 72 65 65 6e 2e 0a 23  0a 23 53 75 62 70 61 67  |creen..#.#Subpag|
00066000  65 20 62 6c 6f 63 6b 0a  50 61 6c 65 74 74 65 20  |e block.Palette |
00066010  62 6c 6f 63 6b 0a 20 20  30 09 57 69 6d 70 20 63  |block.  0.Wimp c|
00066020  6f 6c 6f 75 72 20 30 0a  20 20 34 09 57 69 6d 70  |olour 0.  4.Wimp|
00066030  20 63 6f 6c 6f 75 72 20  31 0a 20 20 2e 0a 20 20  | colour 1.  ..  |
00066040  2e 0a 20 36 30 09 57 69  6d 70 20 63 6f 6c 6f 75  |.. 60.Wimp colou|
00066050  72 20 31 35 0a 20 36 34  09 42 6f 72 64 65 72 20  |r 15. 64.Border |
00066060  63 6f 6c 6f 75 72 0a 20  36 38 09 50 6f 69 6e 74  |colour. 68.Point|
00066070  65 72 20 63 6f 6c 6f 75  72 20 30 0a 20 37 32 09  |er colour 0. 72.|
00066080  50 6f 69 6e 74 65 72 20  63 6f 6c 6f 75 72 20 31  |Pointer colour 1|
00066090  0a 20 37 36 09 50 6f 69  6e 74 65 72 20 63 6f 6c  |. 76.Pointer col|
000660a0  6f 75 72 20 32 0a 20 0a  41 6c 6c 20 65 6e 74 72  |our 2. .All entr|
000660b0  69 65 73 20 68 61 76 65  20 66 6f 72 6d 61 74 20  |ies have format |
000660c0  26 42 42 47 47 52 52 30  30 00 00 00 44 41 54 41  |&BBGGRR00...DATA|
000660d0  e8 00 00 00 57 69 6d 70  5f 53 65 74 57 61 74 63  |....Wimp_SetWatc|
000660e0  68 64 6f 67 53 74 61 74  65 20 20 28 26 34 30 30  |hdogState  (&400|
000660f0  46 41 29 20 28 33 2e 35  29 0a 23 50 61 72 65 6e  |FA) (3.5).#Paren|
00066100  74 20 57 69 6d 70 5f 0a  3d 3e 09 52 30 20 3d 09  |t Wimp_.=>.R0 =.|
00066110  73 74 61 74 65 0a 09 20  09 20 20 30 20 3a 20 74  |state.. .  0 : t|
00066120  75 72 6e 20 57 61 74 63  68 64 6f 67 20 6f 66 66  |urn Watchdog off|
00066130  0a 09 20 09 20 20 31 20  3a 20 74 75 72 6e 20 57  |.. .  1 : turn W|
00066140  61 74 63 68 64 6f 67 20  6f 6e 0a 09 52 31 20 3d  |atchdog on..R1 =|
00066150  09 63 6f 64 65 77 6f 72  64 20 28 6d 75 73 74 20  |.codeword (must |
00066160  62 65 20 74 68 65 20 73  61 6d 65 20 66 6f 72 20  |be the same for |
00066170  6f 66 66 20 61 73 20 66  6f 72 20 6f 6e 29 0a 0a  |off as for on)..|
00066180  53 77 69 74 63 68 65 73  20 57 61 74 63 68 64 6f  |Switches Watchdo|
00066190  67 20 70 72 6f 74 65 63  74 69 6f 6e 20 28 41 6c  |g protection (Al|
000661a0  74 2d 42 72 65 61 6b 29  20 6f 6e 20 61 6e 64 20  |t-Break) on and |
000661b0  6f 66 66 2e 44 49 52 24  d8 01 00 00 d8 01 00 00  |off.DIR$........|
000661c0  8c 63 06 00 46 ff ff ff  91 b5 5f 4e cf 03 00 00  |.c..F....._N....|
000661d0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000661e0  5c 67 06 00 45 fd ff ff  b8 87 f2 ff 0f 01 00 00  |\g..E...........|
000661f0  13 00 00 00 00 00 00 00  31 00 00 00 6c 68 06 00  |........1...lh..|
00066200  45 fd ff ff 0a 81 f2 ff  f1 01 00 00 13 00 00 00  |E...............|
00066210  00 00 00 00 31 30 00 00  60 6a 06 00 45 fd ff ff  |....10..`j..E...|
00066220  d2 6e f2 ff 22 01 00 00  13 00 00 00 00 00 00 00  |.n.."...........|
00066230  31 31 00 00 84 6b 06 00  45 fd ff ff 55 69 f2 ff  |11...k..E...Ui..|
00066240  6c 01 00 00 13 00 00 00  00 00 00 00 31 32 00 00  |l...........12..|
00066250  f0 6c 06 00 45 fd ff ff  47 63 f2 ff f7 01 00 00  |.l..E...Gc......|
00066260  13 00 00 00 00 00 00 00  32 00 00 00 e8 6e 06 00  |........2....n..|
00066270  45 fd ff ff bb 5a f2 ff  15 01 00 00 13 00 00 00  |E....Z..........|
00066280  00 00 00 00 33 00 00 00  00 70 06 00 45 fd ff ff  |....3....p..E...|
00066290  aa 57 f2 ff 64 01 00 00  13 00 00 00 00 00 00 00  |.W..d...........|
000662a0  34 00 00 00 64 71 06 00  45 fd ff ff 2d 52 f2 ff  |4...dq..E...-R..|
000662b0  3a 02 00 00 13 00 00 00  00 00 00 00 35 00 00 00  |:...........5...|
000662c0  a0 73 06 00 46 fd ff ff  ce c3 ba 56 ce 00 00 00  |.s..F......V....|
000662d0  13 00 00 00 00 00 00 00  36 00 00 00 70 74 06 00  |........6...pt..|
000662e0  45 fd ff ff e9 36 f2 ff  38 01 00 00 13 00 00 00  |E....6..8.......|
000662f0  00 00 00 00 37 00 00 00  a8 75 06 00 46 fd ff ff  |....7....u..F...|
00066300  f1 a9 0f 50 87 01 00 00  13 00 00 00 00 00 00 00  |...P............|
00066310  38 00 00 00 30 77 06 00  46 fd ff ff 6f ff 50 4a  |8...0w..F...o.PJ|
00066320  72 02 00 00 13 00 00 00  00 00 00 00 38 61 00 00  |r...........8a..|
00066330  a4 79 06 00 45 fd ff ff  b0 1e f2 ff 8d 01 00 00  |.y..E...........|
00066340  13 00 00 00 00 00 00 00  39 00 00 00 34 7b 06 00  |........9...4{..|
00066350  46 ff ff ff c0 da 5f 4e  3e 01 00 00 13 00 00 00  |F....._N>.......|
00066360  00 00 00 00 49 64 6c 65  00 00 00 00 74 7c 06 00  |....Idle....t|..|
00066370  46 fd ff ff 70 e5 bd 11  47 02 00 00 13 00 00 00  |F...p...G.......|
00066380  00 00 00 00 6d 61 73 6b  00 00 00 00 44 41 54 41  |....mask....DATA|
00066390  cf 03 00 00 57 69 6d 70  5f 50 6f 6c 6c 20 28 26  |....Wimp_Poll (&|
000663a0  34 30 30 43 37 29 0a 23  50 61 72 65 6e 74 20 57  |400C7).#Parent W|
000663b0  69 6d 70 5f 0a 3d 3e 09  52 30 20 3d 20 3c 6d 61  |imp_.=>.R0 = <ma|
000663c0  73 6b 3d 3e 77 69 6d 70  5f 70 6f 6c 6c 6d 61 73  |sk=>wimp_pollmas|
000663d0  6b 3e 09 5c 3c 3d 09 52  30 20 3d 20 72 65 61 73  |k>.\<=.R0 = reas|
000663e0  6f 6e 20 63 6f 64 65 0a  09 52 31 20 3d 20 2a 20  |on code..R1 = * |
000663f0  32 35 36 20 62 79 74 65  20 62 6c 6f 63 6b 09 09  |256 byte block..|
00066400  20 09 52 31 20 3d 20 42  6c 6f 63 6b 20 63 6f 6e  | .R1 = Block con|
00066410  74 61 69 6e 73 20 72 65  74 75 72 6e 20 64 61 74  |tains return dat|
00066420  61 2e 0a 09 52 33 20 3d  20 70 6f 69 6e 74 65 72  |a...R3 = pointer|
00066430  20 74 6f 20 70 6f 6c 6c  77 6f 72 64 20 2a 69 6e  | to pollword *in|
00066440  20 52 4d 41 2a 0a 0a 52  65 61 73 6f 6e 20 43 6f  | RMA*..Reason Co|
00066450  64 65 73 20 3a 0a 0a 23  54 61 62 6c 65 20 39 20  |des :..#Table 9 |
00066460  33 30 0a 20 20 20 30 20  20 20 20 4e 6f 20 52 65  |30.   0    No Re|
00066470  61 73 6f 6e 0a 20 20 20  31 20 20 20 20 3c 52 65  |ason.   1    <Re|
00066480  64 72 61 77 20 57 69 6e  64 6f 77 3d 3e 77 69 6d  |draw Window=>wim|
00066490  70 5f 70 6f 6c 6c 31 3e  0a 20 20 20 32 20 20 20  |p_poll1>.   2   |
000664a0  20 3c 4f 70 65 6e 20 57  69 6e 64 6f 77 3d 3e 77  | <Open Window=>w|
000664b0  69 6d 70 5f 70 6f 6c 6c  32 3e 0a 20 20 20 33 20  |imp_poll2>.   3 |
000664c0  20 20 20 3c 43 6c 6f 73  65 20 57 69 6e 64 6f 77  |   <Close Window|
000664d0  3d 3e 77 69 6d 70 5f 70  6f 6c 6c 33 3e 0a 20 20  |=>wimp_poll3>.  |
000664e0  20 34 20 20 20 20 3c 50  6f 69 6e 74 65 72 20 4c  | 4    <Pointer L|
000664f0  65 61 76 69 6e 67 20 57  69 6e 64 6f 77 3d 3e 77  |eaving Window=>w|
00066500  69 6d 70 5f 70 6f 6c 6c  34 3e 0a 20 20 20 35 20  |imp_poll4>.   5 |
00066510  20 20 20 3c 50 6f 69 6e  74 65 72 20 45 6e 74 65  |   <Pointer Ente|
00066520  72 69 6e 67 20 57 69 6e  64 6f 77 3d 3e 77 69 6d  |ring Window=>wim|
00066530  70 5f 70 6f 6c 6c 35 3e  0a 20 20 20 36 20 20 20  |p_poll5>.   6   |
00066540  20 3c 4d 6f 75 73 65 20  43 6c 69 63 6b 3d 3e 77  | <Mouse Click=>w|
00066550  69 6d 70 5f 70 6f 6c 6c  36 3e 0a 20 20 20 37 20  |imp_poll6>.   7 |
00066560  20 20 20 3c 55 73 65 72  20 44 72 61 67 20 42 6f  |   <User Drag Bo|
00066570  78 3d 3e 77 69 6d 70 5f  70 6f 6c 6c 37 3e 0a 20  |x=>wimp_poll7>. |
00066580  20 20 38 20 20 20 20 3c  4b 65 79 20 50 72 65 73  |  8    <Key Pres|
00066590  73 65 64 3d 3e 77 69 6d  70 5f 70 6f 6c 6c 38 3e  |sed=>wimp_poll8>|
000665a0  0a 20 20 20 39 20 20 20  20 3c 4d 65 6e 75 20 53  |.   9    <Menu S|
000665b0  65 6c 65 63 74 69 6f 6e  3d 3e 77 69 6d 70 5f 70  |election=>wimp_p|
000665c0  6f 6c 6c 39 3e 0a 20 20  31 30 20 20 20 20 3c 53  |oll9>.  10    <S|
000665d0  63 72 6f 6c 6c 20 52 65  71 75 65 73 74 3d 3e 77  |croll Request=>w|
000665e0  69 6d 70 5f 70 6f 6c 6c  31 30 3e 0a 20 20 31 31  |imp_poll10>.  11|
000665f0  20 20 20 20 3c 4c 6f 73  65 20 43 61 72 65 74 3d  |    <Lose Caret=|
00066600  3e 77 69 6d 70 5f 70 6f  6c 6c 31 31 3e 0a 20 20  |>wimp_poll11>.  |
00066610  31 32 20 20 20 20 3c 47  61 69 6e 20 43 61 72 65  |12    <Gain Care|
00066620  74 3d 3e 77 69 6d 70 5f  70 6f 6c 6c 31 32 3e 0a  |t=>wimp_poll12>.|
00066630  20 20 31 33 20 20 20 20  50 6f 6c 6c 77 6f 72 64  |  13    Pollword|
00066640  20 6e 6f 6e 2d 7a 65 72  6f 0a 20 20 31 34 2d 31  | non-zero.  14-1|
00066650  36 20 52 65 73 65 72 76  65 64 0a 20 20 31 37 20  |6 Reserved.  17 |
00066660  20 20 20 3c 55 73 65 72  20 4d 65 73 73 61 67 65  |   <User Message|
00066670  3d 3e 77 69 6d 70 5f 73  65 6e 64 6d 65 73 73 61  |=>wimp_sendmessa|
00066680  67 65 32 3e 0a 20 20 31  38 20 20 20 20 3c 55 73  |ge2>.  18    <Us|
00066690  65 72 20 4d 65 73 73 61  67 65 20 52 65 63 6f 72  |er Message Recor|
000666a0  64 65 64 3d 3e 77 69 6d  70 5f 73 65 6e 64 6d 65  |ded=>wimp_sendme|
000666b0  73 73 61 67 65 32 3e 0a  20 20 31 39 20 20 20 20  |ssage2>.  19    |
000666c0  3c 55 73 65 72 20 4d 65  73 73 61 67 65 20 41 63  |<User Message Ac|
000666d0  6b 6e 6f 77 6c 65 64 67  65 3d 3e 77 69 6d 70 5f  |knowledge=>wimp_|
000666e0  73 65 6e 64 6d 65 73 73  61 67 65 32 3e 0a 23 45  |sendmessage2>.#E|
000666f0  6e 64 54 61 62 6c 65 0a  0a 50 72 69 6f 72 69 74  |ndTable..Priorit|
00066700  79 20 3a 20 48 69 67 68  65 73 74 3a 20 31 37 2d  |y : Highest: 17-|
00066710  31 39 20 20 4e 65 78 74  3a 20 31 2d 36 2c 38 2c  |19  Next: 1-6,8,|
00066720  39 20 20 54 68 65 6e 3a  20 74 68 65 20 72 65 73  |9  Then: the res|
00066730  74 20 20 4c 6f 77 65 73  74 3a 30 0a 0a 52 65 6c  |t  Lowest:0..Rel|
00066740  61 74 65 64 20 53 57 49  73 20 3a 20 3c 57 69 6d  |ated SWIs : <Wim|
00066750  70 5f 50 6f 6c 6c 49 64  6c 65 3e 00 44 41 54 41  |p_PollIdle>.DATA|
00066760  0f 01 00 00 52 65 64 72  61 77 20 57 69 6e 64 6f  |....Redraw Windo|
00066770  77 20 52 65 71 75 65 73  74 20 28 31 29 0a 52 65  |w Request (1).Re|
00066780  74 75 72 6e 65 64 20 62  6c 6f 63 6b 20 63 6f 6e  |turned block con|
00066790  74 61 69 6e 73 20 3a 0a  20 20 20 30 20 20 57 69  |tains :.   0  Wi|
000667a0  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 0a 54 68 69  |ndow handle..Thi|
000667b0  73 20 69 6e 64 69 63 61  74 65 73 20 74 68 61 74  |s indicates that|
000667c0  20 73 6f 6d 65 20 6f 66  20 74 68 65 20 77 69 6e  | some of the win|
000667d0  64 6f 77 20 69 73 20 6f  75 74 20 6f 66 20 64 61  |dow is out of da|
000667e0  74 65 2c 20 61 6e 64 20  6e 65 65 64 73 20 74 6f  |te, and needs to|
000667f0  20 62 65 20 72 65 64 72  61 77 6e 2e 20 59 6f 75  | be redrawn. You|
00066800  20 73 68 6f 75 6c 64 20  65 6e 74 65 72 20 61 6e  | should enter an|
00066810  20 75 70 64 61 74 65 20  6c 6f 6f 70 3a 20 46 69  | update loop: Fi|
00066820  72 73 74 20 63 61 6c 6c  20 3c 57 69 6d 70 5f 52  |rst call <Wimp_R|
00066830  65 64 72 61 77 57 69 6e  64 6f 77 3e 2c 20 61 6e  |edrawWindow>, an|
00066840  64 20 74 68 65 6e 20 63  61 6c 6c 20 3c 57 69 6d  |d then call <Wim|
00066850  70 5f 47 65 74 52 65 63  74 61 6e 67 6c 65 3e 20  |p_GetRectangle> |
00066860  75 6e 74 69 6c 20 64 6f  6e 65 2e 00 44 41 54 41  |until done..DATA|
00066870  f1 01 00 00 53 63 72 6f  6c 6c 20 52 65 71 75 65  |....Scroll Reque|
00066880  73 74 20 28 31 30 29 0a  52 65 74 75 72 6e 65 64  |st (10).Returned|
00066890  20 62 6c 6f 63 6b 20 63  6f 6e 74 61 69 6e 73 20  | block contains |
000668a0  3a 0a 20 20 30 09 57 69  6e 64 6f 77 20 68 61 6e  |:.  0.Window han|
000668b0  64 6c 65 0a 20 20 34 09  56 69 73 69 62 6c 65 20  |dle.  4.Visible |
000668c0  61 72 65 61 20 6d 69 6e  69 6d 75 6d 20 78 0a 20  |area minimum x. |
000668d0  20 38 09 56 69 73 69 62  6c 65 20 61 72 65 61 20  | 8.Visible area |
000668e0  6d 69 6e 69 6d 75 6d 20  79 0a 20 20 31 32 09 56  |minimum y.  12.V|
000668f0  69 73 69 62 6c 65 20 61  72 65 61 20 6d 61 78 69  |isible area maxi|
00066900  6d 75 6d 20 78 0a 20 20  31 36 09 56 69 73 69 62  |mum x.  16.Visib|
00066910  6c 65 20 61 72 65 61 20  6d 61 78 69 6d 75 6d 20  |le area maximum |
00066920  79 0a 20 20 32 30 09 53  63 72 6f 6c 6c 20 78 20  |y.  20.Scroll x |
00066930  6f 66 66 73 65 74 0a 20  20 32 34 09 53 63 72 6f  |offset.  24.Scro|
00066940  6c 6c 20 79 20 6f 66 66  73 65 74 0a 20 20 32 38  |ll y offset.  28|
00066950  09 48 61 6e 64 6c 65 20  74 6f 20 6f 70 65 6e 20  |.Handle to open |
00066960  77 69 6e 64 6f 77 20 62  65 68 69 6e 64 0a 20 20  |window behind.  |
00066970  33 32 09 53 63 72 6f 6c  6c 20 78 20 64 69 72 65  |32.Scroll x dire|
00066980  63 74 69 6f 6e 0a 20 20  33 36 09 53 63 72 6f 6c  |ction.  36.Scrol|
00066990  6c 20 79 20 64 69 72 65  63 74 69 6f 6e 0a 0a 53  |l y direction..S|
000669a0  63 72 6f 6c 6c 20 64 69  72 65 63 74 69 6f 6e 73  |croll directions|
000669b0  20 3a 0a 20 20 2d 32 09  50 61 67 65 20 4c 65 66  | :.  -2.Page Lef|
000669c0  74 2f 44 6f 77 6e 0a 20  20 2d 31 09 4c 65 66 74  |t/Down.  -1.Left|
000669d0  2f 44 6f 77 6e 0a 20 20  20 30 0a 20 20 20 31 09  |/Down.   0.   1.|
000669e0  52 69 67 68 74 2f 55 70  0a 20 20 20 32 09 50 61  |Right/Up.   2.Pa|
000669f0  67 65 20 52 69 67 68 74  2f 55 70 0a 0a 59 6f 75  |ge Right/Up..You|
00066a00  20 75 73 65 20 74 68 65  20 73 63 72 6f 6c 6c 20  | use the scroll |
00066a10  64 69 72 65 63 74 69 6f  6e 73 20 74 6f 20 75 70  |directions to up|
00066a20  64 61 74 65 20 74 68 65  20 73 63 72 6f 6c 6c 20  |date the scroll |
00066a30  6f 66 66 73 65 74 73 2c  20 61 6e 64 20 74 68 65  |offsets, and the|
00066a40  6e 20 79 6f 75 20 64 6f  20 61 20 3c 57 69 6d 70  |n you do a <Wimp|
00066a50  5f 4f 70 65 6e 57 69 6e  64 6f 77 3e 2e 00 00 00  |_OpenWindow>....|
00066a60  44 41 54 41 22 01 00 00  4c 6f 73 65 20 43 61 72  |DATA"...Lose Car|
00066a70  65 74 20 20 28 31 31 29  0a 52 65 74 75 72 6e 65  |et  (11).Returne|
00066a80  64 20 62 6c 6f 63 6b 20  63 6f 6e 74 61 69 6e 73  |d block contains|
00066a90  20 3a 0a 0a 20 20 30 09  57 69 6e 64 6f 77 20 68  | :..  0.Window h|
00066aa0  61 6e 64 6c 65 20 74 68  61 74 20 68 61 64 20 66  |andle that had f|
00066ab0  6f 63 75 73 0a 20 20 34  09 69 63 6f 6e 20 68 61  |ocus.  4.icon ha|
00066ac0  6e 64 6c 65 2c 20 6f 72  20 2d 31 0a 20 20 38 09  |ndle, or -1.  8.|
00066ad0  78 20 6f 66 66 73 65 74  0a 20 20 31 32 09 79 20  |x offset.  12.y |
00066ae0  6f 66 66 73 65 74 0a 20  20 31 36 09 3c 68 65 69  |offset.  16.<hei|
00066af0  67 68 74 20 2b 20 66 6c  61 67 73 3d 3e 77 69 6d  |ght + flags=>wim|
00066b00  70 5f 63 61 72 65 74 68  66 3e 2c 20 6f 72 20 2d  |p_carethf>, or -|
00066b10  31 0a 20 20 32 30 09 69  6e 64 65 78 20 69 6e 74  |1.  20.index int|
00066b20  6f 20 73 74 72 69 6e 67  2c 20 6f 72 20 2d 31 0a  |o string, or -1.|
00066b30  0a 54 68 69 73 20 6d 65  73 73 61 67 65 20 69 73  |.This message is|
00066b40  20 73 65 6e 74 20 74 6f  20 77 69 6e 64 6f 77 27  | sent to window'|
00066b50  73 20 6f 77 6e 65 72 20  77 68 65 6e 20 63 61 72  |s owner when car|
00066b60  65 74 20 6d 6f 76 65 73  20 61 77 61 79 20 66 72  |et moves away fr|
00066b70  6f 6d 20 63 75 72 72 65  6e 74 20 77 69 6e 64 6f  |om current windo|
00066b80  77 2e 00 00 44 41 54 41  6c 01 00 00 47 61 69 6e  |w...DATAl...Gain|
00066b90  20 43 61 72 65 74 20 20  28 31 32 29 0a 52 65 74  | Caret  (12).Ret|
00066ba0  75 72 6e 65 64 20 62 6c  6f 63 6b 20 63 6f 6e 74  |urned block cont|
00066bb0  61 69 6e 73 20 3a 0a 0a  20 20 30 09 57 69 6e 64  |ains :..  0.Wind|
00066bc0  6f 77 20 68 61 6e 64 6c  65 20 77 68 69 63 68 20  |ow handle which |
00066bd0  67 61 69 6e 73 20 66 6f  63 75 73 0a 20 20 34 09  |gains focus.  4.|
00066be0  69 63 6f 6e 20 68 61 6e  64 6c 65 2c 20 6f 72 20  |icon handle, or |
00066bf0  2d 31 0a 20 20 38 09 78  20 6f 66 66 73 65 74 0a  |-1.  8.x offset.|
00066c00  20 20 31 32 09 79 20 6f  66 66 73 65 74 0a 20 20  |  12.y offset.  |
00066c10  31 36 09 3c 68 65 69 67  68 74 20 2b 20 66 6c 61  |16.<height + fla|
00066c20  67 73 3d 3e 77 69 6d 70  5f 63 61 72 65 74 68 66  |gs=>wimp_carethf|
00066c30  3e 2c 20 6f 72 20 2d 31  0a 20 20 32 30 09 69 6e  |>, or -1.  20.in|
00066c40  64 65 78 20 69 6e 74 6f  20 73 74 72 69 6e 67 2c  |dex into string,|
00066c50  20 6f 72 20 2d 31 0a 0a  54 68 69 73 20 6d 65 73  | or -1..This mes|
00066c60  73 61 67 65 20 69 73 20  73 65 6e 74 20 74 6f 20  |sage is sent to |
00066c70  77 69 6e 64 6f 77 27 73  20 6f 77 6e 65 72 20 77  |window's owner w|
00066c80  68 65 6e 20 63 61 72 65  74 20 6d 6f 76 65 73 20  |hen caret moves |
00066c90  69 6e 74 6f 20 74 68 65  20 6d 65 6e 74 69 6f 6e  |into the mention|
00066ca0  65 64 20 77 69 6e 64 6f  77 2e 20 49 74 20 69 73  |ed window. It is|
00066cb0  20 6e 6f 74 20 67 65 6e  65 72 61 74 65 64 20 69  | not generated i|
00066cc0  66 20 63 61 72 65 74 20  6d 6f 76 65 73 20 61 72  |f caret moves ar|
00066cd0  6f 75 6e 64 20 69 6e 73  69 64 65 20 74 68 65 20  |ound inside the |
00066ce0  73 61 6d 65 20 6f 6c 64  20 77 69 6e 64 6f 77 2e  |same old window.|
00066cf0  44 41 54 41 f7 01 00 00  4f 70 65 6e 20 57 69 6e  |DATA....Open Win|
00066d00  64 6f 77 20 52 65 71 75  65 73 74 20 28 32 29 0a  |dow Request (2).|
00066d10  52 65 74 75 72 6e 65 64  20 62 6c 6f 63 6b 20 63  |Returned block c|
00066d20  6f 6e 74 61 69 6e 73 20  3a 0a 20 20 30 09 57 69  |ontains :.  0.Wi|
00066d30  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 20 20 34 09  |ndow handle.  4.|
00066d40  56 69 73 69 62 6c 65 20  61 72 65 61 20 6d 69 6e  |Visible area min|
00066d50  69 6d 75 6d 20 78 0a 20  20 38 09 2d 2d 2d 2d 2d  |imum x.  8.-----|
00066d60  2d 2d 2d 2d 2d 22 2d 2d  2d 2d 2d 2d 2d 2d 2d 20  |-----"--------- |
00066d70  79 0a 20 20 31 32 09 56  69 73 69 62 6c 65 20 61  |y.  12.Visible a|
00066d80  72 65 61 20 6d 61 78 69  6d 75 6d 20 78 0a 20 20  |rea maximum x.  |
00066d90  31 36 09 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 22 2d 2d  |16.----------"--|
00066da0  2d 2d 2d 2d 2d 2d 2d 20  79 0a 20 20 32 30 09 53  |------- y.  20.S|
00066db0  63 72 6f 6c 6c 20 78 20  6f 66 66 73 65 74 0a 20  |croll x offset. |
00066dc0  20 32 34 09 53 63 72 6f  6c 6c 20 79 20 6f 66 66  | 24.Scroll y off|
00066dd0  73 65 74 0a 20 20 32 38  09 48 61 6e 64 6c 65 20  |set.  28.Handle |
00066de0  74 6f 20 6f 70 65 6e 20  77 69 6e 64 6f 77 20 62  |to open window b|
00066df0  65 68 69 6e 64 0a 0a 54  68 69 73 20 6d 65 73 73  |ehind..This mess|
00066e00  61 67 65 20 69 73 20 72  65 74 75 72 6e 65 64 20  |age is returned |
00066e10  77 68 65 6e 20 77 69 6e  64 6f 77 20 73 69 7a 65  |when window size|
00066e20  2c 20 6f 72 20 73 63 72  6f 6c 6c 62 61 72 73 20  |, or scrollbars |
00066e30  61 72 65 20 61 6c 74 65  72 65 64 2e 20 59 6f 75  |are altered. You|
00066e40  20 73 68 6f 75 6c 64 20  63 61 6c 6c 20 3c 57 69  | should call <Wi|
00066e50  6d 70 5f 4f 70 65 6e 57  69 6e 64 6f 77 3e 20 75  |mp_OpenWindow> u|
00066e60  73 69 6e 67 20 74 68 69  73 20 62 6c 6f 63 6b 2e  |sing this block.|
00066e70  20 49 66 20 79 6f 75 20  68 61 76 65 20 70 61 6e  | If you have pan|
00066e80  65 73 2c 20 74 68 65 6e  20 79 6f 75 20 73 68 6f  |es, then you sho|
00066e90  75 6c 64 20 61 6c 73 6f  20 75 73 65 20 74 68 65  |uld also use the|
00066ea0  20 62 6c 6f 63 6b 20 74  6f 20 66 69 6e 64 20 74  | block to find t|
00066eb0  68 65 69 72 20 6e 65 77  20 70 6f 73 69 74 69 6f  |heir new positio|
00066ec0  6e 2c 20 61 6e 64 20 75  73 65 20 57 69 6d 70 5f  |n, and use Wimp_|
00066ed0  4f 70 65 6e 57 69 6e 64  6f 77 20 6f 6e 20 74 68  |OpenWindow on th|
00066ee0  65 6d 20 74 6f 6f 2e 00  44 41 54 41 15 01 00 00  |em too..DATA....|
00066ef0  43 6c 6f 73 65 20 57 69  6e 64 6f 77 20 52 65 71  |Close Window Req|
00066f00  75 65 73 74 20 28 33 29  0a 52 65 74 75 72 6e 65  |uest (3).Returne|
00066f10  64 20 62 6c 6f 63 6b 20  63 6f 6e 74 61 69 6e 73  |d block contains|
00066f20  20 3a 0a 20 20 20 30 20  20 57 69 6e 64 6f 77 20  | :.   0  Window |
00066f30  68 61 6e 64 6c 65 0a 0a  54 68 65 20 75 73 65 72  |handle..The user|
00066f40  20 68 61 73 20 63 6c 69  63 6b 65 64 20 6f 6e 20  | has clicked on |
00066f50  74 68 65 20 63 6c 6f 73  65 20 69 63 6f 6e 20 6f  |the close icon o|
00066f60  66 20 77 69 6e 64 6f 77  2e 20 49 66 20 63 6c 6f  |f window. If clo|
00066f70  73 65 20 69 73 20 4f 4b  20 62 79 20 79 6f 75 2c  |se is OK by you,|
00066f80  20 74 68 65 6e 20 63 61  6c 6c 20 3c 57 69 6d 70  | then call <Wimp|
00066f90  5f 43 6c 6f 73 65 57 69  6e 64 6f 77 3e 2c 20 75  |_CloseWindow>, u|
00066fa0  73 69 6e 67 20 74 68 65  20 72 65 74 75 72 6e 65  |sing the returne|
00066fb0  64 20 62 6c 6f 63 6b 2e  20 49 66 20 6e 6f 74 2c  |d block. If not,|
00066fc0  20 6e 6f 74 69 66 79 20  74 68 65 20 75 73 65 72  | notify the user|
00066fd0  2e 20 28 27 46 69 6c 65  20 69 73 20 61 6c 74 65  |. ('File is alte|
00066fe0  72 65 64 2e 20 44 6f 20  79 6f 75 20 77 61 6e 74  |red. Do you want|
00066ff0  20 74 6f 20 71 75 69 74  3f 2e 2e 27 29 00 00 00  | to quit?..')...|
00067000  44 41 54 41 64 01 00 00  50 6f 69 6e 74 65 72 20  |DATAd...Pointer |
00067010  4c 65 61 76 69 6e 67 20  57 69 6e 64 6f 77 20 28  |Leaving Window (|
00067020  34 29 0a 52 65 74 75 72  6e 65 64 20 62 6c 6f 63  |4).Returned bloc|
00067030  6b 20 63 6f 6e 74 61 69  6e 73 20 3a 0a 20 20 30  |k contains :.  0|
00067040  20 57 69 6e 64 6f 77 20  68 61 6e 64 6c 65 0a 0a  | Window handle..|
00067050  54 68 69 73 20 6d 65 73  73 61 67 65 20 69 73 20  |This message is |
00067060  72 65 74 75 72 6e 65 64  20 77 68 65 6e 20 74 68  |returned when th|
00067070  65 20 70 6f 69 6e 74 65  72 2c 20 66 6f 72 20 73  |e pointer, for s|
00067080  6f 6d 65 20 72 65 61 73  6f 6e 2c 20 73 75 64 64  |ome reason, sudd|
00067090  65 6e 6c 79 20 66 69 6e  64 73 20 69 74 73 65 6c  |enly finds itsel|
000670a0  66 20 6e 6f 20 6c 6f 6e  67 65 72 20 6f 76 65 72  |f no longer over|
000670b0  20 74 68 69 73 20 77 69  6e 64 6f 77 2e 20 54 68  | this window. Th|
000670c0  69 73 20 63 61 6e 20 62  65 20 62 65 63 61 75 73  |is can be becaus|
000670d0  65 20 79 6f 75 20 6d 6f  76 65 64 20 69 74 20 6f  |e you moved it o|
000670e0  75 74 73 69 64 65 2c 20  62 75 74 20 61 6c 73 6f  |utside, but also|
000670f0  20 62 65 63 61 75 73 65  20 61 20 6d 65 6e 75 20  | because a menu |
00067100  68 61 73 20 6f 70 65 6e  65 64 2c 6f 72 20 73 6f  |has opened,or so|
00067110  6d 65 74 68 69 6e 67 20  73 69 6d 69 6c 61 72 0a  |mething similar.|
00067120  4e 6f 74 65 20 3a 20 59  6f 75 20 77 69 6c 6c 20  |Note : You will |
00067130  6e 6f 74 20 72 65 63 65  69 76 65 20 74 68 69 73  |not receive this|
00067140  20 6d 65 73 73 61 67 65  20 77 68 65 6e 20 74 68  | message when th|
00067150  65 20 77 69 6e 64 6f 77  20 69 73 20 64 65 6c 65  |e window is dele|
00067160  74 65 64 2e 44 41 54 41  3a 02 00 00 50 6f 69 6e  |ted.DATA:...Poin|
00067170  74 65 72 20 45 6e 74 65  72 69 6e 67 20 57 69 6e  |ter Entering Win|
00067180  64 6f 77 20 28 35 29 0a  52 65 74 75 72 6e 65 64  |dow (5).Returned|
00067190  20 62 6c 6f 63 6b 20 63  6f 6e 74 61 69 6e 73 20  | block contains |
000671a0  3a 0a 20 20 30 20 57 69  6e 64 6f 77 20 68 61 6e  |:.  0 Window han|
000671b0  64 6c 65 0a 0a 54 68 69  73 20 6d 65 73 73 61 67  |dle..This messag|
000671c0  65 20 69 73 20 72 65 74  75 72 6e 65 64 20 77 68  |e is returned wh|
000671d0  65 6e 20 74 68 65 20 70  6f 69 6e 74 65 72 2c 20  |en the pointer, |
000671e0  66 6f 72 20 73 6f 6d 65  20 72 65 61 73 6f 6e 2c  |for some reason,|
000671f0  20 73 75 64 64 65 6e 6c  79 20 66 69 6e 64 73 20  | suddenly finds |
00067200  69 74 73 65 6c 66 20 6f  76 65 72 20 74 68 69 73  |itself over this|
00067210  20 77 69 6e 64 6f 77 2e  20 54 68 69 73 20 63 61  | window. This ca|
00067220  6e 20 62 65 20 62 65 63  61 75 73 65 20 79 6f 75  |n be because you|
00067230  20 6d 6f 76 65 64 20 69  74 20 74 68 65 72 65 2c  | moved it there,|
00067240  20 62 75 74 20 61 6c 73  6f 20 62 65 63 61 75 73  | but also becaus|
00067250  65 20 61 20 6d 65 6e 75  20 69 73 20 63 6c 6f 73  |e a menu is clos|
00067260  65 64 2c 20 61 20 77 69  6e 64 6f 77 20 64 65 6c  |ed, a window del|
00067270  65 74 65 64 2c 20 6f 72  20 73 6f 6d 65 74 68 69  |eted, or somethi|
00067280  6e 67 20 73 69 6d 69 6c  61 72 0a 0a 4e 6f 74 65  |ng similar..Note|
00067290  3a 20 49 66 20 79 6f 75  72 20 70 6f 69 6e 74 65  |: If your pointe|
000672a0  72 20 69 73 20 6f 76 65  72 20 61 20 77 69 6e 64  |r is over a wind|
000672b0  6f 77 2c 20 61 6e 64 20  79 6f 75 20 64 65 6c 65  |ow, and you dele|
000672c0  74 65 20 74 68 69 73 20  61 6e 64 20 63 72 65 61  |te this and crea|
000672d0  74 65 20 61 20 6e 65 77  20 77 69 6e 64 6f 77 2c  |te a new window,|
000672e0  20 61 6c 6c 20 69 6e 20  6f 6e 65 20 67 6f 2c 20  | all in one go, |
000672f0  79 6f 75 20 77 69 6c 6c  20 3a 0a 20 31 3a 09 4e  |you will :. 1:.N|
00067300  6f 74 20 67 65 74 20 61  20 50 6f 69 6e 74 65 72  |ot get a Pointer|
00067310  5f 4c 65 61 76 69 6e 67  5f 57 69 6e 64 6f 77 20  |_Leaving_Window |
00067320  66 6f 72 20 74 68 65 20  6f 6c 64 20 77 69 6e 64  |for the old wind|
00067330  6f 77 2e 0a 20 32 3a 09  4e 6f 74 20 67 65 74 20  |ow.. 2:.Not get |
00067340  61 20 50 6f 69 6e 74 65  72 5f 45 6e 74 65 72 69  |a Pointer_Enteri|
00067350  6e 67 5f 57 69 6e 64 6f  77 20 66 6f 72 20 74 68  |ng_Window for th|
00067360  65 20 6e 65 77 20 6f 6e  65 2e 20 28 50 72 6f 62  |e new one. (Prob|
00067370  61 62 6c 79 20 62 65 63  61 75 73 65 20 74 68 65  |ably because the|
00067380  79 20 77 69 6c 6c 20 68  61 76 65 20 74 68 65 20  |y will have the |
00067390  73 61 6d 65 20 68 61 6e  64 6c 65 2e 2e 29 00 00  |same handle..)..|
000673a0  44 41 54 41 ce 00 00 00  4d 6f 75 73 65 20 43 6c  |DATA....Mouse Cl|
000673b0  69 63 6b 20 28 36 29 0a  23 57 72 61 70 20 4f 66  |ick (6).#Wrap Of|
000673c0  66 0a 52 65 74 75 72 6e  65 64 20 62 6c 6f 63 6b  |f.Returned block|
000673d0  20 63 6f 6e 74 61 69 6e  73 20 3a 0a 0a 20 20 30  | contains :..  0|
000673e0  09 4d 6f 75 73 65 20 78  09 09 28 53 63 72 65 65  |.Mouse x..(Scree|
000673f0  6e 20 63 6f 6f 72 64 29  0a 20 20 34 09 4d 6f 75  |n coord).  4.Mou|
00067400  73 65 20 79 09 09 28 53  63 72 65 65 6e 20 63 6f  |se y..(Screen co|
00067410  6f 72 64 29 0a 20 20 38  09 42 75 74 74 6f 6e 73  |ord).  8.Buttons|
00067420  0a 20 20 31 32 09 57 69  6e 64 6f 77 20 68 61 6e  |.  12.Window han|
00067430  64 6c 65 09 28 2d 31 3d  62 61 63 6b 67 72 6f 75  |dle.(-1=backgrou|
00067440  6e 64 2c 20 2d 32 3d 69  63 6f 6e 62 61 72 29 0a  |nd, -2=iconbar).|
00067450  20 20 31 36 09 49 63 6f  6e 20 68 61 6e 64 6c 65  |  16.Icon handle|
00067460  09 28 2d 31 3d 77 6f 72  6b 61 72 65 61 29 00 00  |.(-1=workarea)..|
00067470  44 41 54 41 38 01 00 00  55 73 65 72 20 44 72 61  |DATA8...User Dra|
00067480  67 20 42 6f 78 20 28 37  29 0a 52 65 74 75 72 6e  |g Box (7).Return|
00067490  65 64 20 62 6c 6f 63 6b  20 63 6f 6e 74 61 69 6e  |ed block contain|
000674a0  73 3a 0a 20 20 30 20 20  44 72 61 67 62 6f 78 09  |s:.  0  Dragbox.|
000674b0  6d 69 6e 20 78 0a 20 20  34 09 09 6d 69 6e 20 79  |min x.  4..min y|
000674c0  0a 20 20 38 09 09 6d 61  78 20 78 0a 20 20 31 32  |.  8..max x.  12|
000674d0  09 09 6d 61 78 20 79 0a  0a 54 68 69 73 20 6d 65  |..max y..This me|
000674e0  73 73 61 67 65 20 69 73  20 72 65 74 75 72 6e 65  |ssage is returne|
000674f0  64 20 77 68 65 6e 20 61  6c 6c 20 62 75 74 74 6f  |d when all butto|
00067500  6e 73 20 61 72 65 20 72  65 6c 65 61 73 65 64 20  |ns are released |
00067510  74 6f 20 66 69 6e 69 73  68 20 61 20 55 73 65 72  |to finish a User|
00067520  5f 44 72 61 67 20 6f 70  65 72 61 74 69 6f 6e 2e  |_Drag operation.|
00067530  20 54 68 65 20 62 6c 6f  63 6b 20 63 6f 6e 74 61  | The block conta|
00067540  69 6e 73 20 74 68 65 20  66 69 6e 61 6c 20 70 6f  |ins the final po|
00067550  73 20 6f 66 20 74 68 65  20 64 72 61 67 62 6f 78  |s of the dragbox|
00067560  2e 20 54 6f 20 66 69 6e  64 20 6f 75 74 20 77 68  |. To find out wh|
00067570  65 72 65 20 74 68 65 20  75 73 65 72 20 64 72 6f  |ere the user dro|
00067580  70 70 65 64 20 74 68 65  20 62 6f 78 2c 20 63 61  |pped the box, ca|
00067590  6c 6c 20 3c 57 69 6d 70  5f 47 65 74 50 6f 69 6e  |ll <Wimp_GetPoin|
000675a0  74 65 72 49 6e 66 6f 3e  44 41 54 41 87 01 00 00  |terInfo>DATA....|
000675b0  4b 65 79 20 50 72 65 73  73 65 64 20 28 38 29 0a  |Key Pressed (8).|
000675c0  52 65 74 75 72 6e 65 64  20 62 6c 6f 63 6b 20 63  |Returned block c|
000675d0  6f 6e 74 61 69 6e 73 20  3a 0a 0a 20 20 30 09 57  |ontains :..  0.W|
000675e0  69 6e 64 6f 77 20 68 61  6e 64 6c 65 20 77 69 74  |indow handle wit|
000675f0  68 20 66 6f 63 75 73 0a  20 20 34 09 49 63 6f 6e  |h focus.  4.Icon|
00067600  20 68 61 6e 64 6c 65 2c  20 6f 72 20 2d 31 20 69  | handle, or -1 i|
00067610  66 20 6e 6f 6e 65 0a 20  20 38 09 78 2d 6f 66 66  |f none.  8.x-off|
00067620  73 65 74 20 6f 66 20 63  61 72 65 74 09 28 72 65  |set of caret.(re|
00067630  6c 61 74 69 76 65 20 74  6f 29 0a 20 20 31 32 09  |lative to).  12.|
00067640  79 2d 6f 66 66 73 65 74  20 6f 66 20 63 61 72 65  |y-offset of care|
00067650  74 09 28 77 69 6e 64 6f  77 20 6f 72 69 67 69 6e  |t.(window origin|
00067660  29 0a 20 20 31 36 09 43  61 72 65 74 20 68 65 69  |).  16.Caret hei|
00067670  67 68 74 20 61 6e 64 20  66 6c 61 67 73 0a 20 20  |ght and flags.  |
00067680  32 30 09 49 6e 64 65 78  20 6f 66 20 63 61 72 65  |20.Index of care|
00067690  74 20 69 6e 74 6f 20 73  74 72 69 6e 67 20 28 69  |t into string (i|
000676a0  66 20 69 63 6f 6e 29 0a  20 20 32 34 09 3c 43 68  |f icon).  24.<Ch|
000676b0  61 72 61 63 74 65 72 20  63 6f 64 65 3d 3e 77 69  |aracter code=>wi|
000676c0  6d 70 5f 70 6f 6c 6c 38  61 3e 20 28 20 49 74 27  |mp_poll8a> ( It'|
000676d0  73 20 61 20 57 6f 72 64  21 20 29 0a 0a 49 66 20  |s a Word! )..If |
000676e0  79 6f 75 27 72 65 20 6e  6f 74 20 69 6e 74 65 72  |you're not inter|
000676f0  65 73 74 65 64 20 69 6e  20 74 68 69 73 20 6b 65  |ested in this ke|
00067700  79 70 72 65 73 73 2c 20  74 68 65 6e 20 70 61 73  |ypress, then pas|
00067710  73 20 69 74 20 6f 6e 20  77 69 74 68 20 3c 57 69  |s it on with <Wi|
00067720  6d 70 5f 50 72 6f 63 65  73 73 4b 65 79 3e 2e 00  |mp_ProcessKey>..|
00067730  44 41 54 41 72 02 00 00  43 68 61 72 61 63 74 65  |DATAr...Characte|
00067740  72 20 63 6f 64 65 0a 23  54 61 62 6c 65 20 31 39  |r code.#Table 19|
00067750  20 31 32 0a 4b 65 79 0a  2d 2d 2d 2d 2d 2d 2d 2d  | 12.Key.--------|
00067760  2d 2d 0a 42 61 63 6b 73  70 61 63 65 0a 52 65 74  |--.Backspace.Ret|
00067770  75 72 6e 0a 45 73 63 61  70 65 0a 48 6f 6d 65 0a  |urn.Escape.Home.|
00067780  44 65 6c 65 74 65 0a 50  72 69 6e 74 0a 46 31 2d  |Delete.Print.F1-|
00067790  46 39 0a 54 61 62 0a 43  6f 70 79 0a 4c 65 66 74  |F9.Tab.Copy.Left|
000677a0  0a 52 69 67 68 74 0a 55  70 0a 44 6f 77 6e 0a 50  |.Right.Up.Down.P|
000677b0  61 67 65 20 64 6f 77 6e  0a 50 61 67 65 20 75 70  |age down.Page up|
000677c0  0a 46 31 30 2d 46 31 32  0a 49 6e 73 65 72 74 0a  |.F10-F12.Insert.|
000677d0  41 6c 6f 6e 65 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |Alone.----------|
000677e0  0a 26 30 30 38 0a 26 30  30 44 0a 26 30 31 42 0a  |.&008.&00D.&01B.|
000677f0  26 30 31 45 0a 26 30 37  46 0a 26 31 38 30 0a 26  |&01E.&07F.&180.&|
00067800  31 38 31 2d 26 31 38 39  0a 26 31 38 41 0a 26 31  |181-&189.&18A.&1|
00067810  38 42 0a 26 31 38 43 0a  26 31 38 44 0a 26 31 38  |8B.&18C.&18D.&18|
00067820  45 0a 26 31 38 46 0a 26  31 39 45 0a 26 31 39 46  |E.&18F.&19E.&19F|
00067830  0a 26 31 43 41 2d 26 31  43 43 0a 26 31 43 44 0a  |.&1CA-&1CC.&1CD.|
00067840  2b 53 68 69 66 74 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |+Shift.---------|
00067850  2d 0a 26 30 30 38 0a 26  30 30 44 0a 26 30 31 42  |-.&008.&00D.&01B|
00067860  0a 26 30 31 45 0a 26 30  37 46 0a 26 31 39 30 0a  |.&01E.&07F.&190.|
00067870  26 31 39 31 2d 26 31 39  39 0a 26 31 39 41 0a 26  |&191-&199.&19A.&|
00067880  31 39 42 0a 26 31 39 43  0a 26 31 39 44 0a 26 31  |19B.&19C.&19D.&1|
00067890  39 45 0a 26 31 39 46 0a  26 31 38 45 0a 26 31 38  |9E.&19F.&18E.&18|
000678a0  46 0a 26 31 44 41 2d 26  31 44 43 0a 26 31 44 44  |F.&1DA-&1DC.&1DD|
000678b0  0a 2b 43 74 72 6c 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.+Ctrl.---------|
000678c0  2d 0a 26 30 30 38 0a 26  30 30 44 0a 26 30 31 42  |-.&008.&00D.&01B|
000678d0  0a 26 30 31 45 0a 26 30  37 46 0a 26 31 41 30 0a  |.&01E.&07F.&1A0.|
000678e0  26 31 41 31 2d 26 31 41  39 0a 26 31 41 41 0a 26  |&1A1-&1A9.&1AA.&|
000678f0  31 41 42 0a 26 31 41 43  0a 26 31 41 44 0a 26 31  |1AB.&1AC.&1AD.&1|
00067900  41 45 0a 26 31 41 46 0a  26 31 42 45 0a 26 31 42  |AE.&1AF.&1BE.&1B|
00067910  46 0a 26 31 45 41 2d 26  31 45 43 0a 26 31 45 44  |F.&1EA-&1EC.&1ED|
00067920  0a 2b 43 74 72 6c 20 53  68 69 66 74 0a 2d 2d 2d  |.+Ctrl Shift.---|
00067930  2d 2d 2d 2d 2d 2d 2d 2d  0a 26 30 30 38 0a 26 30  |--------.&008.&0|
00067940  30 44 0a 26 30 31 42 0a  26 30 31 45 0a 26 30 37  |0D.&01B.&01E.&07|
00067950  46 0a 26 31 42 30 0a 26  31 42 31 2d 26 31 42 39  |F.&1B0.&1B1-&1B9|
00067960  0a 26 31 42 41 0a 26 31  42 42 0a 26 31 42 43 0a  |.&1BA.&1BB.&1BC.|
00067970  26 31 42 44 0a 26 31 42  45 0a 26 31 42 46 0a 26  |&1BD.&1BE.&1BF.&|
00067980  31 41 45 0a 26 31 41 46  0a 26 31 46 41 2d 26 31  |1AE.&1AF.&1FA-&1|
00067990  46 43 0a 26 31 46 44 0a  23 45 6e 64 54 61 62 6c  |FC.&1FD.#EndTabl|
000679a0  65 0a 00 00 44 41 54 41  8d 01 00 00 4d 65 6e 75  |e...DATA....Menu|
000679b0  20 53 65 6c 65 63 74 69  6f 6e 20 28 39 29 0a 52  | Selection (9).R|
000679c0  65 74 75 72 6e 65 64 20  62 6c 6f 63 6b 20 63 6f  |eturned block co|
000679d0  6e 74 61 69 6e 73 20 3a  0a 20 20 20 30 09 49 74  |ntains :.   0.It|
000679e0  65 6d 20 69 6e 20 6d 61  69 6e 20 6d 65 6e 75 20  |em in main menu |
000679f0  73 65 6c 65 63 74 65 64  2e 0a 20 20 20 34 09 49  |selected..   4.I|
00067a00  74 65 6d 20 69 6e 20 31  73 74 20 73 75 62 6d 65  |tem in 1st subme|
00067a10  6e 75 2e 0a 20 20 20 38  09 49 74 65 6d 20 69 6e  |nu..   8.Item in|
00067a20  20 32 6e 64 20 73 75 62  6d 65 6e 75 2e 0a 20 20  | 2nd submenu..  |
00067a30  2b 2b 09 2b 2b 0a 09 54  65 72 6d 69 6e 61 74 65  |++.++..Terminate|
00067a40  64 20 62 79 20 2d 31 0a  0a 49 66 20 74 68 65 20  |d by -1..If the |
00067a50  75 73 65 72 20 63 6c 69  63 6b 73 20 77 69 74 68  |user clicks with|
00067a60  20 61 64 6a 75 73 74 20  28 63 61 6c 6c 20 3c 57  | adjust (call <W|
00067a70  69 6d 70 5f 47 65 74 50  6f 69 6e 74 65 72 49 6e  |imp_GetPointerIn|
00067a80  66 6f 3e 20 74 6f 20 66  69 6e 64 20 6f 75 74 29  |fo> to find out)|
00067a90  2c 20 74 68 65 20 6d 65  6e 75 20 73 68 6f 75 6c  |, the menu shoul|
00067aa0  64 20 72 65 6d 61 69 6e  20 6f 6e 20 73 63 72 65  |d remain on scre|
00067ab0  65 6e 2e 20 54 6f 20 64  6f 20 74 68 69 73 2c 20  |en. To do this, |
00067ac0  79 6f 75 20 68 61 76 65  20 74 6f 20 72 65 6f 70  |you have to reop|
00067ad0  65 6e 20 74 68 65 20 6d  65 6e 75 20 61 66 74 65  |en the menu afte|
00067ae0  72 20 68 61 76 69 6e 67  20 72 65 73 70 6f 6e 64  |r having respond|
00067af0  65 64 20 74 6f 20 73 65  6c 65 63 74 69 6f 6e 2e  |ed to selection.|
00067b00  20 54 68 69 73 20 69 73  20 64 6f 6e 65 20 62 79  | This is done by|
00067b10  20 63 61 6c 6c 69 6e 67  20 3c 57 69 6d 70 5f 43  | calling <Wimp_C|
00067b20  72 65 61 74 65 4d 65 6e  75 3e 20 61 67 61 69 6e  |reateMenu> again|
00067b30  2e 00 00 00 44 41 54 41  3e 01 00 00 57 69 6d 70  |....DATA>...Wimp|
00067b40  5f 50 6f 6c 6c 49 64 6c  65 20 28 26 34 30 30 30  |_PollIdle (&4000|
00067b50  45 31 29 0a 23 50 61 72  65 6e 74 20 57 69 6d 70  |E1).#Parent Wimp|
00067b60  5f 0a 3d 3e 09 52 30 20  3d 09 3c 6d 61 73 6b 3d  |_.=>.R0 =.<mask=|
00067b70  3e 77 69 6d 70 5f 70 6f  6c 6c 6d 61 73 6b 3e 0a  |>wimp_pollmask>.|
00067b80  09 52 31 20 3d 09 32 35  36 2d 62 79 74 65 20 62  |.R1 =.256-byte b|
00067b90  6c 6f 63 6b 0a 09 52 32  20 3d 09 65 61 72 6c 69  |lock..R2 =.earli|
00067ba0  65 73 74 20 74 69 6d 65  20 66 6f 72 20 72 65 74  |est time for ret|
00067bb0  75 72 6e 20 77 69 74 68  20 4e 75 6c 6c 20 52 65  |urn with Null Re|
00067bc0  61 73 6f 6e 0a 09 52 33  20 3d 09 70 6f 69 6e 74  |ason..R3 =.point|
00067bd0  65 72 20 74 6f 20 70 6f  6c 6c 77 6f 72 64 20 2a  |er to pollword *|
00067be0  69 6e 20 52 4d 41 2a 0a  0a 54 68 69 73 20 53 57  |in RMA*..This SW|
00067bf0  49 20 64 6f 65 73 20 74  68 65 20 73 61 6d 65 20  |I does the same |
00067c00  61 73 20 3c 57 69 6d 70  5f 50 6f 6c 6c 3e 2c 20  |as <Wimp_Poll>, |
00067c10  65 78 63 65 70 74 20 74  68 61 74 20 69 74 20 77  |except that it w|
00067c20  69 6c 6c 20 72 65 74 75  72 6e 20 74 6f 20 79 6f  |ill return to yo|
00067c30  75 20 61 73 20 73 6f 6f  6e 20 61 73 20 70 6f 73  |u as soon as pos|
00067c40  73 69 62 6c 65 20 61 66  74 65 72 20 74 69 6d 65  |sible after time|
00067c50  20 73 74 61 74 65 64 20  69 6e 20 52 32 2c 20 77  | stated in R2, w|
00067c60  69 74 68 20 61 20 4e 75  6c 6c 20 52 65 61 73 6f  |ith a Null Reaso|
00067c70  6e 2e 00 00 44 41 54 41  47 02 00 00 50 6f 6c 6c  |n...DATAG...Poll|
00067c80  4d 61 73 6b 0a 42 69 74  09 4d 65 61 6e 69 6e 67  |Mask.Bit.Meaning|
00067c90  20 77 68 65 6e 20 62 69  74 20 73 65 74 20 3a 0a  | when bit set :.|
00067ca0  23 4c 69 6e 65 0a 30 09  44 6f 6e 27 74 20 72 65  |#Line.0.Don't re|
00067cb0  74 75 72 6e 20 4e 75 6c  6c 20 52 65 61 73 6f 6e  |turn Null Reason|
00067cc0  2e 0a 31 09 44 6f 6e 27  74 20 72 65 74 75 72 6e  |..1.Don't return|
00067cd0  20 52 65 64 72 61 77 20  57 69 6e 64 6f 77 3b 20  | Redraw Window; |
00067ce0  51 75 65 75 65 20 69 74  2e 0a 32 2d 33 09 30 0a  |Queue it..2-3.0.|
00067cf0  34 09 44 6f 6e 27 74 20  72 65 74 75 72 6e 20 50  |4.Don't return P|
00067d00  6f 69 6e 74 65 72 20 4c  65 61 76 69 6e 67 20 57  |ointer Leaving W|
00067d10  69 6e 64 6f 77 2e 0a 35  09 44 6f 6e 27 74 20 72  |indow..5.Don't r|
00067d20  65 74 75 72 6e 20 50 6f  69 6e 74 65 72 20 45 6e  |eturn Pointer En|
00067d30  74 65 72 69 6e 67 20 57  69 6e 64 6f 77 2e 0a 36  |tering Window..6|
00067d40  09 44 6f 6e 27 74 20 72  65 74 75 72 6e 20 4d 6f  |.Don't return Mo|
00067d50  75 73 65 20 43 6c 69 63  6b 3b 20 51 75 65 75 65  |use Click; Queue|
00067d60  20 69 74 2e 0a 37 09 30  0a 38 09 44 6f 6e 27 74  | it..7.0.8.Don't|
00067d70  20 72 65 74 75 72 6e 20  4b 65 79 20 50 72 65 73  | return Key Pres|
00067d80  73 65 64 3b 20 51 75 65  75 65 20 69 74 2e 0a 39  |sed; Queue it..9|
00067d90  2d 31 30 09 30 0a 31 31  09 44 6f 6e 27 74 20 72  |-10.0.11.Don't r|
00067da0  65 74 75 72 6e 20 4c 6f  73 65 20 43 61 72 65 74  |eturn Lose Caret|
00067db0  2e 0a 31 32 09 44 6f 6e  27 74 20 72 65 74 75 72  |..12.Don't retur|
00067dc0  6e 20 47 61 69 6e 20 43  61 72 65 74 2e 0a 31 33  |n Gain Caret..13|
00067dd0  09 44 6f 6e 27 74 20 72  65 74 75 72 6e 20 70 6f  |.Don't return po|
00067de0  6c 6c 77 6f 72 64 20 6e  6f 6e 7a 65 72 6f 0a 31  |llword nonzero.1|
00067df0  34 2d 31 36 09 30 0a 31  37 09 44 6f 6e 27 74 20  |4-16.0.17.Don't |
00067e00  72 65 74 75 72 6e 20 55  73 65 72 20 4d 65 73 73  |return User Mess|
00067e10  61 67 65 2e 0a 31 38 09  44 6f 6e 27 74 20 72 65  |age..18.Don't re|
00067e20  74 75 72 6e 20 55 73 65  72 20 4d 65 73 73 61 67  |turn User Messag|
00067e30  65 20 52 65 63 6f 72 64  65 64 2e 0a 31 39 09 44  |e Recorded..19.D|
00067e40  6f 6e 27 74 20 72 65 74  75 72 6e 20 55 73 65 72  |on't return User|
00067e50  20 4d 65 73 73 61 67 65  20 41 63 6b 6e 6f 77 6c  | Message Acknowl|
00067e60  65 64 67 65 2e 0a 32 30  2d 32 31 09 30 0a 32 32  |edge..20-21.0.22|
00067e70  09 52 33 20 69 73 20 70  74 72 20 74 6f 20 70 6f  |.R3 is ptr to po|
00067e80  6c 6c 77 6f 72 64 0a 32  33 09 53 63 61 6e 20 70  |llword.23.Scan p|
00067e90  6f 6c 6c 77 6f 72 64 20  61 74 20 68 69 67 68 20  |ollword at high |
00067ea0  70 72 69 6f 72 69 74 79  0a 32 34 09 53 61 76 65  |priority.24.Save|
00067eb0  20 46 50 0a 32 35 2d 33  31 09 30 00 44 49 52 24  | FP.25-31.0.DIR$|
00067ec0  9c 00 00 00 9c 00 00 00  58 7f 06 00 46 ff ff ff  |........X...F...|
00067ed0  a0 4f 0f fb 53 01 00 00  13 00 00 00 00 00 00 00  |.O..S...........|
00067ee0  21 52 6f 6f 74 00 00 00  ac 80 06 00 46 fd ff ff  |!Root.......F...|
00067ef0  f9 f8 0e fb 47 0c 00 00  13 00 00 00 00 00 00 00  |....G...........|
00067f00  30 00 00 00 f4 8c 06 00  46 fd ff ff b0 60 bd 3f  |0.......F....`.?|
00067f10  d9 01 00 00 13 00 00 00  00 00 00 00 31 00 00 00  |............1...|
00067f20  d0 8e 06 00 46 fd ff ff  ad 75 0f 3f 0e 02 00 00  |....F....u.?....|
00067f30  13 00 00 00 00 00 00 00  32 00 00 00 e0 90 06 00  |........2.......|
00067f40  45 fd ff ff 45 3d f1 ff  68 01 00 00 13 00 00 00  |E...E=..h.......|
00067f50  00 00 00 00 33 00 00 00  44 41 54 41 53 01 00 00  |....3...DATAS...|
00067f60  57 69 6d 70 5f 53 65 6e  64 4d 65 73 73 61 67 65  |Wimp_SendMessage|
00067f70  20 20 28 26 34 30 30 45  37 29 0a 23 50 61 72 65  |  (&400E7).#Pare|
00067f80  6e 74 20 57 69 6d 70 5f  0a 3d 3e 09 52 30 20 3d  |nt Wimp_.=>.R0 =|
00067f90  09 52 65 61 73 6f 6e 20  43 6f 64 65 2c 20 73 65  |.Reason Code, se|
00067fa0  65 20 3c 57 69 6d 70 5f  50 6f 6c 6c 3e 0a 09 52  |e <Wimp_Poll>..R|
00067fb0  31 20 3d 09 4d 65 73 73  61 67 65 20 62 6c 6f 63  |1 =.Message bloc|
00067fc0  6b 0a 09 52 32 20 3d 09  48 61 6e 64 6c 65 20 6f  |k..R2 =.Handle o|
00067fd0  66 20 64 65 73 74 69 6e  61 74 69 6f 6e 20 74 61  |f destination ta|
00067fe0  73 6b 0a 09 20 09 6f 72  20 57 69 6e 64 6f 77 20  |sk.. .or Window |
00067ff0  68 61 6e 64 6c 65 0a 09  20 09 6f 72 20 2d 32 2c  |handle.. .or -2,|
00068000  20 61 6e 64 20 52 33 20  3d 20 69 63 6f 6e 20 68  | and R3 = icon h|
00068010  61 6e 64 6c 65 0a 09 20  09 6f 72 20 30 20 74 6f  |andle.. .or 0 to|
00068020  20 42 72 6f 61 64 63 61  73 74 2e 0a 0a 3c 3d 09  | Broadcast...<=.|
00068030  52 32 20 3d 09 49 66 20  6e 6f 74 20 62 72 6f 61  |R2 =.If not broa|
00068040  64 63 61 73 74 2c 20 68  61 6e 64 6c 65 20 6f 66  |dcast, handle of|
00068050  20 64 65 73 74 69 6e 61  74 69 6f 6e 20 74 61 73  | destination tas|
00068060  6b 0a 0a 4d 6f 73 74 20  6f 66 74 65 6e 2c 20 74  |k..Most often, t|
00068070  68 69 73 20 53 57 49 20  69 73 20 75 73 65 64 20  |his SWI is used |
00068080  74 6f 20 73 65 6e 64 20  3c 75 73 65 72 20 6d 65  |to send <user me|
00068090  73 73 61 67 65 73 3d 3e  77 69 6d 70 5f 73 65 6e  |ssages=>wimp_sen|
000680a0  64 6d 65 73 73 61 67 65  31 3e 2e 00 44 41 54 41  |dmessage1>..DATA|
000680b0  47 0c 00 00 55 73 65 72  20 6d 65 73 73 61 67 65  |G...User message|
000680c0  73 0a 4d 69 73 63 20 3a  0a 23 49 6e 64 65 6e 74  |s.Misc :.#Indent|
000680d0  20 34 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  | 4.#Table Column|
000680e0  73 20 32 0a 3c 30 20 51  75 69 74 3d 3e 77 69 6d  |s 2.<0 Quit=>wim|
000680f0  70 5f 75 6d 30 3e 0a 3c  38 20 50 72 65 51 75 69  |p_um0>.<8 PreQui|
00068100  74 3d 3e 77 69 6d 70 5f  75 6d 38 3e 0a 3c 39 20  |t=>wimp_um8>.<9 |
00068110  50 61 6c 65 74 74 65 43  68 61 6e 67 65 20 3d 3e  |PaletteChange =>|
00068120  77 69 6d 70 5f 75 6d 39  3e 0a 3c 41 20 53 61 76  |wimp_um9>.<A Sav|
00068130  65 44 65 73 6b 74 6f 70  3d 3e 77 69 6d 70 5f 75  |eDesktop=>wimp_u|
00068140  6d 41 3e 0a 3c 34 30 30  20 46 69 6c 65 72 4f 70  |mA>.<400 FilerOp|
00068150  65 6e 44 69 72 3d 3e 77  69 6d 70 5f 75 6d 34 30  |enDir=>wimp_um40|
00068160  30 3e 0a 3c 34 30 31 20  46 69 6c 65 72 43 6c 6f  |0>.<401 FilerClo|
00068170  73 65 44 69 72 20 3d 3e  77 69 6d 70 5f 75 6d 34  |seDir =>wimp_um4|
00068180  30 31 3e 0a 3c 35 30 32  20 48 65 6c 70 52 65 71  |01>.<502 HelpReq|
00068190  75 65 73 74 3d 3e 77 69  6d 70 5f 75 6d 35 30 32  |uest=>wimp_um502|
000681a0  3e 0a 3c 35 30 33 20 48  65 6c 70 52 65 70 6c 79  |>.<503 HelpReply|
000681b0  3d 3e 77 69 6d 70 5f 75  6d 35 30 33 3e 0a 3c 34  |=>wimp_um503>.<4|
000681c0  30 30 34 30 20 4e 6f 74  69 66 79 3d 3e 77 69 6d  |0040 Notify=>wim|
000681d0  70 5f 75 6d 34 30 30 34  30 3e 0a 3c 34 30 30 43  |p_um40040>.<400C|
000681e0  30 20 4d 65 6e 75 57 61  72 6e 69 6e 67 3d 3e 77  |0 MenuWarning=>w|
000681f0  69 6d 70 5f 75 6d 34 30  30 43 30 3e 0a 3c 34 30  |imp_um400C0>.<40|
00068200  30 43 31 20 4d 6f 64 65  43 68 61 6e 67 65 3d 3e  |0C1 ModeChange=>|
00068210  77 69 6d 70 5f 75 6d 34  30 30 43 31 3e 0a 3c 34  |wimp_um400C1>.<4|
00068220  30 30 43 32 20 54 61 73  6b 49 6e 69 74 69 61 6c  |00C2 TaskInitial|
00068230  69 73 65 3d 3e 77 69 6d  70 5f 75 6d 34 30 30 43  |ise=>wimp_um400C|
00068240  32 3e 0a 3c 34 30 30 43  33 20 54 61 73 6b 43 6c  |2>.<400C3 TaskCl|
00068250  6f 73 65 44 6f 77 6e 20  3d 3e 77 69 6d 70 5f 75  |oseDown =>wimp_u|
00068260  6d 34 30 30 43 33 3e 0a  3c 34 30 30 43 34 20 53  |m400C3>.<400C4 S|
00068270  6c 6f 74 53 69 7a 65 3d  3e 77 69 6d 70 5f 75 6d  |lotSize=>wimp_um|
00068280  34 30 30 43 34 3e 0a 3c  34 30 30 43 35 20 53 65  |400C4>.<400C5 Se|
00068290  74 53 6c 6f 74 3d 3e 77  69 6d 70 5f 75 6d 34 30  |tSlot=>wimp_um40|
000682a0  30 43 35 3e 0a 3c 34 30  30 43 36 20 54 61 73 6b  |0C5>.<400C6 Task|
000682b0  4e 61 6d 65 52 71 3d 3e  77 69 6d 70 5f 75 6d 34  |NameRq=>wimp_um4|
000682c0  30 30 43 36 3e 0a 3c 34  30 30 43 37 20 54 61 73  |00C6>.<400C7 Tas|
000682d0  6b 4e 61 6d 65 49 73 3d  3e 77 69 6d 70 5f 75 6d  |kNameIs=>wimp_um|
000682e0  34 30 30 43 37 3e 0a 34  30 30 43 38 20 54 61 73  |400C7>.400C8 Tas|
000682f0  6b 53 74 61 72 74 65 64  0a 3c 34 30 30 43 39 20  |kStarted.<400C9 |
00068300  4d 65 6e 75 73 44 65 6c  65 74 65 64 3d 3e 77 69  |MenusDeleted=>wi|
00068310  6d 70 5f 75 6d 34 30 30  43 39 3e 0a 34 30 30 43  |mp_um400C9>.400C|
00068320  41 20 49 63 6f 6e 69 7a  65 0a 34 30 30 43 42 20  |A Iconize.400CB |
00068330  57 69 6e 64 6f 77 43 6c  6f 73 65 64 0a 3c 34 30  |WindowClosed.<40|
00068340  30 43 43 20 57 69 6e 64  6f 77 49 6e 66 6f 3d 3e  |0CC WindowInfo=>|
00068350  77 69 6d 70 5f 75 6d 34  30 30 43 43 3e 0a 34 30  |wimp_um400CC>.40|
00068360  30 43 44 20 53 77 61 70  0a 34 30 30 43 45 20 54  |0CD Swap.400CE T|
00068370  6f 6f 6c 73 43 68 61 6e  67 65 64 0a 34 30 30 43  |oolsChanged.400C|
00068380  46 20 46 6f 6e 74 43 68  61 6e 67 65 64 0a 23 45  |F FontChanged.#E|
00068390  6e 64 54 61 62 6c 65 0a  0a 23 49 6e 64 65 6e 74  |ndTable..#Indent|
000683a0  20 30 0a 54 68 65 20 6e  65 77 20 62 6c 6f 63 6b  | 0.The new block|
000683b0  20 6d 6f 64 65 6c 20 28  43 6c 69 70 62 6f 61 72  | model (Clipboar|
000683c0  64 2c 20 44 72 61 67 27  6e 20 64 72 6f 70 29 20  |d, Drag'n drop) |
000683d0  3a 0a 23 49 6e 64 65 6e  74 20 34 0a 23 54 61 62  |:.#Indent 4.#Tab|
000683e0  6c 65 20 43 6f 6c 75 6d  6e 73 20 32 0a 46 20 43  |le Columns 2.F C|
000683f0  6c 61 69 6d 45 6e 74 69  74 79 0a 3c 31 30 20 44  |laimEntity.<10 D|
00068400  61 74 61 52 65 71 75 65  73 74 3d 3e 77 69 6d 70  |ataRequest=>wimp|
00068410  5f 75 6d 31 30 3e 0a 3c  31 31 20 44 72 61 67 67  |_um10>.<11 Dragg|
00068420  69 6e 67 3d 3e 77 69 6d  70 5f 75 6d 31 31 3e 0a  |ing=>wimp_um11>.|
00068430  3c 31 32 20 44 72 61 67  43 6c 61 69 6d 3d 3e 77  |<12 DragClaim=>w|
00068440  69 6d 70 5f 75 6d 31 32  3e 0a 23 45 6e 64 54 61  |imp_um12>.#EndTa|
00068450  62 6c 65 0a 0a 23 49 6e  64 65 6e 74 20 30 0a 44  |ble..#Indent 0.D|
00068460  61 74 61 20 54 72 61 6e  73 66 65 72 20 50 72 6f  |ata Transfer Pro|
00068470  74 6f 63 6f 6c 20 3a 0a  23 49 6e 64 65 6e 74 20  |tocol :.#Indent |
00068480  34 0a 23 54 61 62 6c 65  20 34 20 32 34 0a 3c 31  |4.#Table 4 24.<1|
00068490  20 44 61 74 61 53 61 76  65 3d 3e 77 69 6d 70 5f  | DataSave=>wimp_|
000684a0  75 6d 31 3e 0a 3c 32 20  44 61 74 61 53 61 76 65  |um1>.<2 DataSave|
000684b0  41 63 6b 3d 3e 77 69 6d  70 5f 75 6d 32 3e 0a 3c  |Ack=>wimp_um2>.<|
000684c0  33 20 44 61 74 61 4c 6f  61 64 3d 3e 77 69 6d 70  |3 DataLoad=>wimp|
000684d0  5f 75 6d 33 3e 0a 3c 34  20 44 61 74 61 4c 6f 61  |_um3>.<4 DataLoa|
000684e0  64 41 63 6b 3d 3e 77 69  6d 70 5f 75 6d 34 3e 0a  |dAck=>wimp_um4>.|
000684f0  3c 35 20 44 61 74 61 4f  70 65 6e 3d 3e 77 69 6d  |<5 DataOpen=>wim|
00068500  70 5f 75 6d 35 3e 0a 3c  36 20 52 41 4d 46 65 74  |p_um5>.<6 RAMFet|
00068510  63 68 3d 3e 77 69 6d 70  5f 75 6d 36 3e 0a 3c 37  |ch=>wimp_um6>.<7|
00068520  20 52 41 4d 54 72 61 6e  73 6d 69 74 3d 3e 77 69  | RAMTransmit=>wi|
00068530  6d 70 5f 75 6d 37 3e 0a  23 45 6e 64 54 61 62 6c  |mp_um7>.#EndTabl|
00068540  65 0a 0a 23 49 6e 64 65  6e 74 20 30 0a 54 68 72  |e..#Indent 0.Thr|
00068550  6f 77 62 61 63 6b 20 50  72 6f 74 6f 63 6f 6c 20  |owback Protocol |
00068560  3a 0a 23 49 6e 64 65 6e  74 20 34 0a 23 54 61 62  |:.#Indent 4.#Tab|
00068570  6c 65 20 34 20 32 34 0a  3c 34 32 35 38 30 20 54  |le 4 24.<42580 T|
00068580  68 72 6f 77 62 61 63 6b  53 74 61 72 74 3d 3e 77  |hrowbackStart=>w|
00068590  69 6d 70 5f 75 6d 34 32  35 38 30 3e 0a 3c 34 32  |imp_um42580>.<42|
000685a0  35 38 31 20 50 72 6f 63  65 73 73 69 6e 67 46 69  |581 ProcessingFi|
000685b0  6c 65 3d 3e 77 69 6d 70  5f 75 6d 34 32 35 38 31  |le=>wimp_um42581|
000685c0  3e 0a 3c 34 32 35 38 32  20 45 72 72 6f 72 73 49  |>.<42582 ErrorsI|
000685d0  6e 3d 3e 77 69 6d 70 5f  75 6d 34 32 35 38 32 3e  |n=>wimp_um42582>|
000685e0  0a 3c 34 32 35 38 33 20  45 72 72 6f 72 44 65 74  |.<42583 ErrorDet|
000685f0  61 69 6c 73 3d 3e 77 69  6d 70 5f 75 6d 34 32 35  |ails=>wimp_um425|
00068600  38 33 3e 0a 3c 34 32 35  38 34 20 54 68 72 6f 77  |83>.<42584 Throw|
00068610  62 61 63 6b 45 6e 64 3d  3e 77 69 6d 70 5f 75 6d  |backEnd=>wimp_um|
00068620  34 32 35 38 34 3e 0a 3c  34 32 35 38 35 20 49 6e  |42584>.<42585 In|
00068630  66 6f 46 6f 72 46 69 6c  65 3d 3e 77 69 6d 70 5f  |foForFile=>wimp_|
00068640  75 6d 34 32 35 38 35 3e  0a 3c 34 32 35 38 36 20  |um42585>.<42586 |
00068650  49 6e 66 6f 44 65 74 61  69 6c 73 3d 3e 77 69 6d  |InfoDetails=>wim|
00068660  70 5f 75 6d 34 32 35 38  36 3e 0a 23 45 6e 64 54  |p_um42586>.#EndT|
00068670  61 62 6c 65 0a 0a 23 49  6e 64 65 6e 74 20 30 0a  |able..#Indent 0.|
00068680  3c 45 78 74 65 72 6e 61  6c 20 45 64 69 74 3d 3e  |<External Edit=>|
00068690  57 69 6d 70 5f 75 6d 45  78 74 45 64 69 74 3e 20  |Wimp_umExtEdit> |
000686a0  50 72 6f 74 6f 63 6f 6c  20 3a 0a 23 49 6e 64 65  |Protocol :.#Inde|
000686b0  6e 74 20 34 0a 23 54 61  62 6c 65 20 33 20 32 34  |nt 4.#Table 3 24|
000686c0  0a 3c 34 35 44 38 30 20  45 64 69 74 52 71 3d 3e  |.<45D80 EditRq=>|
000686d0  77 69 6d 70 5f 75 6d 34  35 44 38 30 3e 0a 3c 34  |wimp_um45D80>.<4|
000686e0  35 44 38 31 20 45 64 69  74 41 63 6b 3d 3e 77 69  |5D81 EditAck=>wi|
000686f0  6d 70 5f 75 6d 34 35 44  38 31 3e 0a 3c 34 35 44  |mp_um45D81>.<45D|
00068700  38 32 20 45 64 69 74 52  65 74 75 72 6e 3d 3e 77  |82 EditReturn=>w|
00068710  69 6d 70 5f 75 6d 34 35  44 38 32 3e 0a 3c 34 35  |imp_um45D82>.<45|
00068720  44 38 33 20 45 64 69 74  41 62 6f 72 74 3d 3e 77  |D83 EditAbort=>w|
00068730  69 6d 70 5f 75 6d 34 35  44 38 33 3e 0a 3c 34 35  |imp_um45D83>.<45|
00068740  44 38 34 20 45 64 69 74  44 61 74 61 53 61 76 65  |D84 EditDataSave|
00068750  3d 3e 77 69 6d 70 5f 75  6d 34 35 44 38 34 3e 0a  |=>wimp_um45D84>.|
00068760  3c 34 35 44 38 35 20 45  64 69 74 43 75 72 73 6f  |<45D85 EditCurso|
00068770  72 3d 3e 77 69 6d 70 5f  75 6d 34 35 44 38 35 3e  |r=>wimp_um45D85>|
00068780  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 23 49 6e 64  |.#EndTable..#Ind|
00068790  65 6e 74 20 30 0a 54 61  73 6b 77 69 6e 64 6f 77  |ent 0.Taskwindow|
000687a0  20 50 72 6f 74 6f 63 6f  6c 20 3a 0a 23 49 6e 64  | Protocol :.#Ind|
000687b0  65 6e 74 20 34 0a 23 54  61 62 6c 65 20 34 20 32  |ent 4.#Table 4 2|
000687c0  34 0a 3c 38 30 38 43 30  20 54 57 5f 49 6e 70 75  |4.<808C0 TW_Inpu|
000687d0  74 3d 3e 77 69 6d 70 5f  75 6d 38 30 38 63 30 3e  |t=>wimp_um808c0>|
000687e0  0a 3c 38 30 38 43 31 20  54 57 5f 4f 75 74 70 75  |.<808C1 TW_Outpu|
000687f0  74 3d 3e 77 69 6d 70 5f  75 6d 38 30 38 63 31 3e  |t=>wimp_um808c1>|
00068800  0a 3c 38 30 38 43 32 20  54 57 5f 45 67 6f 3d 3e  |.<808C2 TW_Ego=>|
00068810  77 69 6d 70 5f 75 6d 38  30 38 63 32 3e 0a 3c 38  |wimp_um808c2>.<8|
00068820  30 38 43 33 20 54 57 5f  4d 6f 72 69 6f 3d 3e 77  |08C3 TW_Morio=>w|
00068830  69 6d 70 5f 75 6d 38 30  38 63 33 3e 0a 3c 38 30  |imp_um808c3>.<80|
00068840  38 43 34 20 54 57 5f 4d  6f 72 69 74 65 20 3d 3e  |8C4 TW_Morite =>|
00068850  77 69 6d 70 5f 75 6d 38  30 38 63 34 3e 0a 3c 38  |wimp_um808c4>.<8|
00068860  30 38 43 35 20 54 57 5f  4e 65 77 54 61 73 6b 3d  |08C5 TW_NewTask=|
00068870  3e 77 69 6d 70 5f 75 6d  38 30 38 63 35 3e 0a 3c  |>wimp_um808c5>.<|
00068880  38 30 38 43 36 20 54 57  5f 53 75 73 70 65 6e 64  |808C6 TW_Suspend|
00068890  3d 3e 77 69 6d 70 5f 75  6d 38 30 38 63 36 3e 0a  |=>wimp_um808c6>.|
000688a0  3c 38 30 38 43 37 20 54  57 5f 52 65 73 75 6d 65  |<808C7 TW_Resume|
000688b0  20 3d 3e 77 69 6d 70 5f  75 6d 38 30 38 63 37 3e  | =>wimp_um808c7>|
000688c0  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 23 49 6e 64  |.#EndTable..#Ind|
000688d0  65 6e 74 20 30 0a 50 72  69 6e 74 20 50 72 6f 74  |ent 0.Print Prot|
000688e0  6f 63 6f 6c 20 3a 0a 23  49 6e 64 65 6e 74 20 34  |ocol :.#Indent 4|
000688f0  0a 23 54 61 62 6c 65 20  38 20 32 34 0a 3c 38 30  |.#Table 8 24.<80|
00068900  31 34 30 20 50 72 69 6e  74 46 69 6c 65 3d 3e 77  |140 PrintFile=>w|
00068910  69 6d 70 5f 75 6d 38 30  31 34 30 3e 0a 3c 38 30  |imp_um80140>.<80|
00068920  31 34 31 20 57 69 6c 6c  50 72 69 6e 74 3d 3e 77  |141 WillPrint=>w|
00068930  69 6d 70 5f 75 6d 38 30  31 34 31 3e 0a 3c 38 30  |imp_um80141>.<80|
00068940  31 34 32 20 50 72 69 6e  74 53 61 76 65 3d 3e 77  |142 PrintSave=>w|
00068950  69 6d 70 5f 75 6d 38 30  31 34 32 3e 0a 3c 38 30  |imp_um80142>.<80|
00068960  31 34 33 20 50 72 69 6e  74 49 6e 69 74 3d 3e 77  |143 PrintInit=>w|
00068970  69 6d 70 5f 75 6d 38 30  31 34 33 3e 0a 3c 38 30  |imp_um80143>.<80|
00068980  31 34 34 20 50 72 69 6e  74 45 72 72 6f 72 3d 3e  |144 PrintError=>|
00068990  77 69 6d 70 5f 75 6d 38  30 31 34 34 3e 0a 3c 38  |wimp_um80144>.<8|
000689a0  30 31 34 35 20 50 72 69  6e 74 54 79 70 65 4f 64  |0145 PrintTypeOd|
000689b0  64 3d 3e 77 69 6d 70 5f  75 6d 38 30 31 34 35 3e  |d=>wimp_um80145>|
000689c0  0a 3c 38 30 31 34 36 20  50 72 69 6e 74 54 79 70  |.<80146 PrintTyp|
000689d0  65 4b 6e 6f 77 6e 3d 3e  77 69 6d 70 5f 75 6d 38  |eKnown=>wimp_um8|
000689e0  30 31 34 36 3e 0a 3c 38  30 31 34 37 20 53 65 74  |0146>.<80147 Set|
000689f0  50 72 69 6e 74 65 72 3d  3e 77 69 6d 70 5f 75 6d  |Printer=>wimp_um|
00068a00  38 30 31 34 37 3e 0a 3c  38 30 31 34 43 20 50 53  |80147>.<8014C PS|
00068a10  50 72 69 6e 74 65 72 51  75 65 72 79 3d 3e 77 69  |PrinterQuery=>wi|
00068a20  6d 70 5f 75 6d 38 30 31  34 43 3e 0a 3c 38 30 31  |mp_um8014C>.<801|
00068a30  34 44 20 50 53 50 72 69  6e 74 65 72 41 63 6b 3d  |4D PSPrinterAck=|
00068a40  3e 77 69 6d 70 5f 75 6d  38 30 31 34 44 3e 0a 3c  |>wimp_um8014D>.<|
00068a50  38 30 31 34 45 20 50 53  50 72 69 6e 74 65 72 4d  |8014E PSPrinterM|
00068a60  6f 64 69 66 69 65 64 3d  3e 77 69 6d 70 5f 75 6d  |odified=>wimp_um|
00068a70  38 30 31 34 45 3e 0a 3c  38 30 31 34 46 20 50 53  |8014E>.<8014F PS|
00068a80  50 72 69 6e 74 65 72 44  65 66 61 75 6c 74 73 3d  |PrinterDefaults=|
00068a90  3e 77 69 6d 70 5f 75 6d  38 30 31 34 46 3e 0a 3c  |>wimp_um8014F>.<|
00068aa0  38 30 31 35 30 20 50 53  50 72 69 6e 74 65 72 44  |80150 PSPrinterD|
00068ab0  65 66 61 75 6c 74 65 64  3d 3e 77 69 6d 70 5f 75  |efaulted=>wimp_u|
00068ac0  6d 38 30 31 35 30 3e 0a  3c 38 30 31 35 31 20 50  |m80150>.<80151 P|
00068ad0  53 50 72 69 6e 74 65 72  4e 6f 74 50 53 3d 3e 77  |SPrinterNotPS=>w|
00068ae0  69 6d 70 5f 75 6d 38 30  31 35 31 3e 0a 3c 38 30  |imp_um80151>.<80|
00068af0  31 35 32 20 52 65 73 65  74 50 72 69 6e 74 65 72  |152 ResetPrinter|
00068b00  3d 3e 77 69 6d 70 5f 75  6d 38 30 31 35 32 3e 0a  |=>wimp_um80152>.|
00068b10  3c 38 30 31 35 33 20 50  53 49 73 46 6f 6e 74 50  |<80153 PSIsFontP|
00068b20  72 69 6e 74 52 75 6e 6e  69 6e 67 3d 3e 77 69 6d  |rintRunning=>wim|
00068b30  70 5f 75 6d 38 30 31 35  33 3e 0a 23 45 6e 64 54  |p_um80153>.#EndT|
00068b40  61 62 6c 65 0a 0a 23 49  6e 64 65 6e 74 20 30 0a  |able..#Indent 0.|
00068b50  4f 4c 45 20 50 72 6f 74  6f 63 6f 6c 20 3a 0a 23  |OLE Protocol :.#|
00068b60  49 6e 64 65 6e 74 20 34  0a 23 54 61 62 6c 65 20  |Indent 4.#Table |
00068b70  32 20 32 34 0a 3c 38 30  45 31 45 20 4f 4c 45 5f  |2 24.<80E1E OLE_|
00068b80  46 69 6c 65 43 68 61 6e  67 65 64 3d 3e 77 69 6d  |FileChanged=>wim|
00068b90  70 5f 75 6d 38 30 45 31  45 3e 0a 3c 38 30 45 32  |p_um80E1E>.<80E2|
00068ba0  31 20 4f 4c 45 5f 4f 70  65 6e 53 65 73 73 69 6f  |1 OLE_OpenSessio|
00068bb0  6e 3d 3e 77 69 6d 70 5f  75 6d 38 30 45 32 31 3e  |n=>wimp_um80E21>|
00068bc0  0a 3c 38 30 45 32 32 20  4f 4c 45 5f 4f 70 65 6e  |.<80E22 OLE_Open|
00068bd0  53 65 73 73 69 6f 6e 41  63 6b 3d 3e 77 69 6d 70  |SessionAck=>wimp|
00068be0  5f 75 6d 38 30 45 32 32  3e 0a 3c 38 30 45 32 33  |_um80E22>.<80E23|
00068bf0  20 4f 4c 45 5f 43 6c 6f  73 65 53 65 73 73 69 6f  | OLE_CloseSessio|
00068c00  6e 3d 3e 77 69 6d 70 5f  75 6d 38 30 45 32 33 3e  |n=>wimp_um80E23>|
00068c10  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 23 49 6e 64  |.#EndTable..#Ind|
00068c20  65 6e 74 20 30 0a 3c 4e  65 77 73 42 61 73 65 20  |ent 0.<NewsBase |
00068c30  6d 61 69 6c 3d 3e 77 69  6d 70 5f 55 4d 4e 65 77  |mail=>wimp_UMNew|
00068c40  73 42 61 73 65 3e 20 70  72 6f 74 6f 63 6f 6c 20  |sBase> protocol |
00068c50  3a 0a 23 49 6e 64 65 6e  74 20 34 0a 23 54 61 62  |:.#Indent 4.#Tab|
00068c60  6c 65 20 32 20 32 34 0a  3c 46 45 45 44 31 30 20  |le 2 24.<FEED10 |
00068c70  4e 65 77 73 42 61 73 65  5f 43 6f 6d 6d 61 6e 64  |NewsBase_Command|
00068c80  3d 3e 77 69 6d 70 5f 75  6d 4e 42 5f 43 6f 6d 6d  |=>wimp_umNB_Comm|
00068c90  61 6e 64 3e 0a 3c 46 45  45 44 31 31 20 4e 65 77  |and>.<FEED11 New|
00068ca0  73 42 61 73 65 5f 52 65  70 6c 79 3d 3e 77 69 6d  |sBase_Reply=>wim|
00068cb0  70 5f 75 6d 4e 42 5f 52  65 70 6c 79 3e 0a 3c 46  |p_umNB_Reply>.<F|
00068cc0  45 45 44 31 32 20 4e 65  77 73 42 61 73 65 5f 55  |EED12 NewsBase_U|
00068cd0  70 64 61 74 65 3d 3e 77  69 6d 70 5f 75 6d 4e 42  |pdate=>wimp_umNB|
00068ce0  5f 55 70 64 61 74 65 3e  0a 23 45 6e 64 54 61 62  |_Update>.#EndTab|
00068cf0  6c 65 0a 00 44 41 54 41  d9 01 00 00 53 65 6e 64  |le..DATA....Send|
00068d00  69 6e 67 20 55 73 65 72  4d 65 73 73 61 67 65 73  |ing UserMessages|
00068d10  20 28 31 37 2c 31 38 2c  31 39 29 0a 31 37 09 55  | (17,18,19).17.U|
00068d20  73 65 72 4d 65 73 73 61  67 65 09 09 09 44 6f 65  |serMessage...Doe|
00068d30  73 6e 27 74 20 65 78 70  65 63 74 20 61 20 72 65  |sn't expect a re|
00068d40  70 6c 79 0a 31 38 09 55  73 65 72 4d 65 73 73 61  |ply.18.UserMessa|
00068d50  67 65 5f 52 65 63 6f 72  64 65 64 09 09 49 66 20  |ge_Recorded..If |
00068d60  6e 6f 2d 6f 6e 65 20 61  6e 73 77 65 72 73 2c 20  |no-one answers, |
00068d70  69 74 20 72 65 74 75 72  6e 73 2e 0a 31 39 09 3c  |it returns..19.<|
00068d80  55 73 65 72 4d 65 73 73  61 67 65 5f 41 63 6b 6e  |UserMessage_Ackn|
00068d90  6f 77 6c 65 64 67 65 3d  3e 57 69 6d 70 5f 73 65  |owledge=>Wimp_se|
00068da0  6e 64 6d 65 73 73 61 67  65 33 3e 20 20 09 54 65  |ndmessage3>  .Te|
00068db0  6c 6c 20 57 69 6d 70 20  77 65 27 6c 6c 20 68 61  |ll Wimp we'll ha|
00068dc0  6e 64 6c 65 20 69 74 2e  0a 0a 46 6f 72 6d 61 74  |ndle it...Format|
00068dd0  20 6f 66 20 62 6c 6f 63  6b 20 3a 0a 20 30 09 6c  | of block :. 0.l|
00068de0  65 6e 67 74 68 20 6f 66  20 62 6c 6f 63 6b 0a 20  |ength of block. |
00068df0  31 32 09 79 6f 75 72 20  72 65 66 20 28 30 20 66  |12.your ref (0 f|
00068e00  6f 72 20 6f 72 69 67 69  6e 61 6c 20 6d 65 73 73  |or original mess|
00068e10  61 67 65 2c 20 6e 6f 74  20 61 20 72 65 70 6c 79  |age, not a reply|
00068e20  29 0a 20 31 36 09 3c 6d  65 73 73 61 67 65 20 63  |). 16.<message c|
00068e30  6f 64 65 3d 3e 77 69 6d  70 5f 73 65 6e 64 6d 65  |ode=>wimp_sendme|
00068e40  73 73 61 67 65 30 3e 0a  20 32 30 09 2e 2e 64 61  |ssage0>. 20...da|
00068e50  74 61 2e 2e 0a 0a 57 69  6d 70 5f 53 65 6e 64 4d  |ta....Wimp_SendM|
00068e60  65 73 73 61 67 65 20 66  69 6c 6c 73 20 6f 75 74  |essage fills out|
00068e70  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 66  | the following f|
00068e80  69 65 6c 64 73 3a 0a 20  34 09 48 61 6e 64 6c 65  |ields:. 4.Handle|
00068e90  20 6f 66 20 73 65 6e 64  65 72 0a 20 38 09 6d 79  | of sender. 8.my|
00068ea0  20 72 65 66 20 28 41 20  72 65 70 6c 79 20 74 6f  | ref (A reply to|
00068eb0  20 74 68 69 73 20 6d 65  73 73 61 67 65 20 77 69  | this message wi|
00068ec0  6c 6c 20 75 73 65 20 74  68 69 73 2e 29 00 00 00  |ll use this.)...|
00068ed0  44 41 54 41 0e 02 00 00  52 65 63 65 69 76 69 6e  |DATA....Receivin|
00068ee0  67 20 55 73 65 72 4d 65  73 73 61 67 65 73 20 28  |g UserMessages (|
00068ef0  31 37 2c 31 38 2c 31 39  29 0a 31 37 09 55 73 65  |17,18,19).17.Use|
00068f00  72 4d 65 73 73 61 67 65  09 09 09 44 6f 65 73 6e  |rMessage...Doesn|
00068f10  27 74 20 65 78 70 65 63  74 20 61 20 72 65 70 6c  |'t expect a repl|
00068f20  79 0a 31 38 09 55 73 65  72 4d 65 73 73 61 67 65  |y.18.UserMessage|
00068f30  5f 52 65 63 6f 72 64 65  64 09 09 49 66 20 6e 6f  |_Recorded..If no|
00068f40  6f 6e 65 20 61 6e 73 77  65 72 73 2c 20 69 74 20  |one answers, it |
00068f50  72 65 74 75 72 6e 73 2e  0a 31 39 09 3c 55 73 65  |returns..19.<Use|
00068f60  72 4d 65 73 73 61 67 65  5f 41 63 6b 6e 6f 77 6c  |rMessage_Acknowl|
00068f70  65 64 67 65 3d 3e 57 69  6d 70 5f 53 65 6e 64 4d  |edge=>Wimp_SendM|
00068f80  65 73 73 61 67 65 33 3e  20 20 09 41 20 55 4d 5f  |essage3>  .A UM_|
00068f90  52 65 63 6f 72 64 65 64  20 72 65 74 75 72 6e 73  |Recorded returns|
00068fa0  2e 0a 0a 46 6f 72 6d 61  74 20 6f 66 20 62 6c 6f  |...Format of blo|
00068fb0  63 6b 20 3a 0a 20 30 09  6c 65 6e 67 74 68 20 6f  |ck :. 0.length o|
00068fc0  66 20 62 6c 6f 63 6b 0a  20 34 09 48 61 6e 64 6c  |f block. 4.Handl|
00068fd0  65 20 6f 66 20 73 65 6e  64 65 72 0a 20 38 09 6d  |e of sender. 8.m|
00068fe0  79 20 72 65 66 0a 20 31  32 09 79 6f 75 72 20 72  |y ref. 12.your r|
00068ff0  65 66 0a 20 31 36 09 3c  6d 65 73 73 61 67 65 20  |ef. 16.<message |
00069000  63 6f 64 65 3d 3e 77 69  6d 70 5f 73 65 6e 64 6d  |code=>wimp_sendm|
00069010  65 73 73 61 67 65 30 3e  0a 20 32 30 09 2e 2e 64  |essage0>. 20...d|
00069020  61 74 61 2e 2e 0a 0a 54  6f 20 61 63 6b 6e 6f 77  |ata....To acknow|
00069030  6c 65 64 67 65 20 6d 65  73 73 61 67 65 2c 20 66  |ledge message, f|
00069040  69 72 73 74 20 73 65 74  20 79 6f 75 72 5f 72 65  |irst set your_re|
00069050  66 20 3d 20 6d 79 5f 72  65 66 2c 20 61 6e 64 20  |f = my_ref, and |
00069060  74 68 65 6e 20 65 69 74  68 65 72 20 6a 75 73 74  |then either just|
00069070  20 63 61 6c 6c 20 57 69  6d 70 5f 53 65 6e 64 4d  | call Wimp_SendM|
00069080  65 73 73 61 67 65 2c 31  39 20 77 68 69 63 68 20  |essage,19 which |
00069090  73 74 6f 70 73 20 74 68  65 20 6d 65 73 73 61 67  |stops the messag|
000690a0  65 20 66 72 6f 6d 20 72  65 74 75 72 6e 69 6e 67  |e from returning|
000690b0  2c 20 6f 72 20 73 65 6e  64 20 61 6e 79 20 55 73  |, or send any Us|
000690c0  65 72 4d 65 73 73 61 67  65 20 62 61 63 6b 20 74  |erMessage back t|
000690d0  6f 20 74 68 65 20 73 65  6e 64 65 72 2e 0a 00 00  |o the sender....|
000690e0  44 41 54 41 68 01 00 00  41 63 6b 6e 6f 77 6c 65  |DATAh...Acknowle|
000690f0  64 67 65 0a 54 68 69 73  20 70 72 65 76 65 6e 74  |dge.This prevent|
00069100  73 20 61 20 62 72 6f 61  64 63 61 73 74 20 6d 65  |s a broadcast me|
00069110  73 73 61 67 65 20 66 72  6f 6d 20 62 65 69 6e 67  |ssage from being|
00069120  20 70 61 73 73 65 64 20  6f 6e 2c 20 61 6e 64 20  | passed on, and |
00069130  61 20 55 73 65 72 4d 65  73 73 61 67 65 5f 52 65  |a UserMessage_Re|
00069140  63 6f 72 64 65 64 20 66  72 6f 6d 20 62 65 69 6e  |corded from bein|
00069150  67 20 72 65 74 75 72 6e  65 64 20 74 6f 20 74 68  |g returned to th|
00069160  65 20 73 65 6e 64 65 72  2e 0a 0a 63 61 6c 6c 20  |e sender...call |
00069170  3c 57 69 6d 70 5f 53 65  6e 64 4d 65 73 73 61 67  |<Wimp_SendMessag|
00069180  65 3e 20 77 69 74 68 20  3a 0a 79 6f 75 72 5f 72  |e> with :.your_r|
00069190  65 66 09 3d 20 30 0a 52  32 09 09 3d 20 74 61 73  |ef.= 0.R2..= tas|
000691a0  6b 2f 77 69 6e 64 6f 77  20 68 61 6e 64 6c 65 0a  |k/window handle.|
000691b0  52 33 09 09 3d 20 69 63  6f 6e 20 68 61 6e 64 6c  |R3..= icon handl|
000691c0  65 20 69 66 20 52 32 20  3d 20 2d 32 0a 0a 4f 6e  |e if R2 = -2..On|
000691d0  20 65 78 69 74 20 52 32  20 3d 20 74 61 73 6b 20  | exit R2 = task |
000691e0  68 61 6e 64 6c 65 2e 0a  0a 59 6f 75 20 63 61 6e  |handle...You can|
000691f0  20 61 6c 73 6f 20 75 73  65 20 74 68 69 73 20 69  | also use this i|
00069200  66 20 79 6f 75 20 6f 6e  6c 79 20 77 61 6e 74 20  |f you only want |
00069210  74 6f 20 66 69 6e 64 20  6f 75 74 20 77 68 6f 20  |to find out who |
00069220  6f 77 6e 73 20 61 20 77  69 6e 64 6f 77 20 6f 72  |owns a window or|
00069230  20 61 6e 20 69 63 6f 6e  20 6f 6e 20 74 68 65 20  | an icon on the |
00069240  69 63 6f 6e 62 61 72 2e  44 49 52 24 0c 01 00 00  |iconbar.DIR$....|
00069250  0c 01 00 00 54 93 06 00  45 ff ff ff d7 10 ee ff  |....T...E.......|
00069260  2d 01 00 00 13 00 00 00  00 00 00 00 50 61 6c 65  |-...........Pale|
00069270  74 74 65 00 84 94 06 00  45 ff ff ff 8b 0c ee ff  |tte.....E.......|
00069280  51 02 00 00 13 00 00 00  00 00 00 00 50 69 78 54  |Q...........PixT|
00069290  72 61 6e 73 00 00 00 00  d8 96 06 00 45 fd ff ff  |rans........E...|
000692a0  3a 5d f3 ff 76 00 00 00  13 00 00 00 00 00 00 00  |:]..v...........|
000692b0  70 69 78 74 72 61 6e 73  30 00 00 00 50 97 06 00  |pixtrans0...P...|
000692c0  45 fd ff ff 8e c7 f1 ff  a7 00 00 00 13 00 00 00  |E...............|
000692d0  00 00 00 00 70 69 78 74  72 61 6e 73 31 00 00 00  |....pixtrans1...|
000692e0  f8 97 06 00 46 ff ff ff  24 24 bf 88 6e 02 00 00  |....F...$$..n...|
000692f0  13 00 00 00 00 00 00 00  53 79 73 49 6e 66 6f 00  |........SysInfo.|
00069300  68 9a 06 00 46 fd ff ff  11 63 e5 24 52 00 00 00  |h...F....c.$R...|
00069310  13 00 00 00 00 00 00 00  53 79 73 49 6e 66 6f 5f  |........SysInfo_|
00069320  44 69 72 65 63 74 69 6f  6e 00 00 00 bc 9a 06 00  |Direction.......|
00069330  46 fd ff ff 72 72 e5 24  4e 00 00 00 13 00 00 00  |F...rr.$N.......|
00069340  00 00 00 00 53 79 73 49  6e 66 6f 5f 53 74 61 74  |....SysInfo_Stat|
00069350  65 00 00 00 44 41 54 41  2d 01 00 00 57 69 6d 70  |e...DATA-...Wimp|
00069360  5f 52 65 61 64 50 61 6c  65 74 74 65 20 20 28 26  |_ReadPalette  (&|
00069370  34 30 30 45 35 29 0a 23  50 61 72 65 6e 74 20 57  |400E5).#Parent W|
00069380  69 6d 70 5f 0a 3d 3e 09  52 31 20 3d 20 70 74 72  |imp_.=>.R1 = ptr|
00069390  20 74 6f 20 32 30 2d 77  6f 72 64 20 62 6c 6f 63  | to 20-word bloc|
000693a0  6b 0a 5c 3c 3d 09 62 6c  6f 63 6b 20 63 6f 6e 74  |k.\<=.block cont|
000693b0  61 69 6e 73 20 70 61 6c  65 74 74 65 20 64 65 66  |ains palette def|
000693c0  69 6e 69 74 69 6f 6e 73  0a 0a 54 68 69 73 20 53  |initions..This S|
000693d0  57 49 20 72 65 74 75 72  6e 73 20 74 68 65 20 63  |WI returns the c|
000693e0  75 72 72 65 6e 74 20 57  69 6d 70 20 70 61 6c 65  |urrent Wimp pale|
000693f0  74 74 65 20 73 65 74 74  69 6e 67 73 2e 20 45 61  |tte settings. Ea|
00069400  63 68 20 65 6e 74 72 79  20 69 73 20 6f 6e 65 20  |ch entry is one |
00069410  77 6f 72 64 2e 20 46 69  72 73 74 20 31 36 20 65  |word. First 16 e|
00069420  6e 74 72 69 65 73 20 61  72 65 20 74 68 65 20 70  |ntries are the p|
00069430  68 79 73 69 63 61 6c 20  63 6f 6c 6f 75 72 73 2c  |hysical colours,|
00069440  20 74 68 65 6e 20 63 6f  6d 65 73 20 62 6f 72 64  | then comes bord|
00069450  65 72 20 63 6f 6c 6f 75  72 2c 20 61 6e 64 20 66  |er colour, and f|
00069460  69 6e 61 6c 6c 79 20 74  68 65 20 74 68 72 65 65  |inally the three|
00069470  20 70 6f 69 6e 74 65 72  20 63 6f 6c 6f 75 72 73  | pointer colours|
00069480  2e 00 00 00 44 41 54 41  51 02 00 00 57 69 6d 70  |....DATAQ...Wimp|
00069490  5f 52 65 61 64 50 69 78  54 72 61 6e 73 20 20 28  |_ReadPixTrans  (|
000694a0  26 34 30 30 45 44 29 0a  23 50 61 72 65 6e 74 20  |&400ED).#Parent |
000694b0  57 69 6d 70 5f 0a 3d 3e  09 52 30 20 3d 09 26 30  |Wimp_.=>.R0 =.&0|
000694c0  78 78 20 69 66 20 73 70  72 69 74 65 20 69 6e 20  |xx if sprite in |
000694d0  73 79 73 74 65 6d 20 61  72 65 61 0a 09 20 09 26  |system area.. .&|
000694e0  31 78 78 20 69 66 20 73  70 72 69 74 65 20 69 6e  |1xx if sprite in|
000694f0  20 75 73 65 72 20 61 72  65 61 2c 20 61 6e 64 20  | user area, and |
00069500  52 32 20 3d 20 6e 61 6d  65 0a 09 20 09 26 32 78  |R2 = name.. .&2x|
00069510  78 20 69 66 20 73 70 72  69 74 65 20 69 6e 20 75  |x if sprite in u|
00069520  73 65 72 20 61 72 65 61  2c 20 61 6e 64 20 52 32  |ser area, and R2|
00069530  20 3d 20 70 74 72 0a 09  52 31 20 3d 09 50 74 72  | = ptr..R1 =.Ptr|
00069540  20 74 6f 20 73 70 72 69  74 65 2d 61 72 65 61 20  | to sprite-area |
00069550  28 30 20 66 6f 72 20 73  79 73 74 65 6d 2c 20 31  |(0 for system, 1|
00069560  20 66 6f 72 20 77 69 6d  70 29 0a 09 52 32 20 3d  | for wimp)..R2 =|
00069570  09 50 74 72 20 74 6f 20  73 70 72 69 74 65 6e 61  |.Ptr to spritena|
00069580  6d 65 2c 20 6f 72 20 73  70 72 69 74 65 20 69 74  |me, or sprite it|
00069590  73 65 6c 66 0a 09 52 36  20 3d 09 42 6c 6f 63 6b  |self..R6 =.Block|
000695a0  20 74 6f 20 72 65 63 65  69 76 65 20 73 63 61 6c  | to receive scal|
000695b0  65 20 66 61 63 74 6f 72  73 0a 09 52 37 20 3d 09  |e factors..R7 =.|
000695c0  42 6c 6f 63 6b 20 74 6f  20 72 65 63 65 69 76 65  |Block to receive|
000695d0  20 74 72 61 6e 73 6c 61  74 69 6f 6e 20 74 61 62  | translation tab|
000695e0  6c 65 20 28 32 2c 34 20  6f 72 20 31 36 20 62 79  |le (2,4 or 16 by|
000695f0  74 65 73 20 6c 6f 6e 67  29 0a 0a 5c 3c 3d 09 42  |tes long)..\<=.B|
00069600  6c 6f 63 6b 20 61 74 20  52 36 20 63 6f 6e 74 61  |lock at R6 conta|
00069610  69 6e 73 20 3c 73 63 61  6c 65 20 66 61 63 74 6f  |ins <scale facto|
00069620  72 73 3d 3e 77 69 6d 70  5f 72 65 61 64 70 69 78  |rs=>wimp_readpix|
00069630  74 72 61 6e 73 30 3e 0a  09 42 6c 6f 63 6b 20 61  |trans0>..Block a|
00069640  74 20 52 37 20 63 6f 6e  74 61 69 6e 73 20 3c 74  |t R7 contains <t|
00069650  72 61 6e 73 6c 61 74 69  6f 6e 20 74 61 62 6c 65  |ranslation table|
00069660  3d 3e 77 69 6d 70 5f 72  65 61 64 70 69 78 74 72  |=>wimp_readpixtr|
00069670  61 6e 73 31 3e 0a 0a 54  68 69 73 20 53 57 49 20  |ans1>..This SWI |
00069680  67 69 76 65 73 20 69 6e  66 6f 20 6f 66 20 68 6f  |gives info of ho|
00069690  77 20 74 68 65 20 57 69  6d 70 20 77 6f 75 6c 64  |w the Wimp would|
000696a0  20 70 6c 6f 74 20 74 68  69 73 20 69 63 6f 6e 2e  | plot this icon.|
000696b0  0a 0a 53 70 72 69 74 65  20 63 61 6e 20 6e 6f 74  |..Sprite can not|
000696c0  20 62 65 20 61 20 32 35  36 2d 63 6f 6c 6f 75 72  | be a 256-colour|
000696d0  20 6f 6e 65 2e 00 00 00  44 41 54 41 76 00 00 00  | one....DATAv...|
000696e0  53 63 61 6c 65 20 66 61  63 74 6f 72 73 0a 20 30  |Scale factors. 0|
000696f0  09 78 20 6d 75 6c 74 69  70 6c 69 63 61 74 69 6f  |.x multiplicatio|
00069700  6e 20 66 61 63 74 6f 72  0a 20 34 09 79 20 6d 75  |n factor. 4.y mu|
00069710  6c 74 69 70 6c 69 63 61  74 69 6f 6e 20 66 61 63  |ltiplication fac|
00069720  74 6f 72 0a 20 38 09 78  20 64 69 76 69 73 69 6f  |tor. 8.x divisio|
00069730  6e 20 66 61 63 74 6f 72  0a 20 31 32 09 79 20 64  |n factor. 12.y d|
00069740  69 76 69 73 69 6f 6e 20  66 61 63 74 6f 72 00 00  |ivision factor..|
00069750  44 41 54 41 a7 00 00 00  43 6f 6c 6f 75 72 20 74  |DATA....Colour t|
00069760  72 61 6e 73 6c 61 74 69  6f 6e 20 74 61 62 6c 65  |ranslation table|
00069770  0a 30 09 43 6f 6c 6f 75  72 20 74 6f 20 75 73 65  |.0.Colour to use|
00069780  20 69 6e 73 74 65 61 64  20 6f 66 20 73 70 72 69  | instead of spri|
00069790  74 65 20 63 6f 6c 6f 75  72 20 30 0a 31 09 43 6f  |te colour 0.1.Co|
000697a0  6c 6f 75 72 20 74 6f 20  75 73 65 20 69 6e 73 74  |lour to use inst|
000697b0  65 61 64 20 6f 66 20 73  70 72 69 74 65 20 63 6f  |ead of sprite co|
000697c0  6c 6f 75 72 20 31 0a 2e  0a 2e 0a 31 35 09 43 6f  |lour 1.....15.Co|
000697d0  6c 6f 75 72 20 74 6f 20  75 73 65 20 69 6e 73 74  |lour to use inst|
000697e0  65 61 64 20 6f 66 20 73  70 72 69 74 65 20 63 6f  |ead of sprite co|
000697f0  6c 6f 75 72 20 31 35 00  44 41 54 41 6e 02 00 00  |lour 15.DATAn...|
00069800  57 69 6d 70 5f 52 65 61  64 53 79 73 49 6e 66 6f  |Wimp_ReadSysInfo|
00069810  20 20 28 26 34 30 30 46  32 29 0a 23 50 61 72 65  |  (&400F2).#Pare|
00069820  6e 74 20 57 69 6d 70 5f  0a 3d 3e 09 52 30 20 3d  |nt Wimp_.=>.R0 =|
00069830  20 69 74 65 6d 20 69 6e  64 65 78 0a 5c 3c 3d 09  | item index.\<=.|
00069840  52 30 20 3d 20 69 74 65  6d 20 76 61 6c 75 65 0a  |R0 = item value.|
00069850  0a 23 54 61 62 0a 43 75  72 72 65 6e 74 6c 79 20  |.#Tab.Currently |
00069860  64 65 66 69 6e 65 64 20  76 61 6c 75 65 73 20 66  |defined values f|
00069870  6f 72 20 52 30 20 3a 0a  30 09 4e 75 6d 62 65 72  |or R0 :.0.Number|
00069880  20 6f 66 20 61 63 74 69  76 65 20 74 61 73 6b 73  | of active tasks|
00069890  0a 20 09 28 49 73 20 30  20 69 66 20 63 6f 6d 70  |. .(Is 0 if comp|
000698a0  6c 65 74 65 6c 79 20 6f  75 74 73 69 64 65 20 64  |letely outside d|
000698b0  65 73 6b 74 6f 70 29 0a  31 09 57 69 6d 70 20 6d  |esktop).1.Wimp m|
000698c0  6f 64 65 0a 32 09 53 70  72 69 74 65 20 73 75 66  |ode.2.Sprite suf|
000698d0  66 69 78 0a 33 09 3c 44  65 73 6b 74 6f 70 20 73  |fix.3.<Desktop s|
000698e0  74 61 74 65 3d 3e 57 69  6d 70 5f 52 65 61 64 53  |tate=>Wimp_ReadS|
000698f0  79 73 49 6e 66 6f 5f 53  74 61 74 65 3e 0a 34 09  |ysInfo_State>.4.|
00069900  3c 57 72 69 74 65 20 64  69 72 65 63 74 69 6f 6e  |<Write direction|
00069910  3d 3e 57 69 6d 70 5f 52  65 61 64 53 79 73 49 6e  |=>Wimp_ReadSysIn|
00069920  66 6f 5f 44 69 72 65 63  74 69 6f 6e 3e 0a 35 09  |fo_Direction>.5.|
00069930  52 30 20 3d 09 43 75 72  72 65 6e 74 20 74 61 73  |R0 =.Current tas|
00069940  6b 20 68 61 6e 64 6c 65  20 28 30 20 69 66 20 6e  |k handle (0 if n|
00069950  6f 6e 65 29 0a 20 09 52  31 20 3d 09 56 65 72 73  |one). .R1 =.Vers|
00069960  69 6f 6e 20 6f 66 20 57  69 6e 64 6f 77 4d 61 6e  |ion of WindowMan|
00069970  61 67 65 72 20 65 78 70  65 63 74 65 64 20 62 79  |ager expected by|
00069980  20 74 61 73 6b 20 61 73  20 67 69 76 65 6e 20 69  | task as given i|
00069990  6e 20 3c 57 69 6d 70 5f  49 6e 69 74 69 61 6c 69  |n <Wimp_Initiali|
000699a0  73 65 3e 0a 37 09 56 65  72 73 69 6f 6e 20 6f 66  |se>.7.Version of|
000699b0  20 57 69 6e 64 6f 77 4d  61 6e 61 67 65 72 20 2a  | WindowManager *|
000699c0  20 31 30 30 0a 38 09 52  30 20 3d 09 46 6f 6e 74  | 100.8.R0 =.Font|
000699d0  68 61 6e 64 6c 65 20 6f  66 20 22 64 65 73 6b 74  |handle of "deskt|
000699e0  6f 70 20 66 6f 6e 74 22  20 28 30 20 66 6f 72 20  |op font" (0 for |
000699f0  73 79 73 74 65 6d 20 66  6f 6e 74 29 0a 20 09 52  |system font). .R|
00069a00  31 20 3d 09 46 6f 6e 74  68 61 6e 64 6c 65 20 6f  |1 =.Fonthandle o|
00069a10  66 20 22 77 69 6d 70 73  79 6d 62 6f 6c 20 66 6f  |f "wimpsymbol fo|
00069a20  6e 74 22 0a 39 09 54 6f  6f 6c 73 70 72 69 74 65  |nt".9.Toolsprite|
00069a30  73 20 3c 73 70 72 69 74  65 20 61 72 65 61 3d 3e  |s <sprite area=>|
00069a40  4f 53 5f 53 70 72 69 74  65 4f 70 5f 41 72 65 61  |OS_SpriteOp_Area|
00069a50  3e 0a 31 30 09 41 70 70  6c 69 63 61 74 69 6f 6e  |>.10.Application|
00069a60  20 6c 69 6d 69 74 00 00  44 41 54 41 52 00 00 00  | limit..DATAR...|
00069a70  57 69 6d 70 20 57 72 69  74 65 20 44 69 72 65 63  |Wimp Write Direc|
00069a80  74 69 6f 6e 73 0a 56 61  6c 75 65 09 4d 65 61 6e  |tions.Value.Mean|
00069a90  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 4c 65 66 74  |ing.#Line.0.Left|
00069aa0  20 74 6f 20 72 69 67 68  74 0a 31 09 52 69 67 68  | to right.1.Righ|
00069ab0  74 20 74 6f 20 6c 65 66  74 0a 00 00 44 41 54 41  |t to left...DATA|
00069ac0  4e 00 00 00 57 69 6d 70  20 53 74 61 74 65 73 0a  |N...Wimp States.|
00069ad0  56 61 6c 75 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |Value.Meaning.#L|
00069ae0  69 6e 65 0a 23 57 72 61  70 20 4f 66 66 0a 30 09  |ine.#Wrap Off.0.|
00069af0  43 6f 6d 6d 61 6e 64 20  6c 69 6e 65 0a 31 09 49  |Command line.1.I|
00069b00  6e 20 64 65 73 6b 74 6f  70 0a 00 00 44 41 54 41  |n desktop...DATA|
00069b10  db 01 00 00 4d 6f 64 65  20 53 70 65 63 69 66 69  |....Mode Specifi|
00069b20  65 72 20 42 6c 6f 63 6b  73 0a 4f 66 66 73 65 74  |er Blocks.Offset|
00069b30  09 56 61 6c 75 65 0a 23  4c 69 6e 65 0a 30 09 4d  |.Value.#Line.0.M|
00069b40  6f 64 65 20 73 65 6c 65  63 74 6f 72 20 66 6c 61  |ode selector fla|
00069b50  67 73 0a 09 62 69 74 09  30 09 3d 20 31 0a 09 62  |gs..bit.0.= 1..b|
00069b60  69 74 73 09 31 2d 37 09  3d 20 30 20 28 66 6f 72  |its.1-7.= 0 (for|
00069b70  6d 61 74 20 73 70 65 63  69 66 69 65 72 29 0a 09  |mat specifier)..|
00069b80  62 69 74 73 09 38 2d 33  31 09 3d 20 30 20 28 72  |bits.8-31.= 0 (r|
00069b90  65 73 65 72 76 65 64 29  0a 34 09 78 2d 72 65 73  |eserved).4.x-res|
00069ba0  6f 6c 75 74 69 6f 6e 20  28 70 69 78 65 6c 73 29  |olution (pixels)|
00069bb0  0a 38 09 79 2d 72 65 73  6f 6c 75 74 69 6f 6e 20  |.8.y-resolution |
00069bc0  28 70 69 78 65 6c 73 29  0a 31 32 09 70 69 78 65  |(pixels).12.pixe|
00069bd0  6c 20 64 65 70 74 68 0a  09 30 09 3d 20 31 20 62  |l depth..0.= 1 b|
00069be0  70 70 0a 09 31 09 3d 20  32 20 62 70 70 0a 09 32  |pp..1.= 2 bpp..2|
00069bf0  09 3d 20 34 20 62 70 70  0a 09 33 09 3d 20 38 20  |.= 4 bpp..3.= 8 |
00069c00  62 70 70 0a 09 34 09 3d  20 31 36 20 62 70 70 0a  |bpp..4.= 16 bpp.|
00069c10  09 35 09 3d 20 32 34 20  62 70 70 0a 31 36 09 66  |.5.= 24 bpp.16.f|
00069c20  72 61 6d 65 20 72 61 74  65 20 28 48 7a 29 20 28  |rame rate (Hz) (|
00069c30  2d 31 20 3d 20 75 73 65  20 66 69 72 73 74 20 6d  |-1 = use first m|
00069c40  61 74 63 68 29 0a 32 30  09 6f 70 74 69 6f 6e 61  |atch).20.optiona|
00069c50  6c 20 70 61 69 72 73 20  6f 66 20 77 6f 72 64 73  |l pairs of words|
00069c60  0a 09 6d 6f 64 65 20 76  61 72 69 61 62 6c 65 20  |..mode variable |
00069c70  69 6e 64 65 78 2c 20 76  61 6c 75 65 0a 09 6d 6f  |index, value..mo|
00069c80  64 65 20 76 61 72 69 61  62 6c 65 20 69 6e 64 65  |de variable inde|
00069c90  78 2c 20 76 61 6c 75 65  0a 09 8c 65 74 63 0a 09  |x, value...etc..|
00069ca0  2d 31 20 74 65 72 6d 69  6e 61 74 6f 72 0a 23 6c  |-1 terminator.#l|
00069cb0  69 6e 65 0a 53 65 65 20  61 6c 73 6f 20 3c 4d 6f  |ine.See also <Mo|
00069cc0  64 65 20 53 70 65 63 69  66 69 65 72 20 53 74 72  |de Specifier Str|
00069cd0  69 6e 67 73 3d 3e 57 69  6d 70 5f 4d 6f 64 65 53  |ings=>Wimp_ModeS|
00069ce0  74 72 69 6e 67 3e 0a 00  44 41 54 41 0b 02 00 00  |tring>..DATA....|
00069cf0  4d 6f 64 65 20 53 70 65  63 69 66 69 65 72 20 53  |Mode Specifier S|
00069d00  74 72 69 6e 67 73 0a 41  20 6d 6f 64 65 20 73 70  |trings.A mode sp|
00069d10  65 63 69 66 69 65 72 20  73 74 72 69 6e 67 20 63  |ecifier string c|
00069d20  61 6e 20 63 6f 6e 74 61  69 6e 20 74 68 65 20 66  |an contain the f|
00069d30  6f 6c 6c 6f 77 69 6e 67  20 65 6c 65 6d 65 6e 74  |ollowing element|
00069d40  73 2c 20 77 69 74 68 20  73 70 61 63 65 20 62 65  |s, with space be|
00069d50  74 77 65 65 6e 3a 0a 20  0a 58 6e 6e 6e 6e 09 58  |tween:. .Xnnnn.X|
00069d60  20 72 65 73 6f 6c 75 74  69 6f 6e 20 28 6e 6e 6e  | resolution (nnn|
00069d70  6e 20 33 2d 34 20 64 69  67 69 74 73 29 0a 59 6e  |n 3-4 digits).Yn|
00069d80  6e 6e 6e 09 59 20 72 65  73 6f 6c 75 74 69 6f 6e  |nnn.Y resolution|
00069d90  20 28 6e 6e 6e 6e 20 33  2d 34 20 64 69 67 69 74  | (nnnn 3-4 digit|
00069da0  73 29 0a 43 63 63 63 09  43 6f 6c 6f 75 72 73 20  |s).Cccc.Colours |
00069db0  28 63 63 63 3d 32 2c 31  36 2c 32 35 36 2c 33 32  |(ccc=2,16,256,32|
00069dc0  4b 2c 31 36 4d 29 0a 47  63 63 63 09 47 72 65 79  |K,16M).Gccc.Grey|
00069dd0  73 20 28 63 63 63 3d 31  36 2c 32 35 36 29 0a 45  |s (ccc=16,256).E|
00069de0  58 6e 09 58 20 65 69 67  65 6e 66 61 63 74 6f 72  |Xn.X eigenfactor|
00069df0  20 28 30 2d 33 29 0a 45  59 6e 09 59 20 65 69 67  | (0-3).EYn.Y eig|
00069e00  65 6e 66 61 63 74 6f 72  20 28 30 2d 33 29 0a 46  |enfactor (0-3).F|
00069e10  66 66 66 09 46 72 61 6d  65 20 72 61 74 65 20 28  |fff.Frame rate (|
00069e20  66 66 66 20 32 2d 33 20  64 69 67 69 74 73 29 0a  |fff 2-3 digits).|
00069e30  23 6c 69 6e 65 0a 45 78  61 6d 70 6c 65 73 3a 0a  |#line.Examples:.|
00069e40  23 69 6e 64 65 6e 74 20  32 0a 7b 66 43 6f 64 65  |#indent 2.{fCode|
00069e50  7d 4d 4f 44 45 20 58 36  34 30 2c 59 34 38 30 2c  |}MODE X640,Y480,|
00069e60  43 32 35 36 7b 66 7d 0a  09 56 47 41 20 69 6e 20  |C256{f}..VGA in |
00069e70  32 35 36 20 63 6f 6c 6f  75 72 73 0a 7b 66 43 6f  |256 colours.{fCo|
00069e80  64 65 7d 4d 4f 44 45 20  58 38 30 30 2c 59 36 30  |de}MODE X800,Y60|
00069e90  30 2c 43 33 32 4b 7b 66  7d 0a 09 53 56 47 41 20  |0,C32K{f}..SVGA |
00069ea0  69 6e 20 33 32 37 36 38  20 63 6f 6c 6f 75 72 73  |in 32768 colours|
00069eb0  0a 23 69 6e 64 65 6e 74  20 30 0a 23 6c 69 6e 65  |.#indent 0.#line|
00069ec0  0a 53 65 65 20 61 6c 73  6f 20 3c 4d 6f 64 65 20  |.See also <Mode |
00069ed0  53 70 65 63 69 66 69 65  72 20 42 6c 6f 63 6b 73  |Specifier Blocks|
00069ee0  3d 3e 57 69 6d 70 5f 4d  6f 64 65 53 65 6c 65 63  |=>Wimp_ModeSelec|
00069ef0  74 3e 0a 00 44 41 54 41  13 01 00 00 57 69 6d 70  |t>..DATA....Wimp|
00069f00  5f 52 65 73 69 7a 65 49  63 6f 6e 20 28 26 34 30  |_ResizeIcon (&40|
00069f10  30 46 43 29 20 28 33 2e  35 29 0a 23 50 61 72 65  |0FC) (3.5).#Pare|
00069f20  6e 74 20 57 69 6d 70 5f  0a 3d 3e 09 52 30 20 3d  |nt Wimp_.=>.R0 =|
00069f30  09 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 0a 09  |.window handle..|
00069f40  52 31 20 3d 09 69 63 6f  6e 20 68 61 6e 64 6c 65  |R1 =.icon handle|
00069f50  0a 09 52 32 20 3d 09 78  30 0a 09 52 33 20 3d 09  |..R2 =.x0..R3 =.|
00069f60  79 30 0a 09 52 34 20 3d  09 78 31 0a 09 52 35 20  |y0..R4 =.x1..R5 |
00069f70  3d 09 79 31 0a 3c 3d 09  41 6c 6c 20 72 65 67 69  |=.y1.<=.All regi|
00069f80  73 74 65 72 73 20 70 72  65 73 65 72 76 65 64 0a  |sters preserved.|
00069f90  0a 54 68 69 73 20 63 61  6c 6c 20 72 65 73 69 7a  |.This call resiz|
00069fa0  65 73 20 74 68 65 20 67  69 76 65 6e 20 69 63 6f  |es the given ico|
00069fb0  6e 20 69 6e 20 74 68 65  20 67 69 76 65 6e 20 77  |n in the given w|
00069fc0  69 6e 64 6f 77 20 74 6f  20 74 68 65 20 6e 65 77  |indow to the new|
00069fd0  20 62 6f 75 6e 64 69 6e  67 20 62 6f 78 20 63 6f  | bounding box co|
00069fe0  6f 72 64 69 6e 61 74 65  73 20 61 73 20 67 69 76  |ordinates as giv|
00069ff0  65 6e 20 69 6e 20 72 65  67 69 73 74 65 72 73 20  |en in registers |
0006a000  32 20 74 6f 20 35 2e 00  44 49 52 24 2c 00 00 00  |2 to 5..DIR$,...|
0006a010  2c 00 00 00 34 a0 06 00  46 fd ff ff 4b f4 dc 14  |,...4...F...K...|
0006a020  40 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |@...........!Roo|
0006a030  74 00 00 00 44 41 54 41  40 00 00 00 56 50 72 6f  |t...DATA@...VPro|
0006a040  74 65 63 74 0a 23 50 61  72 65 6e 74 20 21 52 6f  |tect.#Parent !Ro|
0006a050  6f 74 0a 23 50 72 65 66  69 78 20 56 50 72 6f 74  |ot.#Prefix VProt|
0006a060  65 63 74 5f 0a 46 49 0a  4f 46 0a 4c 55 0a 4d 4d  |ect_.FI.OF.LU.MM|
0006a070  0a 43 46 0a 44 49 52 24  2c 00 00 00 2c 00 00 00  |.CF.DIR$,...,...|
0006a080  a0 a0 06 00 46 fd ff ff  3f 7d 0f fb 2c 04 00 00  |....F...?}..,...|
0006a090  13 00 00 00 00 00 00 00  21 72 6f 6f 74 00 00 00  |........!root...|
0006a0a0  44 41 54 41 2c 04 00 00  57 69 6d 70 45 78 74 0a  |DATA,...WimpExt.|
0006a0b0  0a 0a 54 68 69 73 20 66  69 6c 65 20 77 69 6c 6c  |..This file will|
0006a0c0  20 62 65 20 69 6e 61 63  63 65 73 73 69 62 6c 65  | be inaccessible|
0006a0d0  20 61 6e 64 20 69 73 20  6f 6e 6c 79 20 68 65 72  | and is only her|
0006a0e0  65 20 74 6f 20 73 74 6f  70 20 74 68 65 20 43 72  |e to stop the Cr|
0006a0f0  65 61 74 65 48 65 6c 70  20 42 41 53 49 43 0a 70  |eateHelp BASIC.p|
0006a100  72 6f 67 72 61 6d 20 66  72 6f 6d 20 63 6f 6d 70  |rogram from comp|
0006a110  6c 61 69 6e 69 6e 67 2e  0a 0a 23 50 61 72 65 6e  |laining...#Paren|
0006a120  74 20 21 52 6f 6f 74 0a  23 50 72 65 66 69 78 20  |t !Root.#Prefix |
0006a130  57 69 6d 70 45 78 74 5f  0a 23 54 61 62 6c 65 20  |WimpExt_.#Table |
0006a140  43 6f 6c 75 6d 6e 73 20  34 0a 49 6e 69 74 69 61  |Columns 4.Initia|
0006a150  6c 69 73 65 0a 43 6c 6f  73 65 44 6f 77 6e 0a 53  |lise.CloseDown.S|
0006a160  6c 61 62 49 63 6f 6e 0a  52 65 64 72 61 77 0a 41  |labIcon.Redraw.A|
0006a170  63 74 69 6f 6e 0a 49 63  6f 6e 42 61 72 53 70 72  |ction.IconBarSpr|
0006a180  69 74 65 0a 49 63 6f 6e  42 61 72 54 65 78 74 0a  |ite.IconBarText.|
0006a190  4c 69 6e 6b 57 69 6e 64  6f 77 73 0a 4f 70 65 6e  |LinkWindows.Open|
0006a1a0  4c 69 6e 6b 65 64 0a 43  6c 6f 73 65 4c 69 6e 6b  |Linked.CloseLink|
0006a1b0  65 64 0a 55 6e 4c 69 6e  6b 57 69 6e 64 6f 77 73  |ed.UnLinkWindows|
0006a1c0  0a 43 75 72 72 65 6e 74  54 61 73 6b 0a 4c 6f 61  |.CurrentTask.Loa|
0006a1d0  64 54 65 6d 70 6c 61 74  65 73 0a 53 65 74 49 63  |dTemplates.SetIc|
0006a1e0  6f 6e 53 74 72 69 6e 67  0a 4f 70 65 6e 57 69 6e  |onString.OpenWin|
0006a1f0  64 6f 77 54 6f 70 0a 53  65 74 49 63 6f 6e 0a 47  |dowTop.SetIcon.G|
0006a200  65 74 49 63 6f 6e 0a 47  65 74 4e 75 6d 62 65 72  |etIcon.GetNumber|
0006a210  49 63 6f 6e 0a 53 65 74  4e 75 6d 62 65 72 49 63  |Icon.SetNumberIc|
0006a220  6f 6e 0a 49 6e 63 4e 75  6d 62 65 72 49 63 6f 6e  |on.IncNumberIcon|
0006a230  0a 44 65 63 4e 75 6d 62  65 72 49 63 6f 6e 0a 53  |.DecNumberIcon.S|
0006a240  65 74 50 6f 69 6e 74 65  72 0a 44 69 76 69 64 65  |etPointer.Divide|
0006a250  0a 43 6f 6c 6f 75 72 73  4d 65 6e 75 0a 41 75 74  |.ColoursMenu.Aut|
0006a260  6f 52 65 64 72 61 77 0a  43 65 6e 74 72 65 57 69  |oRedraw.CentreWi|
0006a270  6e 64 6f 77 0a 44 72 61  67 49 63 6f 6e 0a 50 75  |ndow.DragIcon.Pu|
0006a280  74 43 61 72 65 74 49 63  6f 6e 0a 4f 70 65 6e 44  |tCaretIcon.OpenD|
0006a290  69 61 6c 6f 67 75 65 0a  43 68 65 63 6b 57 69 6e  |ialogue.CheckWin|
0006a2a0  64 6f 77 4f 70 65 6e 0a  43 6f 70 79 53 74 72 69  |dowOpen.CopyStri|
0006a2b0  6e 67 0a 53 65 74 57 69  6e 64 6f 77 54 69 74 6c  |ng.SetWindowTitl|
0006a2c0  65 0a 53 65 74 49 63 6f  6e 53 74 72 69 6e 67 4e  |e.SetIconStringN|
0006a2d0  0a 46 69 6e 64 4c 65 61  66 0a 4c 69 6d 69 74 50  |.FindLeaf.LimitP|
0006a2e0  6f 69 6e 74 65 72 0a 52  65 6c 65 61 73 65 50 6f  |ointer.ReleasePo|
0006a2f0  69 6e 74 65 72 0a 4f 70  65 6e 46 75 6c 6c 53 69  |inter.OpenFullSi|
0006a300  7a 65 0a 4c 6f 61 64 52  41 4d 54 65 6d 70 6c 61  |ze.LoadRAMTempla|
0006a310  74 65 0a 4f 70 65 6e 52  65 71 75 65 73 74 65 72  |te.OpenRequester|
0006a320  0a 43 6c 6f 73 65 52 65  71 75 65 73 74 65 72 0a  |.CloseRequester.|
0006a330  48 69 64 65 4c 69 6e 6b  0a 55 6e 48 69 64 65 4c  |HideLink.UnHideL|
0006a340  69 6e 6b 0a 53 65 6e 64  48 65 6c 70 0a 53 65 6e  |ink.SendHelp.Sen|
0006a350  64 57 69 6d 70 48 65 6c  70 0a 43 72 65 61 74 65  |dWimpHelp.Create|
0006a360  4d 65 6e 75 0a 52 65 43  72 65 61 74 65 4d 65 6e  |Menu.ReCreateMen|
0006a370  75 0a 53 68 61 64 65 45  6e 74 72 79 0a 54 69 63  |u.ShadeEntry.Tic|
0006a380  6b 45 6e 74 72 79 0a 53  65 74 49 63 6f 6e 43 6f  |kEntry.SetIconCo|
0006a390  6c 6f 75 72 0a 53 68 61  64 65 49 63 6f 6e 0a 50  |lour.ShadeIcon.P|
0006a3a0  6c 6f 74 53 70 72 69 74  65 0a 52 65 64 72 61 77  |lotSprite.Redraw|
0006a3b0  44 72 61 77 0a 50 72 65  50 6f 6c 6c 0a 53 65 74  |Draw.PrePoll.Set|
0006a3c0  45 78 74 65 6e 74 0a 4d  6f 76 65 43 61 72 65 74  |Extent.MoveCaret|
0006a3d0  0a 47 65 74 46 6f 6e 74  4d 65 6e 75 0a 44 65 63  |.GetFontMenu.Dec|
0006a3e0  6f 64 65 46 6f 6e 74 4d  65 6e 75 0a 43 6f 6e 74  |odeFontMenu.Cont|
0006a3f0  72 6f 6c 49 6d 6d 65 64  69 61 74 65 0a 48 65 61  |rolImmediate.Hea|
0006a400  70 0a 4d 65 6d 43 6f 70  79 0a 44 61 74 61 53 61  |p.MemCopy.DataSa|
0006a410  76 65 0a 50 6c 6f 74 42  6f 72 64 65 72 0a 43 65  |ve.PlotBorder.Ce|
0006a420  6e 74 72 65 57 69 6e 64  6f 77 56 0a 53 6f 72 74  |ntreWindowV.Sort|
0006a430  0a 4d 65 6d 4d 6f 76 65  0a 4d 65 6e 75 57 69 64  |.MemMove.MenuWid|
0006a440  74 68 0a 44 61 74 61 4c  6f 61 64 0a 4d 6f 76 65  |th.DataLoad.Move|
0006a450  43 61 72 65 74 49 63 6f  6e 0a 44 72 61 77 4f 70  |CaretIcon.DrawOp|
0006a460  0a 53 70 72 69 74 65 4f  70 0a 49 6e 74 65 72 73  |.SpriteOp.Inters|
0006a470  65 63 74 0a 42 6f 72 64  65 72 4f 70 0a 4d 61 6e  |ect.BorderOp.Man|
0006a480  75 61 6c 4c 69 6e 6b 0a  4d 69 73 63 4f 70 0a 56  |ualLink.MiscOp.V|
0006a490  69 65 77 49 63 6f 6e 0a  53 75 62 73 74 69 74 75  |iewIcon.Substitu|
0006a4a0  74 65 41 72 67 73 0a 43  72 65 61 74 65 44 72 61  |teArgs.CreateDra|
0006a4b0  77 0a 52 65 64 69 72 65  63 74 53 70 72 69 74 65  |w.RedirectSprite|
0006a4c0  73 0a 23 45 6e 64 54 61  62 6c 65 0a 44 49 52 24  |s.#EndTable.DIR$|
0006a4d0  2c 00 00 00 2c 00 00 00  f8 a4 06 00 46 fd ff ff  |,...,.......F...|
0006a4e0  61 8e db 14 5a 01 00 00  13 00 00 00 00 00 00 00  |a...Z...........|
0006a4f0  21 52 6f 6f 74 00 00 00  44 41 54 41 5a 01 00 00  |!Root...DATAZ...|
0006a500  5a 61 70 52 65 64 72 61  77 0a 23 50 61 72 65 6e  |ZapRedraw.#Paren|
0006a510  74 20 21 52 6f 6f 74 0a  23 50 72 65 66 69 78 20  |t !Root.#Prefix |
0006a520  5a 61 70 52 65 64 72 61  77 5f 0a 23 54 61 62 6c  |ZapRedraw_.#Tabl|
0006a530  65 20 43 6f 6c 75 6d 6e  73 20 32 0a 52 65 64 72  |e Columns 2.Redr|
0006a540  61 77 41 72 65 61 0a 47  65 74 50 61 6c 65 74 74  |awArea.GetPalett|
0006a550  65 45 6e 74 72 79 0a 52  65 64 72 61 77 52 61 73  |eEntry.RedrawRas|
0006a560  74 65 72 0a 43 6f 6e 76  65 72 74 42 69 74 6d 61  |ter.ConvertBitma|
0006a570  70 0a 50 72 65 70 61 72  65 44 61 74 61 4c 69 6e  |p.PrepareDataLin|
0006a580  65 0a 41 64 64 43 75 72  73 6f 72 0a 46 69 6e 64  |e.AddCursor.Find|
0006a590  43 68 61 72 61 63 74 65  72 0a 4d 6f 76 65 42 79  |Character.MoveBy|
0006a5a0  74 65 73 0a 43 61 63 68  65 64 43 68 61 72 53 69  |tes.CachedCharSi|
0006a5b0  7a 65 0a 43 6f 6e 76 42  69 74 6d 61 70 43 68 61  |ze.ConvBitmapCha|
0006a5c0  72 0a 43 72 65 61 74 65  50 61 6c 65 74 74 65 0a  |r.CreatePalette.|
0006a5d0  49 6e 73 65 72 74 43 68  61 72 0a 52 65 61 64 53  |InsertChar.ReadS|
0006a5e0  79 73 74 65 6d 43 68 61  72 73 0a 52 65 76 65 72  |ystemChars.Rever|
0006a5f0  73 65 42 69 74 6d 61 70  73 0a 52 65 61 64 56 64  |seBitmaps.ReadVd|
0006a600  75 56 61 72 73 0a 47 65  74 52 65 63 74 61 6e 67  |uVars.GetRectang|
0006a610  6c 65 0a 41 64 64 56 64  75 42 69 74 6d 61 70 73  |le.AddVduBitmaps|
0006a620  0a 43 61 63 68 65 46 6f  6e 74 43 68 61 72 73 0a  |.CacheFontChars.|
0006a630  53 70 72 69 74 65 53 69  7a 65 0a 52 65 64 72 61  |SpriteSize.Redra|
0006a640  77 57 69 6e 64 6f 77 0a  23 45 6e 64 54 61 62 6c  |wWindow.#EndTabl|
0006a650  65 0a 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |e...DIR$,...,...|
0006a660  80 a6 06 00 46 fd ff ff  a4 8f db 14 b7 00 00 00  |....F...........|
0006a670  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0006a680  44 41 54 41 b7 00 00 00  57 69 6e 64 6f 77 0a 23  |DATA....Window.#|
0006a690  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
0006a6a0  65 66 69 78 20 57 69 6e  64 6f 77 5f 0a 23 54 61  |efix Window_.#Ta|
0006a6b0  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 43 6c  |ble Columns 2.Cl|
0006a6c0  61 73 73 53 57 49 0a 50  6f 73 74 46 69 6c 74 65  |assSWI.PostFilte|
0006a6d0  72 0a 50 72 65 46 69 6c  74 65 72 0a 47 65 74 50  |r.PreFilter.GetP|
0006a6e0  6f 69 6e 74 65 72 49 6e  66 6f 0a 57 69 6d 70 54  |ointerInfo.WimpT|
0006a6f0  6f 54 6f 6f 6c 62 6f 78  0a 52 65 67 69 73 74 65  |oToolbox.Registe|
0006a700  72 45 78 74 65 72 6e 61  6c 0a 44 65 72 65 67 69  |rExternal.Deregi|
0006a710  73 74 65 72 45 78 74 65  72 6e 61 6c 0a 53 75 70  |sterExternal.Sup|
0006a720  70 6f 72 74 45 78 74 65  72 6e 61 6c 0a 23 45 6e  |portExternal.#En|
0006a730  64 54 61 62 6c 65 0a 00  44 49 52 24 2c 00 00 00  |dTable..DIR$,...|
0006a740  2c 00 00 00 64 a7 06 00  46 fd ff ff 7d 90 db 14  |,...d...F...}...|
0006a750  26 01 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |&...........!Roo|
0006a760  74 00 00 00 44 41 54 41  26 01 00 00 54 72 61 6e  |t...DATA&...Tran|
0006a770  73 6c 61 74 6f 72 0a 23  50 61 72 65 6e 74 20 21  |slator.#Parent !|
0006a780  52 6f 6f 74 0a 23 50 72  65 66 69 78 20 54 72 61  |Root.#Prefix Tra|
0006a790  6e 73 6c 61 74 6f 72 5f  0a 23 54 61 62 6c 65 20  |nslator_.#Table |
0006a7a0  43 6f 6c 75 6d 6e 73 20  32 0a 4d 61 6b 65 4d 61  |Columns 2.MakeMa|
0006a7b0  70 73 0a 53 65 74 56 61  72 69 61 62 6c 65 0a 52  |ps.SetVariable.R|
0006a7c0  65 61 64 56 61 72 69 61  62 6c 65 0a 55 6e 70 61  |eadVariable.Unpa|
0006a7d0  63 6b 50 72 65 0a 55 6e  70 61 63 6b 0a 53 65 74  |ckPre.Unpack.Set|
0006a7e0  50 61 6c 65 74 74 65 0a  52 6f 74 61 74 65 0a 4d  |Palette.Rotate.M|
0006a7f0  69 72 72 6f 72 58 0a 4d  69 72 72 6f 72 59 0a 43  |irrorX.MirrorY.C|
0006a800  6c 6f 73 65 73 74 54 6f  52 47 42 0a 44 4d 41 0a  |losestToRGB.DMA.|
0006a810  50 69 78 65 6c 46 72 65  71 0a 43 61 6c 63 54 72  |PixelFreq.CalcTr|
0006a820  61 6e 73 0a 50 61 6c 65  74 74 65 0a 4d 6f 76 65  |ans.Palette.Move|
0006a830  57 6f 72 64 73 0a 45 78  63 68 61 6e 67 65 57 6f  |Words.ExchangeWo|
0006a840  72 64 73 0a 57 72 69 74  65 57 6f 72 64 73 0a 54  |rds.WriteWords.T|
0006a850  61 73 6b 53 74 61 72 74  0a 54 61 73 6b 51 75 69  |askStart.TaskQui|
0006a860  74 0a 48 65 63 6b 62 65  72 74 0a 43 6f 72 72 65  |t.Heckbert.Corre|
0006a870  63 74 43 6f 6c 0a 43 61  6c 63 52 61 6e 67 65 0a  |ctCol.CalcRange.|
0006a880  23 45 6e 64 54 61 62 6c  65 0a 00 00 44 49 52 24  |#EndTable...DIR$|
0006a890  2c 00 00 00 2c 00 00 00  b8 a8 06 00 46 fd ff ff  |,...,.......F...|
0006a8a0  e9 0f 76 15 59 00 00 00  13 00 00 00 00 00 00 00  |..v.Y...........|
0006a8b0  21 52 6f 6f 74 00 00 00  44 41 54 41 59 00 00 00  |!Root...DATAY...|
0006a8c0  4d 61 6b 65 50 53 46 6f  6e 74 0a 23 50 61 72 65  |MakePSFont.#Pare|
0006a8d0  6e 74 20 21 52 6f 6f 74  0a 23 50 72 65 66 69 78  |nt !Root.#Prefix|
0006a8e0  20 4d 61 6b 65 50 53 46  6f 6e 74 5f 0a 23 54 61  | MakePSFont_.#Ta|
0006a8f0  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 4d 61  |ble Columns 2.Ma|
0006a900  6b 65 46 6f 6e 74 0a 23  45 6e 64 54 61 62 6c 65  |keFont.#EndTable|
0006a910  0a 00 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |....DIR$,...,...|
0006a920  40 a9 06 00 46 fd ff ff  43 11 76 15 91 00 00 00  |@...F...C.v.....|
0006a930  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0006a940  44 41 54 41 91 00 00 00  4e 65 74 4d 6f 6e 69 74  |DATA....NetMonit|
0006a950  6f 72 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |or.#Parent !Root|
0006a960  0a 23 50 72 65 66 69 78  20 4e 65 74 4d 6f 6e 69  |.#Prefix NetMoni|
0006a970  74 6f 72 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |tor_.#Table Colu|
0006a980  6d 6e 73 20 32 0a 50 72  69 6e 74 43 68 61 72 0a  |mns 2.PrintChar.|
0006a990  44 65 66 69 6e 65 54 61  73 6b 0a 41 62 61 6e 64  |DefineTask.Aband|
0006a9a0  6f 6e 54 61 73 6b 0a 43  6f 6e 76 65 72 74 46 6f  |onTask.ConvertFo|
0006a9b0  6e 74 0a 55 73 65 46 6f  6e 74 0a 52 65 73 74 6f  |nt.UseFont.Resto|
0006a9c0  72 65 46 6f 6e 74 0a 23  45 6e 64 54 61 62 6c 65  |reFont.#EndTable|
0006a9d0  0a 00 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |....DIR$,...,...|
0006a9e0  00 aa 06 00 46 fd ff ff  aa 11 76 15 f7 00 00 00  |....F.....v.....|
0006a9f0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0006aa00  44 41 54 41 f7 00 00 00  44 69 73 73 0a 23 50 61  |DATA....Diss.#Pa|
0006aa10  72 65 6e 74 20 21 52 6f  6f 74 0a 23 50 72 65 66  |rent !Root.#Pref|
0006aa20  69 78 20 44 69 73 73 5f  0a 23 54 61 62 6c 65 20  |ix Diss_.#Table |
0006aa30  43 6f 6c 75 6d 6e 73 20  32 0a 44 69 73 61 73 73  |Columns 2.Disass|
0006aa40  65 6d 62 6c 65 0a 49 6e  69 74 4c 61 62 65 6c 73  |emble.InitLabels|
0006aa50  0a 4d 61 6b 65 4c 61 62  65 6c 4c 6f 6f 6b 75 70  |.MakeLabelLookup|
0006aa60  0a 46 69 6e 64 4c 61 62  65 6c 0a 46 69 6e 64 4e  |.FindLabel.FindN|
0006aa70  61 6d 65 64 4c 61 62 65  6c 0a 41 64 64 4c 61 62  |amedLabel.AddLab|
0006aa80  65 6c 0a 41 64 64 4c 61  62 65 6c 4e 6f 53 6f 72  |el.AddLabelNoSor|
0006aa90  74 0a 52 65 6d 6f 76 65  4c 61 62 65 6c 0a 41 73  |t.RemoveLabel.As|
0006aaa0  73 65 6d 62 6c 65 0a 41  64 64 4c 69 62 72 61 72  |semble.AddLibrar|
0006aab0  79 42 6c 6f 63 6b 0a 4d  65 72 67 65 4c 61 62 65  |yBlock.MergeLabe|
0006aac0  6c 73 0a 52 65 6d 6f 76  65 49 6e 76 61 6c 69 64  |ls.RemoveInvalid|
0006aad0  4c 61 62 65 6c 73 0a 52  65 6d 6f 76 65 53 61 6d  |Labels.RemoveSam|
0006aae0  65 4e 61 6d 65 64 4c 61  62 65 6c 73 0a 23 45 6e  |eNamedLabels.#En|
0006aaf0  64 54 61 62 6c 65 0a 00  44 49 52 24 2c 00 00 00  |dTable..DIR$,...|
0006ab00  2c 00 00 00 24 ab 06 00  46 fd ff ff ef 11 76 15  |,...$...F.....v.|
0006ab10  6c 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |l...........!Roo|
0006ab20  74 00 00 00 44 41 54 41  6c 00 00 00 4d 61 6b 65  |t...DATAl...Make|
0006ab30  47 49 46 0a 23 50 61 72  65 6e 74 20 21 52 6f 6f  |GIF.#Parent !Roo|
0006ab40  74 0a 23 50 72 65 66 69  78 20 4d 61 6b 65 47 49  |t.#Prefix MakeGI|
0006ab50  46 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |F_.#Table Column|
0006ab60  73 20 32 0a 53 65 74 56  61 72 69 61 62 6c 65 0a  |s 2.SetVariable.|
0006ab70  52 65 61 64 56 61 72 69  61 62 6c 65 0a 43 6f 6d  |ReadVariable.Com|
0006ab80  70 72 65 73 73 0a 23 45  6e 64 54 61 62 6c 65 0a  |press.#EndTable.|
0006ab90  44 49 52 24 2c 00 00 00  2c 00 00 00 bc ab 06 00  |DIR$,...,.......|
0006aba0  46 fd ff ff e1 12 76 15  a5 00 00 00 13 00 00 00  |F.....v.........|
0006abb0  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
0006abc0  a5 00 00 00 43 72 65 61  74 6f 72 0a 23 50 61 72  |....Creator.#Par|
0006abd0  65 6e 74 20 21 52 6f 6f  74 0a 23 50 72 65 66 69  |ent !Root.#Prefi|
0006abe0  78 20 43 72 65 61 74 6f  72 5f 0a 23 54 61 62 6c  |x Creator_.#Tabl|
0006abf0  65 20 43 6f 6c 75 6d 6e  73 20 32 0a 53 65 74 56  |e Columns 2.SetV|
0006ac00  61 72 69 61 62 6c 65 0a  52 65 61 64 56 61 72 69  |ariable.ReadVari|
0006ac10  61 62 6c 65 0a 47 49 46  43 6f 6d 70 72 65 73 73  |able.GIFCompress|
0006ac20  0a 54 49 46 46 43 6f 6d  70 72 65 73 73 0a 41 49  |.TIFFCompress.AI|
0006ac30  4d 43 6f 6e 76 65 72 74  0a 50 42 4d 43 6f 6e 76  |MConvert.PBMConv|
0006ac40  65 72 74 0a 54 61 73 6b  53 74 61 72 74 0a 54 61  |ert.TaskStart.Ta|
0006ac50  73 6b 51 75 69 74 0a 23  45 6e 64 54 61 62 6c 65  |skQuit.#EndTable|
0006ac60  0a 00 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |....DIR$,...,...|
0006ac70  90 ac 06 00 46 fd ff ff  28 f7 71 18 64 00 00 00  |....F...(.q.d...|
0006ac80  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0006ac90  44 41 54 41 64 00 00 00  57 69 6d 70 4b 65 79 0a  |DATAd...WimpKey.|
0006aca0  23 50 61 72 65 6e 74 20  21 52 6f 6f 74 0a 23 50  |#Parent !Root.#P|
0006acb0  72 65 66 69 78 20 57 69  6d 70 4b 65 79 5f 0a 23  |refix WimpKey_.#|
0006acc0  54 61 62 6c 65 20 43 6f  6c 75 6d 6e 73 20 31 0a  |Table Columns 1.|
0006acd0  43 6f 64 65 54 6f 53 74  72 69 6e 67 0a 53 74 72  |CodeToString.Str|
0006ace0  69 6e 67 54 6f 43 6f 64  65 0a 23 45 6e 64 54 61  |ingToCode.#EndTa|
0006acf0  62 6c 65 0a 44 41 54 41  44 08 00 00 0d 00 0b 26  |ble.DATAD......&|
0006ad00  f4 20 4e 65 77 65 72 20  76 65 72 73 69 6f 6e 20  |. Newer version |
0006ad10  74 68 61 6e 20 69 6e 20  53 74 72 6f 6e 67 48 65  |than in StrongHe|
0006ad20  6c 70 0d 00 0c 1f ee 20  85 20 85 20 a2 20 30 2c  |lp..... . . . 0,|
0006ad30  f6 24 2b 22 20 61 74 20  6c 69 6e 65 20 22 2b c3  |.$+" at line "+.|
0006ad40  9e 0d 00 14 31 73 68 24  3d 22 24 2e 41 70 70 73  |....1sh$="$.Apps|
0006ad50  2e 57 50 72 6f 63 65 73  73 2e 21 53 74 72 6f 6e  |.WProcess.!Stron|
0006ad60  67 48 6c 70 2e 48 65 6c  70 44 61 74 61 2e 53 57  |gHlp.HelpData.SW|
0006ad70  49 22 0d 00 1e 0e de 20  6d 65 6d 25 20 32 35 36  |I"..... mem% 256|
0006ad80  0d 00 28 21 73 63 72 61  70 72 6f 6f 74 24 3d 22  |..(!scraproot$="|
0006ad90  53 63 72 61 70 3a 53 74  72 6f 6e 67 46 69 6c 65  |Scrap:StrongFile|
0006ada0  22 0d 00 32 1a 6f 25 3d  ae 28 22 53 63 72 61 70  |"..2.o%=.("Scrap|
0006adb0  3a 4e 65 77 41 64 64 65  64 22 29 0d 00 3c 20 d5  |:NewAdded")..< .|
0006adc0  23 6f 25 2c 22 4e 65 77  6c 79 20 61 64 64 65 64  |#o%,"Newly added|
0006add0  20 53 57 49 20 63 61 6c  6c 73 22 0d 00 46 18 d5  | SWI calls"..F..|
0006ade0  23 6f 25 2c 22 23 50 61  72 65 6e 74 20 21 52 6f  |#o%,"#Parent !Ro|
0006adf0  6f 74 22 0d 00 50 15 d5  23 6f 25 2c 22 23 50 6f  |ot"..P..#o%,"#Po|
0006ae00  73 74 66 69 78 20 5f 22  0d 00 5a 1b d5 23 6f 25  |stfix _"..Z..#o%|
0006ae10  2c 22 23 54 61 62 6c 65  20 43 6f 6c 75 6d 6e 73  |,"#Table Columns|
0006ae20  20 33 22 0d 00 64 12 63  6f 25 3d 30 3a 63 6f 61  | 3"..d.co%=0:coa|
0006ae30  73 24 3d 22 22 0d 00 6e  0c 6c 61 73 74 24 3d 22  |s$=""..n.last$="|
0006ae40  22 0d 00 78 18 e3 49 3d  26 32 30 30 b8 26 31 30  |"..x..I=&200.&10|
0006ae50  30 30 30 30 20 88 20 36  34 0d 00 82 20 20 e7 20  |0000 . 64...  . |
0006ae60  28 49 20 80 20 26 32 30  30 30 30 29 3e 30 20 8c  |(I . &20000)>0 .|
0006ae70  49 2b 3d 26 32 30 30 30  30 0d 00 8c 0b 20 73 77  |I+=&20000.... sw|
0006ae80  69 25 3d 49 0d 00 96 06  20 f5 0d 00 a0 36 20 20  |i%=I.... ....6  |
0006ae90  c8 99 20 22 58 4f 53 5f  53 57 49 4e 75 6d 62 65  |.. "XOS_SWINumbe|
0006aea0  72 54 6f 53 74 72 69 6e  67 22 2c 73 77 69 25 2c  |rToString",swi%,|
0006aeb0  6d 65 6d 25 2c 32 35 36  20 b8 20 2c 2c 6c 65 6e  |mem%,256 . ,,len|
0006aec0  0d 00 aa 20 20 20 6d 65  6d 25 3f 28 6c 65 6e 2d  |...   mem%?(len-|
0006aed0  31 29 3d 31 33 3a 73 77  69 24 3d 24 6d 65 6d 25  |1)=13:swi$=$mem%|
0006aee0  0d 00 b4 42 20 20 e7 20  a7 73 77 69 24 2c 22 55  |...B  . .swi$,"U|
0006aef0  6e 64 65 66 69 6e 65 64  22 29 3e 30 20 84 20 73  |ndefined")>0 . s|
0006af00  77 69 24 3d 22 55 73 65  72 22 20 84 20 73 77 69  |wi$="User" . swi|
0006af10  24 3d 22 4e 55 4c 4c 22  20 8c 20 73 77 69 24 3d  |$="NULL" . swi$=|
0006af20  22 22 0d 00 be 23 20 20  e7 20 a7 73 77 69 24 2c  |""...#  . .swi$,|
0006af30  c3 28 73 77 69 25 2d 49  29 29 3e 30 20 8c 73 77  |.(swi%-I))>0 .sw|
0006af40  69 24 3d 22 22 0d 00 c8  12 20 20 e7 20 73 77 69  |i$=""....  . swi|
0006af50  24 3c 3e 22 22 20 8c 0d  00 d2 1b 20 20 20 f2 73  |$<>"" .....   .s|
0006af60  77 69 66 6f 75 6e 64 28  73 77 69 25 2c 73 77 69  |wifound(swi%,swi|
0006af70  24 29 0d 00 dc 07 20 20  cd 0d 00 e6 0d 20 20 73  |$)....  .....  s|
0006af80  77 69 25 2b 3d 31 0d 00  f0 1a 20 fd 20 73 77 69  |wi%+=1.... . swi|
0006af90  25 3d 49 2b 36 34 20 84  20 73 77 69 24 3d 22 22  |%=I+64 . swi$=""|
0006afa0  0d 00 fa 05 ed 0d 01 04  0e e7 20 63 6f 25 3c 3e  |.......... co%<>|
0006afb0  30 20 8c 0d 01 0e 16 20  d5 23 63 6f 25 2c 22 23  |0 ..... .#co%,"#|
0006afc0  45 6e 64 54 61 62 6c 65  22 0d 01 18 0a 20 d9 23  |EndTable".... .#|
0006afd0  63 6f 25 0d 01 22 36 20  ff 28 22 43 6f 70 79 20  |co%.."6 .("Copy |
0006afe0  22 2b 73 63 72 61 70 72  6f 6f 74 24 2b 22 20 22  |"+scraproot$+" "|
0006aff0  2b 73 68 24 2b 22 2e 22  2b 63 6f 61 73 24 2b 22  |+sh$+"."+coas$+"|
0006b000  20 44 7e 43 7e 56 46 22  29 0d 01 2c 05 cd 0d 01  | D~C~VF")..,....|
0006b010  36 14 d5 23 6f 25 2c 22  23 45 6e 64 54 61 62 6c  |6..#o%,"#EndTabl|
0006b020  65 22 0d 01 40 08 d9 23  6f 25 0d 01 4a 34 ff 28  |e"..@..#o%..J4.(|
0006b030  22 43 6f 70 79 20 53 63  72 61 70 3a 4e 65 77 41  |"Copy Scrap:NewA|
0006b040  64 64 65 64 20 22 2b 73  68 24 2b 22 2e 4e 65 77  |dded "+sh$+".New|
0006b050  41 64 64 65 64 20 44 7e  43 7e 56 46 22 29 0d 01  |Added D~C~VF")..|
0006b060  54 05 e0 0d 01 5e 05 3a  0d 01 68 17 dd f2 73 77  |T....^.:..h...sw|
0006b070  69 66 6f 75 6e 64 28 73  77 69 25 2c 63 24 29 0d  |ifound(swi%,c$).|
0006b080  01 72 16 6d 6f 64 24 3d  c0 63 24 2c a7 63 24 2c  |.r.mod$=.c$,.c$,|
0006b090  22 5f 22 29 29 0d 01 7c  19 63 61 6c 6c 24 3d c1  |"_"))..|.call$=.|
0006b0a0  63 24 2c a7 63 24 2c 22  5f 22 29 2b 31 29 0d 01  |c$,.c$,"_")+1)..|
0006b0b0  86 1e 66 74 3d a4 66 69  6c 65 74 79 70 65 28 73  |..ft=.filetype(s|
0006b0c0  68 24 2b 22 2e 22 2b 6d  6f 64 24 29 0d 01 90 0d  |h$+"."+mod$)....|
0006b0d0  e7 20 66 74 3d 2d 32 20  8c 0d 01 9a 0f 20 e7 20  |. ft=-2 ..... . |
0006b0e0  63 6f 25 3c 3e 30 20 8c  0d 01 a4 1d 20 20 d5 23  |co%<>0 .....  .#|
0006b0f0  63 6f 25 2c 22 23 45 6e  64 54 61 62 6c 65 22 3a  |co%,"#EndTable":|
0006b100  d9 23 63 6f 25 0d 01 ae  36 20 20 ff 28 22 43 6f  |.#co%...6  .("Co|
0006b110  70 79 20 22 2b 73 63 72  61 70 72 6f 6f 74 24 2b  |py "+scraproot$+|
0006b120  22 20 22 2b 73 68 24 2b  22 2e 22 2b 63 6f 61 73  |" "+sh$+"."+coas|
0006b130  24 2b 22 20 44 7e 43 7e  56 22 29 0d 01 b8 0b 20  |$+" D~C~V").... |
0006b140  20 63 6f 25 3d 30 0d 01  c2 06 20 cd 0d 01 cc 1c  | co%=0.... .....|
0006b150  20 ff 28 22 43 44 69 72  20 22 2b 73 68 24 2b 22  | .("CDir "+sh$+"|
0006b160  2e 22 2b 6d 6f 64 24 29  0d 01 d6 18 20 d5 23 6f  |."+mod$).... .#o|
0006b170  25 2c 22 3c 22 2b c0 6d  6f 64 24 29 2b 22 3e 22  |%,"<"+.mod$)+">"|
0006b180  0d 01 e0 18 20 63 6f 61  73 24 3d 6d 6f 64 24 2b  |.... coas$=mod$+|
0006b190  22 2e 21 52 6f 6f 74 22  0d 01 ea 16 20 63 6f 25  |".!Root".... co%|
0006b1a0  3d ae 28 73 63 72 61 70  72 6f 6f 74 24 29 0d 01  |=.(scraproot$)..|
0006b1b0  f4 11 20 d5 23 63 6f 25  2c c0 6d 6f 64 24 29 0d  |.. .#co%,.mod$).|
0006b1c0  01 fe 1a 20 d5 23 63 6f  25 2c 22 23 50 61 72 65  |... .#co%,"#Pare|
0006b1d0  6e 74 20 21 52 6f 6f 74  22 0d 02 08 1a 20 d5 23  |nt !Root".... .#|
0006b1e0  63 6f 25 2c 22 23 50 72  65 66 69 78 20 22 2b 6d  |co%,"#Prefix "+m|
0006b1f0  6f 64 24 0d 02 12 1d 20  d5 23 63 6f 25 2c 22 23  |od$.... .#co%,"#|
0006b200  54 61 62 6c 65 20 43 6f  6c 75 6d 6e 73 20 32 22  |Table Columns 2"|
0006b210  0d 02 1c 0f 20 6c 61 73  74 24 3d 6d 6f 64 24 0d  |.... last$=mod$.|
0006b220  02 26 05 cd 0d 02 30 2c  e7 20 6c 61 73 74 24 3d  |.&....0,. last$=|
0006b230  6d 6f 64 24 20 8c d5 23  63 6f 25 2c 63 61 6c 6c  |mod$ ..#co%,call|
0006b240  24 3a f1 6d 6f 64 24 2c  63 61 6c 6c 24 2c 66 74  |$:.mod$,call$,ft|
0006b250  0d 02 3a 05 e1 0d 02 44  05 3a 0d 02 4e 28 f4 20  |..:....D.:..N(. |
0006b260  20 3e 3e 3e 3e 3e 20 53  74 6f 6c 65 6e 20 66 72  | >>>>> Stolen fr|
0006b270  6f 6d 20 4a 46 53 68 61  72 65 64 20 3c 3c 3c 3c  |om JFShared <<<<|
0006b280  3c 3c 0d 02 58 05 3a 0d  02 62 37 f4 20 2a 2a 2a  |<<..X.:..b7. ***|
0006b290  2a 2a 2a 2a 2a 20 46 69  6c 65 20 69 6e 66 6f 72  |***** File infor|
0006b2a0  6d 61 74 69 6f 6e 20 72  6f 75 74 69 6e 65 73 20  |mation routines |
0006b2b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 02  |**************..|
0006b2c0  6c 05 3a 0d 02 76 31 f4  20 46 4e 66 69 6c 65 74  |l.:..v1. FNfilet|
0006b2d0  79 70 65 20 3a 20 52 65  74 75 72 6e 20 74 68 65  |ype : Return the|
0006b2e0  20 66 69 6c 65 20 74 79  70 65 20 6f 66 20 61 20  | file type of a |
0006b2f0  66 69 6c 65 0d 02 80 32  f4 20 2d 32 3d 6e 6f 74  |file...2. -2=not|
0006b300  20 66 6f 75 6e 64 2c 20  2d 31 3d 75 6e 74 79 70  | found, -1=untyp|
0006b310  65 64 2c 20 26 31 30 30  30 3d 64 69 72 20 6f 72  |ed, &1000=dir or|
0006b320  20 69 6d 61 67 65 0d 02  8a 22 dd 20 a4 66 69 6c  | image...". .fil|
0006b330  65 74 79 70 65 28 66 24  29 3a ea 20 66 25 2c 74  |etype(f$):. f%,t|
0006b340  79 70 65 25 2c 66 6c 25  0d 02 94 2b c8 99 20 22  |ype%,fl%...+.. "|
0006b350  58 4f 53 5f 46 69 6c 65  22 2c 32 30 2c 66 24 20  |XOS_File",20,f$ |
0006b360  b8 20 74 79 70 65 25 2c  2c 2c 2c 2c 2c 66 25 3b  |. type%,,,,,,f%;|
0006b370  66 6c 25 0d 02 9e 0e c8  8e 20 74 79 70 65 25 20  |fl%...... type% |
0006b380  ca 0d 02 a8 11 20 c9 20  30 3a 74 79 70 65 25 3d  |..... . 0:type%=|
0006b390  2d 32 0d 02 b2 11 20 c9  20 31 3a 74 79 70 65 25  |-2.... . 1:type%|
0006b3a0  3d 66 25 0d 02 bc 16 20  c9 20 32 2c 33 3a 74 79  |=f%.... . 2,3:ty|
0006b3b0  70 65 25 3d 26 31 30 30  30 0d 02 c6 05 cb 0d 02  |pe%=&1000.......|
0006b3c0  d0 19 e7 20 28 66 6c 25  80 31 29 3d 31 20 8c 74  |... (fl%.1)=1 .t|
0006b3d0  79 70 65 25 3d 2d 32 0d  02 da 0a 3d 74 79 70 65  |ype%=-2....=type|
0006b3e0  25 0d 02 e4 05 3a 0d 02  ee 3f f4 20 46 4e 62 61  |%....:...?. FNba|
0006b3f0  73 65 74 79 70 65 20 3a  20 52 65 74 75 72 6e 20  |setype : Return |
0006b400  74 68 65 20 66 69 6c 65  20 74 79 70 65 20 6f 66  |the file type of|
0006b410  20 61 20 64 69 72 65 63  74 6f 72 79 20 6f 72 20  | a directory or |
0006b420  69 6d 61 67 65 0d 02 f8  3a f4 20 2d 32 3d 6e 6f  |image...:. -2=no|
0006b430  74 20 66 6f 75 6e 64 2c  20 2d 31 3d 66 69 6c 65  |t found, -1=file|
0006b440  2c 20 26 31 30 30 30 20  66 6f 72 20 64 69 72 2c  |, &1000 for dir,|
0006b450  20 74 79 70 65 20 66 6f  72 20 69 6d 61 67 65 0d  | type for image.|
0006b460  03 02 22 dd 20 a4 62 61  73 65 74 79 70 65 28 66  |..". .basetype(f|
0006b470  24 29 3a ea 20 66 25 2c  74 79 70 65 25 2c 66 6c  |$):. f%,type%,fl|
0006b480  25 0d 03 0c 26 c8 99 20  22 58 4f 53 5f 46 69 6c  |%...&.. "XOS_Fil|
0006b490  65 22 2c 35 2c 66 24 20  b8 20 74 79 70 65 25 2c  |e",5,f$ . type%,|
0006b4a0  2c 66 25 3b 66 6c 25 0d  03 16 0e c8 8e 20 74 79  |,f%;fl%...... ty|
0006b4b0  70 65 25 20 ca 0d 03 20  11 20 c9 20 30 3a 74 79  |pe% ... . . 0:ty|
0006b4c0  70 65 25 3d 2d 32 0d 03  2a 11 20 c9 20 31 3a 74  |pe%=-2..*. . 1:t|
0006b4d0  79 70 65 25 3d 2d 31 0d  03 34 14 20 c9 20 32 3a  |ype%=-1..4. . 2:|
0006b4e0  74 79 70 65 25 3d 26 31  30 30 30 0d 03 3e 1f 20  |type%=&1000..>. |
0006b4f0  c9 20 33 3a 74 79 70 65  25 3d 28 66 25 20 80 20  |. 3:type%=(f% . |
0006b500  26 46 46 46 30 30 29 3e  3e 38 0d 03 48 05 cb 0d  |&FFF00)>>8..H...|
0006b510  03 52 19 e7 20 28 66 6c  25 80 31 29 3d 31 20 8c  |.R.. (fl%.1)=1 .|
0006b520  74 79 70 65 25 3d 2d 32  0d 03 5c 0a 3d 74 79 70  |type%=-2..\.=typ|
0006b530  65 25 0d 03 66 04 0d ff  44 49 52 24 d8 00 00 00  |e%..f...DIR$....|
0006b540  d8 00 00 00 10 b6 06 00  46 fd ff ff e1 05 2a 43  |........F.....*C|
0006b550  77 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |w...........!Roo|
0006b560  74 00 00 00 88 b6 06 00  46 ff ff ff 6f cc 87 4d  |t.......F...o..M|
0006b570  49 01 00 00 13 00 00 00  00 00 00 00 46 69 6c 65  |I...........File|
0006b580  49 6e 66 6f 00 00 00 00  d4 b7 06 00 46 ff ff ff  |Info........F...|
0006b590  bb d9 87 4d 04 02 00 00  13 00 00 00 00 00 00 00  |...M............|
0006b5a0  4d 65 73 73 61 67 65 00  d8 b9 06 00 46 ff ff ff  |Message.....F...|
0006b5b0  76 c9 87 4d f9 00 00 00  13 00 00 00 00 00 00 00  |v..M............|
0006b5c0  4e 65 77 4d 65 73 73 61  67 65 73 00 d4 ba 06 00  |NewMessages.....|
0006b5d0  46 fd ff ff 66 a2 b0 3f  72 00 00 00 13 00 00 00  |F...f..?r.......|
0006b5e0  00 00 00 00 6f 70 65 72  61 74 69 6f 6e 00 00 00  |....operation...|
0006b5f0  48 bb 06 00 46 ff ff ff  73 d4 87 4d b4 00 00 00  |H...F...s..M....|
0006b600  13 00 00 00 00 00 00 00  49 73 4e 65 77 00 00 00  |........IsNew...|
0006b610  44 41 54 41 77 00 00 00  52 65 61 64 4d 61 69 6c  |DATAw...ReadMail|
0006b620  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
0006b630  50 72 65 66 69 78 20 52  65 61 64 4d 61 69 6c 5f  |Prefix ReadMail_|
0006b640  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
0006b650  31 0a 3c 46 69 6c 65 49  6e 66 6f 3e 0a 3c 4d 65  |1.<FileInfo>.<Me|
0006b660  73 73 61 67 65 3e 0a 3c  4e 65 77 4d 65 73 73 61  |ssage>.<NewMessa|
0006b670  67 65 73 3e 0a 3c 49 73  4e 65 77 3e 0a 23 45 6e  |ges>.<IsNew>.#En|
0006b680  64 54 61 62 6c 65 0a 00  44 41 54 41 49 01 00 00  |dTable..DATAI...|
0006b690  52 65 61 64 4d 61 69 6c  5f 46 69 6c 65 49 6e 66  |ReadMail_FileInf|
0006b6a0  6f 20 28 26 34 36 38 30  30 29 0a 23 50 61 72 65  |o (&46800).#Pare|
0006b6b0  6e 74 20 52 65 61 64 4d  61 69 6c 5f 0a 5c 3c 3d  |nt ReadMail_.\<=|
0006b6c0  09 52 30 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |.R0 =.number of |
0006b6d0  6d 65 73 73 61 67 65 73  20 72 65 61 64 2c 20 6f  |messages read, o|
0006b6e0  72 20 2d 31 20 69 66 20  66 69 6c 65 20 6e 6f 74  |r -1 if file not|
0006b6f0  20 73 65 65 6e 0a 09 52  31 20 3d 09 6e 75 6d 62  | seen..R1 =.numb|
0006b700  65 72 20 6f 66 20 6e 65  77 20 6d 65 73 73 61 67  |er of new messag|
0006b710  65 73 20 72 65 61 64 0a  0a 54 68 69 73 20 72 65  |es read..This re|
0006b720  61 64 73 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |ads information |
0006b730  61 62 6f 75 74 20 74 68  65 20 52 65 61 64 4d 61  |about the ReadMa|
0006b740  69 6c 20 6d 65 73 73 61  67 65 20 62 61 73 65 20  |il message base |
0006b750  66 69 6c 65 73 20 77 68  69 63 68 20 68 61 76 65  |files which have|
0006b760  20 62 65 65 6e 20 73 65  65 6e 20 62 79 20 74 68  | been seen by th|
0006b770  65 20 6d 6f 64 75 6c 65  2e 20 54 6f 20 6e 6f 74  |e module. To not|
0006b780  69 66 79 20 74 68 65 20  6d 6f 64 75 6c 65 20 74  |ify the module t|
0006b790  68 61 74 20 74 68 65 20  4c 69 73 74 20 6f 72 20  |hat the List or |
0006b7a0  4e 65 77 20 66 69 6c 65  20 68 61 73 20 63 68 61  |New file has cha|
0006b7b0  6e 67 65 64 2c 20 75 73  65 20 3c 52 65 61 64 4d  |nged, use <ReadM|
0006b7c0  61 69 6c 5f 4e 65 77 4d  65 73 73 61 67 65 73 3e  |ail_NewMessages>|
0006b7d0  2e 00 00 00 44 41 54 41  04 02 00 00 52 65 61 64  |....DATA....Read|
0006b7e0  4d 61 69 6c 5f 4d 65 73  73 61 67 65 20 28 26 34  |Mail_Message (&4|
0006b7f0  36 38 30 31 29 0a 23 50  61 72 65 6e 74 20 52 65  |6801).#Parent Re|
0006b800  61 64 4d 61 69 6c 5f 0a  3d 3e 09 52 30 20 3d 09  |adMail_.=>.R0 =.|
0006b810  66 69 6c 65 20 6e 75 6d  62 65 72 20 74 6f 20 66  |file number to f|
0006b820  69 6e 64 0a 09 52 31 20  3d 09 3c 6f 70 65 72 61  |ind..R1 =.<opera|
0006b830  74 69 6f 6e 20 63 6f 64  65 3d 3e 52 65 61 64 4d  |tion code=>ReadM|
0006b840  61 69 6c 5f 6f 70 65 72  61 74 69 6f 6e 3e 0a 09  |ail_operation>..|
0006b850  52 32 20 3d 09 55 6e 75  73 65 64 0a 09 52 33 20  |R2 =.Unused..R3 |
0006b860  3d 09 70 72 65 76 69 6f  75 73 20 66 69 6c 65 20  |=.previous file |
0006b870  69 6e 20 63 68 61 69 6e  20 28 6f 72 20 2d 31 20  |in chain (or -1 |
0006b880  74 6f 20 6c 65 61 76 65  20 75 6e 63 68 61 6e 67  |to leave unchang|
0006b890  65 64 29 0a 09 52 34 20  3d 09 6e 65 78 74 20 66  |ed)..R4 =.next f|
0006b8a0  69 6c 65 20 69 6e 20 63  68 61 69 6e 20 28 6f 72  |ile in chain (or|
0006b8b0  20 2d 31 20 74 6f 20 6c  65 61 76 65 20 75 6e 63  | -1 to leave unc|
0006b8c0  68 61 6e 67 65 64 29 0a  0a 5c 3c 3d 09 52 30 20  |hanged)..\<=.R0 |
0006b8d0  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
0006b8e0  70 6f 69 6e 74 65 72 20  74 6f 20 6c 69 6e 65 20  |pointer to line |
0006b8f0  69 6e 20 4c 69 73 74 20  66 69 6c 65 2c 20 6f 72  |in List file, or|
0006b900  20 2d 31 20 69 66 20 6e  6f 74 20 66 6f 75 6e 64  | -1 if not found|
0006b910  0a 09 52 32 20 3d 09 72  65 61 6c 20 6d 65 73 73  |..R2 =.real mess|
0006b920  61 67 65 20 6e 75 6d 62  65 72 0a 09 52 33 20 3d  |age number..R3 =|
0006b930  09 70 72 65 76 69 6f 75  73 20 66 69 6c 65 20 69  |.previous file i|
0006b940  6e 20 63 68 61 69 6e 0a  09 52 34 20 3d 09 6e 65  |n chain..R4 =.ne|
0006b950  78 74 20 66 69 6c 65 20  69 6e 20 63 68 61 69 6e  |xt file in chain|
0006b960  0a 0a 54 68 69 73 20 63  61 6c 6c 20 74 72 69 65  |..This call trie|
0006b970  73 20 74 6f 20 66 69 6e  64 20 61 20 70 61 72 74  |s to find a part|
0006b980  69 63 75 6c 61 72 20 66  69 6c 65 27 73 20 69 6e  |icular file's in|
0006b990  66 6f 72 6d 61 74 69 6f  6e 20 61 6e 64 20 72 65  |formation and re|
0006b9a0  74 75 72 6e 73 20 69 74  2c 20 6f 72 20 73 65 74  |turns it, or set|
0006b9b0  73 20 74 68 65 20 69 6e  66 6f 72 6d 61 74 69 6f  |s the informatio|
0006b9c0  6e 20 69 6e 20 74 68 65  20 6d 6f 64 75 6c 65 27  |n in the module'|
0006b9d0  73 20 62 6c 6f 63 6b 2e  44 41 54 41 f9 00 00 00  |s block.DATA....|
0006b9e0  52 65 61 64 4d 61 69 6c  5f 4e 65 77 4d 65 73 73  |ReadMail_NewMess|
0006b9f0  61 67 65 73 20 28 26 34  36 38 30 31 29 0a 23 50  |ages (&46801).#P|
0006ba00  61 72 65 6e 74 20 52 65  61 64 4d 61 69 6c 5f 0a  |arent ReadMail_.|
0006ba10  5c 3c 3d 09 52 30 20 3d  09 4e 75 6d 62 65 72 20  |\<=.R0 =.Number |
0006ba20  6f 66 20 6d 65 73 73 61  67 65 73 20 69 6e 20 62  |of messages in b|
0006ba30  61 73 65 0a 09 52 31 20  3d 09 4e 75 6d 62 65 72  |ase..R1 =.Number|
0006ba40  20 6f 66 20 6e 65 77 20  66 69 6c 65 73 20 69 6e  | of new files in|
0006ba50  20 62 61 73 65 0a 0a 54  68 69 73 20 63 61 6c 6c  | base..This call|
0006ba60  20 6e 6f 74 69 66 69 65  73 20 74 68 65 20 52 65  | notifies the Re|
0006ba70  61 64 4d 61 69 6c 20 6d  6f 64 75 6c 65 20 74 68  |adMail module th|
0006ba80  61 74 20 74 68 65 20 6d  65 73 73 61 67 65 20 62  |at the message b|
0006ba90  61 73 65 20 4c 69 73 74  20 28 6f 72 20 4e 65 77  |ase List (or New|
0006baa0  29 20 66 69 6c 65 20 68  61 73 20 62 65 65 6e 20  |) file has been |
0006bab0  61 6c 74 65 72 65 64 20  61 6e 64 20 69 74 20 6e  |altered and it n|
0006bac0  65 65 64 73 20 74 6f 20  72 65 61 64 20 69 74 2e  |eeds to read it.|
0006bad0  0a 00 00 00 44 41 54 41  72 00 00 00 4f 70 65 72  |....DATAr...Oper|
0006bae0  61 74 69 6f 6e 20 63 6f  64 65 73 0a 23 57 72 61  |ation codes.#Wra|
0006baf0  70 20 4f 66 66 0a 43 6f  64 65 09 4d 65 61 6e 69  |p Off.Code.Meani|
0006bb00  6e 67 0a 23 4c 69 6e 65  0a 2d 31 09 44 65 6c 65  |ng.#Line.-1.Dele|
0006bb10  74 65 20 6d 65 73 73 61  67 65 0a 30 09 44 6f 6e  |te message.0.Don|
0006bb20  27 74 20 61 6c 74 65 72  20 6d 65 73 73 61 67 65  |'t alter message|
0006bb30  0a 31 09 53 65 74 20 64  61 74 61 20 61 73 20 70  |.1.Set data as p|
0006bb40  61 73 73 65 64 0a 00 00  44 41 54 41 b4 00 00 00  |assed...DATA....|
0006bb50  52 65 61 64 4d 61 69 6c  5f 49 73 4e 65 77 20 28  |ReadMail_IsNew (|
0006bb60  26 34 36 38 30 33 29 0a  23 50 61 72 65 6e 74 20  |&46803).#Parent |
0006bb70  52 65 61 64 4d 61 69 6c  5f 0a 3d 3e 09 52 30 20  |ReadMail_.=>.R0 |
0006bb80  3d 09 6e 75 6d 62 65 72  20 6f 66 20 66 69 6c 65  |=.number of file|
0006bb90  20 74 6f 20 63 68 65 63  6b 0a 5c 3c 3d 09 52 30  | to check.\<=.R0|
0006bba0  20 3d 09 30 20 69 66 20  6e 6f 74 20 6e 65 77 2c  | =.0 if not new,|
0006bbb0  20 2d 31 20 69 66 20 6e  65 77 0a 0a 54 68 69 73  | -1 if new..This|
0006bbc0  20 53 57 49 20 63 68 65  63 6b 73 20 74 68 65 20  | SWI checks the |
0006bbd0  6e 65 77 20 66 69 6c 65  73 20 6c 6f 67 20 74 6f  |new files log to|
0006bbe0  20 63 68 65 63 6b 20 69  66 20 74 68 65 20 66 69  | check if the fi|
0006bbf0  6c 65 20 69 73 20 74 68  65 72 65 2e 44 49 52 24  |le is there.DIR$|
0006bc00  74 04 00 00 74 04 00 00  70 c0 06 00 46 fd ff ff  |t...t...p...F...|
0006bc10  9e 49 93 a5 af 01 00 00  13 00 00 00 00 00 00 00  |.I..............|
0006bc20  21 52 6f 6f 74 00 00 00  20 c2 06 00 46 ff ff ff  |!Root... ...F...|
0006bc30  66 75 e0 d0 f4 06 00 00  13 00 00 00 00 00 00 00  |fu..............|
0006bc40  4c 6f 61 64 00 00 00 00  14 c9 06 00 46 ff ff ff  |Load........F...|
0006bc50  2d 59 93 a5 c3 00 00 00  13 00 00 00 00 00 00 00  |-Y..............|
0006bc60  53 74 61 72 74 00 00 00  d8 c9 06 00 46 ff ff ff  |Start.......F...|
0006bc70  62 5e 93 a5 fa 00 00 00  13 00 00 00 00 00 00 00  |b^..............|
0006bc80  53 74 6f 70 00 00 00 00  d4 ca 06 00 46 ff ff ff  |Stop........F...|
0006bc90  c0 63 93 a5 ed 00 00 00  13 00 00 00 00 00 00 00  |.c..............|
0006bca0  50 61 75 73 65 00 00 00  c4 cb 06 00 46 ff ff ff  |Pause.......F...|
0006bcb0  80 69 93 a5 70 03 00 00  13 00 00 00 00 00 00 00  |.i..p...........|
0006bcc0  43 6c 65 61 72 00 00 00  34 cf 06 00 46 ff ff ff  |Clear...4...F...|
0006bcd0  44 7d 93 a5 ba 05 00 00  13 00 00 00 00 00 00 00  |D}..............|
0006bce0  49 6e 66 6f 00 00 00 00  f0 d4 06 00 46 ff ff ff  |Info........F...|
0006bcf0  a4 84 93 a5 98 01 00 00  13 00 00 00 00 00 00 00  |................|
0006bd00  50 6f 73 00 88 d6 06 00  46 ff ff ff f4 2c 98 a5  |Pos.....F....,..|
0006bd10  dc 03 00 00 13 00 00 00  00 00 00 00 45 66 66 65  |............Effe|
0006bd20  63 74 43 6f 6e 74 72 6f  6c 00 00 00 64 da 06 00  |ctControl...d...|
0006bd30  46 ff ff ff 08 94 93 a5  7d 01 00 00 13 00 00 00  |F.......}.......|
0006bd40  00 00 00 00 56 6f 6c 75  6d 65 00 00 e4 db 06 00  |....Volume......|
0006bd50  46 ff ff ff 44 90 93 a5  05 02 00 00 13 00 00 00  |F...D...........|
0006bd60  00 00 00 00 53 65 74 53  61 6d 70 6c 65 53 70 65  |....SetSampleSpe|
0006bd70  65 64 00 00 ec dd 06 00  46 ff ff ff b2 99 93 a5  |ed......F.......|
0006bd80  48 02 00 00 13 00 00 00  00 00 00 00 44 4d 41 42  |H...........DMAB|
0006bd90  75 66 66 65 72 00 00 00  34 e0 06 00 46 ff ff ff  |uffer...4...F...|
0006bda0  18 a3 93 a5 e0 03 00 00  13 00 00 00 00 00 00 00  |................|
0006bdb0  52 65 6d 6f 76 65 43 68  61 6e 6e 65 6c 00 00 00  |RemoveChannel...|
0006bdc0  14 e4 06 00 46 ff ff ff  e4 ae 93 a5 4a 01 00 00  |....F.......J...|
0006bdd0  13 00 00 00 00 00 00 00  52 65 73 74 6f 72 65 43  |........RestoreC|
0006bde0  68 61 6e 6e 65 6c 00 00  60 e5 06 00 46 ff ff ff  |hannel..`...F...|
0006bdf0  d4 c8 93 a5 1c 04 00 00  13 00 00 00 00 00 00 00  |................|
0006be00  53 74 65 72 65 6f 00 00  7c e9 06 00 46 ff ff ff  |Stereo..|...F...|
0006be10  28 ce 93 a5 96 01 00 00  13 00 00 00 00 00 00 00  |(...............|
0006be20  52 65 61 64 53 6f 6e 67  4c 65 6e 67 74 68 00 00  |ReadSongLength..|
0006be30  14 eb 06 00 46 ff ff ff  bf d2 93 a5 69 01 00 00  |....F.......i...|
0006be40  13 00 00 00 00 00 00 00  52 65 61 64 53 65 71 75  |........ReadSequ|
0006be50  65 6e 63 65 54 61 62 6c  65 00 00 00 80 ec 06 00  |enceTable.......|
0006be60  46 ff ff ff b8 e2 93 a5  e0 02 00 00 13 00 00 00  |F...............|
0006be70  00 00 00 00 56 55 42 61  72 43 6f 6e 74 72 6f 6c  |....VUBarControl|
0006be80  00 00 00 00 60 ef 06 00  46 ff ff ff a5 ce 90 a5  |....`...F.......|
0006be90  29 02 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |)...........Read|
0006bea0  56 55 4c 65 76 65 6c 73  00 00 00 00 8c f1 06 00  |VULevels........|
0006beb0  46 ff ff ff 81 f1 93 a5  4a 03 00 00 13 00 00 00  |F.......J.......|
0006bec0  00 00 00 00 52 65 61 64  53 61 6d 70 6c 65 54 61  |....ReadSampleTa|
0006bed0  62 6c 65 00 d8 f4 06 00  46 ff ff ff 80 f9 93 a5  |ble.....F.......|
0006bee0  b4 03 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
0006bef0  53 70 65 65 64 00 00 00  8c f8 06 00 46 ff ff ff  |Speed.......F...|
0006bf00  34 04 94 a5 8c 03 00 00  13 00 00 00 00 00 00 00  |4...............|
0006bf10  50 6c 61 79 53 61 6d 70  6c 65 00 00 18 fc 06 00  |PlaySample......|
0006bf20  46 ff ff ff ee af 96 a5  58 01 00 00 13 00 00 00  |F.......X.......|
0006bf30  00 00 00 00 53 6f 6e 67  53 74 61 74 75 73 00 00  |....SongStatus..|
0006bf40  70 fd 06 00 46 ff ff ff  88 f1 96 a5 e0 04 00 00  |p...F...........|
0006bf50  13 00 00 00 00 00 00 00  52 65 61 64 50 6c 61 79  |........ReadPlay|
0006bf60  69 6e 67 54 69 6d 65 00  50 02 07 00 46 ff ff ff  |ingTime.P...F...|
0006bf70  fc f9 96 a5 04 03 00 00  13 00 00 00 00 00 00 00  |................|
0006bf80  50 6c 61 79 52 61 77 53  61 6d 70 6c 65 00 00 00  |PlayRawSample...|
0006bf90  54 05 07 00 46 ff ff ff  49 ff 96 a5 89 06 00 00  |T...F...I.......|
0006bfa0  13 00 00 00 00 00 00 00  53 6f 75 6e 64 43 6f 6e  |........SoundCon|
0006bfb0  74 72 6f 6c 00 00 00 00  e0 0b 07 00 46 ff ff ff  |trol........F...|
0006bfc0  b4 9f 91 a5 a0 02 00 00  13 00 00 00 00 00 00 00  |................|
0006bfd0  53 57 49 54 61 62 6c 65  41 64 64 72 65 73 73 00  |SWITableAddress.|
0006bfe0  80 0e 07 00 46 ff ff ff  45 a8 e0 d0 7e 04 00 00  |....F...E...~...|
0006bff0  13 00 00 00 00 00 00 00  52 65 67 69 73 74 65 72  |........Register|
0006c000  53 61 6d 70 6c 65 00 00  00 13 07 00 46 ff ff ff  |Sample......F...|
0006c010  83 30 97 a5 bb 03 00 00  13 00 00 00 00 00 00 00  |.0..............|
0006c020  53 65 74 53 70 65 65 64  00 00 00 00 bc 16 07 00  |SetSpeed........|
0006c030  46 fd ff ff 29 6c 98 a5  71 01 00 00 13 00 00 00  |F...)l..q.......|
0006c040  00 00 00 00 65 66 66 65  63 74 73 00 30 18 07 00  |....effects.0...|
0006c050  46 fd ff ff 41 37 7f f5  ad 01 00 00 13 00 00 00  |F...A7..........|
0006c060  00 00 00 00 65 2d 65 66  66 65 63 74 73 00 00 00  |....e-effects...|
0006c070  44 41 54 41 af 01 00 00  51 54 4d 0a 23 50 61 72  |DATA....QTM.#Par|
0006c080  65 6e 74 20 21 52 6f 6f  74 0a 23 50 72 65 66 69  |ent !Root.#Prefi|
0006c090  78 20 51 54 4d 5f 0a 23  54 61 62 6c 65 20 43 6f  |x QTM_.#Table Co|
0006c0a0  6c 75 6d 6e 73 20 32 0a  3c 4c 6f 61 64 3e 0a 3c  |lumns 2.<Load>.<|
0006c0b0  53 74 61 72 74 3e 0a 3c  53 74 6f 70 3e 0a 3c 50  |Start>.<Stop>.<P|
0006c0c0  61 75 73 65 3e 0a 3c 43  6c 65 61 72 3e 0a 3c 49  |ause>.<Clear>.<I|
0006c0d0  6e 66 6f 3e 0a 3c 50 6f  73 3e 0a 3c 45 66 66 65  |nfo>.<Pos>.<Effe|
0006c0e0  63 74 43 6f 6e 74 72 6f  6c 3e 0a 3c 56 6f 6c 75  |ctControl>.<Volu|
0006c0f0  6d 65 3e 0a 3c 53 65 74  53 61 6d 70 6c 65 53 70  |me>.<SetSampleSp|
0006c100  65 65 64 3e 0a 3c 44 4d  41 42 75 66 66 65 72 3e  |eed>.<DMABuffer>|
0006c110  0a 3c 52 65 6d 6f 76 65  43 68 61 6e 6e 65 6c 3e  |.<RemoveChannel>|
0006c120  0a 3c 52 65 73 74 6f 72  65 43 68 61 6e 6e 65 6c  |.<RestoreChannel|
0006c130  3e 0a 3c 53 74 65 72 65  6f 3e 0a 3c 52 65 61 64  |>.<Stereo>.<Read|
0006c140  53 6f 6e 67 4c 65 6e 67  74 68 3e 0a 3c 52 65 61  |SongLength>.<Rea|
0006c150  64 53 65 71 75 65 6e 63  65 54 61 62 6c 65 3e 0a  |dSequenceTable>.|
0006c160  3c 56 55 42 61 72 43 6f  6e 74 72 6f 6c 3e 0a 3c  |<VUBarControl>.<|
0006c170  52 65 61 64 56 55 4c 65  76 65 6c 73 3e 0a 3c 52  |ReadVULevels>.<R|
0006c180  65 61 64 53 61 6d 70 6c  65 54 61 62 6c 65 3e 0a  |eadSampleTable>.|
0006c190  3c 52 65 61 64 53 70 65  65 64 3e 0a 3c 50 6c 61  |<ReadSpeed>.<Pla|
0006c1a0  79 53 61 6d 70 6c 65 3e  0a 3c 53 6f 6e 67 53 74  |ySample>.<SongSt|
0006c1b0  61 74 75 73 3e 0a 3c 52  65 61 64 50 6c 61 79 69  |atus>.<ReadPlayi|
0006c1c0  6e 67 54 69 6d 65 3e 0a  3c 50 6c 61 79 52 61 77  |ngTime>.<PlayRaw|
0006c1d0  53 61 6d 70 6c 65 3e 0a  3c 53 6f 75 6e 64 43 6f  |Sample>.<SoundCo|
0006c1e0  6e 74 72 6f 6c 3e 0a 3c  53 57 49 54 61 62 6c 65  |ntrol>.<SWITable|
0006c1f0  41 64 64 72 65 73 73 3e  0a 3c 52 65 67 69 73 74  |Address>.<Regist|
0006c200  65 72 53 61 6d 70 6c 65  3e 0a 3c 53 65 74 53 70  |erSample>.<SetSp|
0006c210  65 65 64 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 00  |eed>.#EndTable..|
0006c220  44 41 54 41 f4 06 00 00  51 54 4d 5f 4c 6f 61 64  |DATA....QTM_Load|
0006c230  20 20 28 26 34 37 45 34  30 29 0a 23 50 61 72 65  |  (&47E40).#Pare|
0006c240  6e 74 20 51 54 4d 5f 0a  54 68 65 72 65 20 61 72  |nt QTM_.There ar|
0006c250  65 20 74 68 72 65 65 20  66 6f 72 6d 73 20 6f 66  |e three forms of|
0006c260  20 74 68 69 73 20 63 61  6c 6c 20 3a 0a 3d 3e 09  | this call :.=>.|
0006c270  20 09 3c 46 6f 72 6d 20  31 3d 3e 2e 66 6f 72 6d  | .<Form 1=>.form|
0006c280  31 3e 09 09 3c 46 6f 72  6d 20 32 3d 3e 2e 66 6f  |1>..<Form 2=>.fo|
0006c290  72 6d 32 3e 09 3c 46 6f  72 6d 20 33 3d 3e 2e 66  |rm2>.<Form 3=>.f|
0006c2a0  6f 72 6d 33 3e 0a 09 52  30 20 3d 09 66 69 6c 65  |orm3>..R0 =.file|
0006c2b0  6e 61 6d 65 09 09 09 30  09 09 09 2d 31 0a 09 52  |name...0...-1..R|
0006c2c0  31 20 3d 09 61 64 64 72  65 73 73 2c 20 6f 72 20  |1 =.address, or |
0006c2d0  30 20 66 6f 72 20 51 54  4d 20 6d 65 6d 6f 72 79  |0 for QTM memory|
0006c2e0  09 61 64 64 72 65 73 73  20 20 20 20 20 20 20 20  |.address        |
0006c2f0  09 09 09 61 64 64 72 65  73 73 20 74 6f 20 63 6f  |...address to co|
0006c300  70 79 20 66 72 6f 6d 0a  0a 3c 3d 09 52 30 2c 20  |py from..<=.R0, |
0006c310  52 31 20 70 72 65 73 65  72 76 65 64 0a 0a 54 68  |R1 preserved..Th|
0006c320  65 20 61 64 64 72 65 73  73 20 61 6e 64 20 74 79  |e address and ty|
0006c330  70 65 20 6f 66 20 74 68  65 20 6c 6f 61 64 65 64  |pe of the loaded|
0006c340  20 73 6f 6e 67 20 63 61  6e 20 62 65 20 72 65 61  | song can be rea|
0006c350  64 20 62 79 20 3c 51 54  4d 5f 49 6e 66 6f 3e 2e  |d by <QTM_Info>.|
0006c360  0a 0a 4e 6f 74 65 3a 20  57 68 65 6e 20 61 20 73  |..Note: When a s|
0006c370  6f 6e 67 20 69 73 20 6c  6f 61 64 65 64 20 28 62  |ong is loaded (b|
0006c380  79 20 61 6e 79 20 6d 65  74 68 6f 64 29 20 69 74  |y any method) it|
0006c390  73 20 73 61 6d 70 6c 65  20 64 61 74 61 20 69 73  |s sample data is|
0006c3a0  20 63 6f 6e 76 65 72 74  65 64 20 69 6e 74 6f 20  | converted into |
0006c3b0  38 2d 62 69 74 20 6c 6f  67 61 72 69 74 68 6d 69  |8-bit logarithmi|
0006c3c0  63 20 64 61 74 61 2c 20  66 72 6f 6d 20 73 69 67  |c data, from sig|
0006c3d0  6e 65 64 20 6c 69 6e 65  61 72 20 64 61 74 61 2e  |ned linear data.|
0006c3e0  20 31 35 20 69 6e 73 74  2e 20 66 6f 72 6d 61 74  | 15 inst. format|
0006c3f0  20 73 6f 6e 67 73 20 61  72 65 20 63 6f 6e 76 65  | songs are conve|
0006c400  72 74 65 64 20 74 6f 20  61 20 33 31 20 69 6e 73  |rted to a 31 ins|
0006c410  74 2e 20 66 6f 72 6d 61  74 20 61 74 20 74 68 65  |t. format at the|
0006c420  20 73 61 6d 65 20 74 69  6d 65 2e 20 54 68 65 20  | same time. The |
0006c430  73 61 6d 70 6c 65 20 64  61 74 61 20 43 41 4e 20  |sample data CAN |
0006c440  62 65 20 63 6f 6e 76 65  72 74 65 64 20 62 61 63  |be converted bac|
0006c450  6b 20 74 6f 20 73 69 67  6e 65 64 20 6c 69 6e 65  |k to signed line|
0006c460  61 72 2c 20 73 6f 20 74  68 65 20 73 6f 6e 67 20  |ar, so the song |
0006c470  63 61 6e 20 62 65 20 73  61 76 65 64 20 6f 72 20  |can be saved or |
0006c480  72 65 2d 6c 6f 61 64 65  64 20 65 74 63 2e 20 62  |re-loaded etc. b|
0006c490  79 20 63 61 6c 6c 69 6e  67 20 3c 51 54 4d 5f 43  |y calling <QTM_C|
0006c4a0  6c 65 61 72 3e 20 77 69  74 68 20 52 30 3d 2d 31  |lear> with R0=-1|
0006c4b0  2c 20 61 6c 74 68 6f 75  67 68 20 74 68 65 20 73  |, although the s|
0006c4c0  6f 6e 67 20 66 6f 72 6d  61 74 20 77 69 6c 6c 20  |ong format will |
0006c4d0  6e 6f 74 20 62 65 20 63  6f 6e 76 65 72 74 65 64  |not be converted|
0006c4e0  20 62 61 63 6b 2c 20 61  6e 64 20 77 69 6c 6c 20  | back, and will |
0006c4f0  72 65 6d 61 69 6e 20 61  73 20 33 31 20 69 6e 73  |remain as 31 ins|
0006c500  74 2e 0a 0a 56 20 66 6c  61 67 20 73 65 74 20 69  |t...V flag set i|
0006c510  66 20 74 68 65 72 65 20  77 61 73 20 6e 6f 74 20  |f there was not |
0006c520  65 6e 6f 75 67 68 20 73  70 61 63 65 20 69 6e 20  |enough space in |
0006c530  74 68 65 20 52 4d 41 20  66 6f 72 20 74 68 65 20  |the RMA for the |
0006c540  73 6f 6e 67 2c 20 74 68  65 20 66 69 6c 65 20 77  |song, the file w|
0006c550  61 73 20 6e 6f 74 20 66  6f 75 6e 64 2c 20 74 68  |as not found, th|
0006c560  65 20 6d 75 73 69 63 20  66 6f 72 6d 61 74 20 77  |e music format w|
0006c570  61 73 20 6e 6f 74 20 75  6e 64 65 72 73 74 6f 6f  |as not understoo|
0006c580  64 2c 20 6f 72 20 61 6e  20 69 6c 6c 65 67 61 6c  |d, or an illegal|
0006c590  20 6d 65 6d 6f 72 79 20  61 64 64 72 65 73 73 20  | memory address |
0006c5a0  77 61 73 20 73 70 65 63  69 66 69 65 64 2e 0a 23  |was specified..#|
0006c5b0  53 75 62 70 61 67 65 20  66 6f 72 6d 31 0a 51 54  |Subpage form1.QT|
0006c5c0  4d 5f 4c 6f 61 64 20 66  6f 72 6d 20 31 0a 44 65  |M_Load form 1.De|
0006c5d0  70 65 6e 64 69 6e 67 20  6f 6e 20 74 68 65 20 76  |pending on the v|
0006c5e0  61 6c 75 65 20 69 6e 20  52 31 2c 20 51 54 4d 20  |alue in R1, QTM |
0006c5f0  77 69 6c 6c 20 65 69 74  68 65 72 20 6c 6f 61 64  |will either load|
0006c600  20 74 68 65 20 73 70 65  63 69 66 69 65 64 20 73  | the specified s|
0006c610  6f 6e 67 20 66 69 6c 65  20 69 6e 74 6f 20 51 54  |ong file into QT|
0006c620  4d 27 73 20 6f 77 6e 20  6d 65 6d 6f 72 79 20 28  |M's own memory (|
0006c630  52 31 3d 30 29 2c 20 6f  72 20 74 6f 20 74 68 65  |R1=0), or to the|
0006c640  20 6d 65 6d 6f 72 79 20  61 64 64 72 65 73 73 20  | memory address |
0006c650  67 69 76 65 6e 20 69 6e  20 52 31 20 28 52 31 5c  |given in R1 (R1\|
0006c660  3c 3e 30 29 2e 0a 23 53  75 62 70 61 67 65 20 66  |<>0)..#Subpage f|
0006c670  6f 72 6d 32 0a 51 54 4d  5f 4c 6f 61 64 20 66 6f  |orm2.QTM_Load fo|
0006c680  72 6d 20 32 0a 51 54 4d  20 77 69 6c 6c 20 69 6e  |rm 2.QTM will in|
0006c690  69 74 69 61 6c 69 73 65  20 74 68 65 20 73 6f 6e  |itialise the son|
0006c6a0  67 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |g pointed to by |
0006c6b0  52 31 2c 20 61 74 20 74  68 61 74 20 61 64 64 72  |R1, at that addr|
0006c6c0  65 73 73 2e 0a 54 68 69  73 20 65 6e 61 62 6c 65  |ess..This enable|
0006c6d0  73 20 61 20 70 72 6f 67  72 61 6d 20 74 6f 20 6c  |s a program to l|
0006c6e0  6f 61 64 20 61 20 73 6f  6e 67 20 69 6e 74 6f 20  |oad a song into |
0006c6f0  69 74 73 20 6f 77 6e 20  72 65 73 65 72 76 65 64  |its own reserved|
0006c700  20 6d 65 6d 6f 72 79 20  28 65 67 2e 20 61 70 70  | memory (eg. app|
0006c710  6c 69 63 61 74 69 6f 6e  20 6d 65 6d 6f 72 79 20  |lication memory |
0006c720  6f 72 20 69 74 73 20 6f  77 6e 20 52 4d 41 20 62  |or its own RMA b|
0006c730  6c 6f 63 6b 29 20 61 6e  64 20 67 65 74 20 51 54  |lock) and get QT|
0006c740  4d 20 74 6f 20 70 6c 61  79 20 69 74 20 66 72 6f  |M to play it fro|
0006c750  6d 20 74 68 65 72 65 2c  20 72 61 74 68 65 72 20  |m there, rather |
0006c760  74 68 61 6e 20 66 72 6f  6d 20 61 20 51 54 4d 2d  |than from a QTM-|
0006c770  63 6f 6e 74 72 6f 6c 6c  65 64 20 52 4d 41 20 62  |controlled RMA b|
0006c780  6c 6f 63 6b 2e 0a 23 53  75 62 70 61 67 65 20 66  |lock..#Subpage f|
0006c790  6f 72 6d 33 0a 51 54 4d  20 77 69 6c 6c 20 43 4f  |orm3.QTM will CO|
0006c7a0  50 59 20 74 68 65 20 73  6f 6e 67 20 66 72 6f 6d  |PY the song from|
0006c7b0  20 74 68 65 20 61 64 64  72 65 73 73 20 67 69 76  | the address giv|
0006c7c0  65 6e 20 69 6e 20 52 31  2c 20 74 6f 20 69 74 73  |en in R1, to its|
0006c7d0  20 6f 77 6e 20 6d 65 6d  6f 72 79 20 28 52 4d 41  | own memory (RMA|
0006c7e0  29 20 61 6e 64 20 75 73  65 20 69 74 20 66 72 6f  |) and use it fro|
0006c7f0  6d 20 74 68 65 72 65 2e  0a 0a 4e 6f 74 65 3a 20  |m there...Note: |
0006c800  49 66 20 74 68 65 20 61  64 64 72 65 73 73 20 69  |If the address i|
0006c810  6e 20 52 31 20 69 73 20  74 68 65 20 53 54 41 52  |n R1 is the STAR|
0006c820  54 20 6f 66 20 61 6e 20  52 4d 41 20 62 6c 6f 63  |T of an RMA bloc|
0006c830  6b 2c 20 51 54 4d 20 77  69 6c 6c 20 74 61 6b 65  |k, QTM will take|
0006c840  20 63 6f 6e 74 72 6f 6c  20 6f 66 20 74 68 69 73  | control of this|
0006c850  20 62 6c 6f 63 6b 2c 20  61 6e 64 20 72 65 6c 65  | block, and rele|
0006c860  61 73 65 20 69 74 20 61  66 74 65 72 20 74 72 61  |ase it after tra|
0006c870  6e 73 66 65 72 69 6e 67  20 74 68 65 20 73 6f 6e  |nsfering the son|
0006c880  67 2e 20 54 68 69 73 20  69 73 20 64 6f 6e 65 20  |g. This is done |
0006c890  74 6f 20 72 65 64 75 63  65 20 70 6f 73 73 69 62  |to reduce possib|
0006c8a0  6c 65 20 66 72 61 67 6d  65 6e 74 61 74 69 6f 6e  |le fragmentation|
0006c8b0  20 6f 66 20 74 68 65 20  52 4d 41 2e 20 54 68 65  | of the RMA. The|
0006c8c0  20 6c 6f 61 64 65 72 20  70 72 6f 67 72 61 6d 20  | loader program |
0006c8d0  6d 75 73 74 20 2a 4e 4f  54 2a 20 61 63 63 65 73  |must *NOT* acces|
0006c8e0  73 20 74 68 65 20 6f 6c  64 20 52 4d 41 20 61 64  |s the old RMA ad|
0006c8f0  64 72 65 73 73 20 6f 66  20 74 68 65 20 73 6f 6e  |dress of the son|
0006c900  67 2c 20 61 66 74 65 72  20 74 68 69 73 20 63 61  |g, after this ca|
0006c910  6c 6c 2e 0a 44 41 54 41  c3 00 00 00 51 54 4d 5f  |ll..DATA....QTM_|
0006c920  53 74 61 72 74 20 20 28  26 34 37 45 34 31 29 0a  |Start  (&47E41).|
0006c930  23 50 61 72 65 6e 74 20  51 54 4d 5f 0a 54 68 69  |#Parent QTM_.Thi|
0006c940  73 20 53 57 49 20 77 69  6c 6c 20 73 74 61 72 74  |s SWI will start|
0006c950  20 74 68 65 20 63 75 72  72 65 6e 74 20 73 6f 6e  | the current son|
0006c960  67 20 70 6c 61 79 69 6e  67 20 28 61 6e 64 20 73  |g playing (and s|
0006c970  74 61 72 74 20 75 70 20  74 68 65 20 73 6f 75 6e  |tart up the soun|
0006c980  64 20 73 79 73 74 65 6d  29 2c 20 61 66 74 65 72  |d system), after|
0006c990  20 6c 6f 61 64 69 6e 67  2c 20 6f 72 20 62 65 69  | loading, or bei|
0006c9a0  6e 67 20 70 61 75 73 65  64 20 6f 72 20 73 74 6f  |ng paused or sto|
0006c9b0  70 70 65 64 2e 0a 0a 56  20 66 6c 61 67 20 73 65  |pped...V flag se|
0006c9c0  74 20 69 66 20 6e 6f 20  73 6f 6e 67 20 69 73 20  |t if no song is |
0006c9d0  6c 6f 61 64 65 64 0a 00  44 41 54 41 fa 00 00 00  |loaded..DATA....|
0006c9e0  51 54 4d 5f 53 74 6f 70  20 20 28 26 34 37 45 34  |QTM_Stop  (&47E4|
0006c9f0  32 29 0a 23 50 61 72 65  6e 74 20 51 54 4d 5f 0a  |2).#Parent QTM_.|
0006ca00  54 68 69 73 20 53 57 49  20 77 69 6c 6c 20 73 74  |This SWI will st|
0006ca10  6f 70 20 74 68 65 20 63  75 72 72 65 6e 74 20 73  |op the current s|
0006ca20  6f 6e 67 20 70 6c 61 79  69 6e 67 2c 20 73 77 69  |ong playing, swi|
0006ca30  74 63 68 20 6f 66 66 20  51 54 4d 27 73 20 73 6f  |tch off QTM's so|
0006ca40  75 6e 64 20 63 6f 6e 74  72 6f 6c 6c 65 72 73 20  |und controllers |
0006ca50  61 6e 64 20 72 65 73 65  74 20 61 6c 6c 20 74 68  |and reset all th|
0006ca60  65 20 69 6e 74 65 72 6e  61 6c 20 73 6f 6e 67 20  |e internal song |
0006ca70  76 61 72 69 61 62 6c 65  73 2c 20 69 6e 63 6c 75  |variables, inclu|
0006ca80  64 69 6e 67 20 74 68 65  20 70 6f 73 69 74 69 6f  |ding the positio|
0006ca90  6e 20 63 6f 75 6e 74 65  72 73 20 2d 20 77 68 69  |n counters - whi|
0006caa0  63 68 20 69 74 20 73 65  74 73 20 74 6f 20 30 2e  |ch it sets to 0.|
0006cab0  0a 0a 56 20 66 6c 61 67  20 73 65 74 20 69 66 20  |..V flag set if |
0006cac0  6e 6f 20 73 6f 6e 67 20  69 73 20 6c 6f 61 64 65  |no song is loade|
0006cad0  64 0a 00 00 44 41 54 41  ed 00 00 00 51 54 4d 5f  |d...DATA....QTM_|
0006cae0  50 61 75 73 65 20 20 28  26 34 37 45 34 33 29 0a  |Pause  (&47E43).|
0006caf0  23 50 61 72 65 6e 74 20  51 54 4d 5f 0a 54 68 69  |#Parent QTM_.Thi|
0006cb00  73 20 68 61 73 20 74 68  65 20 73 61 6d 65 20 65  |s has the same e|
0006cb10  66 66 65 63 74 20 61 73  20 3c 51 54 4d 5f 53 74  |ffect as <QTM_St|
0006cb20  6f 70 3e 2c 20 61 6c 74  68 6f 75 67 68 20 69 74  |op>, although it|
0006cb30  20 64 6f 65 73 6e 27 74  20 72 65 73 65 74 20 74  | doesn't reset t|
0006cb40  68 65 20 69 6e 74 65 72  6e 61 6c 20 76 61 72 69  |he internal vari|
0006cb50  61 62 6c 65 73 2c 20 73  6f 20 77 68 65 6e 20 74  |ables, so when t|
0006cb60  68 65 20 73 6f 6e 67 20  69 73 20 72 65 2d 73 74  |he song is re-st|
0006cb70  61 72 74 65 64 2c 20 69  74 20 77 69 6c 6c 20 63  |arted, it will c|
0006cb80  6f 6e 74 69 6e 75 65 20  66 72 6f 6d 20 74 68 65  |ontinue from the|
0006cb90  20 73 61 6d 65 20 70 6f  73 69 74 69 6f 6e 2e 0a  | same position..|
0006cba0  0a 56 20 66 6c 61 67 20  73 65 74 20 69 66 20 6e  |.V flag set if n|
0006cbb0  6f 20 73 6f 6e 67 20 69  73 20 6c 6f 61 64 65 64  |o song is loaded|
0006cbc0  0a 00 00 00 44 41 54 41  70 03 00 00 51 54 4d 5f  |....DATAp...QTM_|
0006cbd0  43 6c 65 61 72 20 20 28  26 34 37 45 34 34 29 0a  |Clear  (&47E44).|
0006cbe0  23 50 61 72 65 6e 74 20  51 54 4d 5f 0a 3d 3e 09  |#Parent QTM_.=>.|
0006cbf0  52 30 20 3d 09 2d 31 20  74 6f 20 63 6f 6e 76 65  |R0 =.-1 to conve|
0006cc00  72 74 20 73 61 6d 70 6c  65 73 20 62 61 63 6b 20  |rt samples back |
0006cc10  74 6f 20 73 69 67 6e 65  64 20 6c 69 6e 65 61 72  |to signed linear|
0006cc20  20 66 6f 72 6d 61 74 0a  09 20 09 6f 74 68 65 72  | format.. .other|
0006cc30  20 64 6f 6e 27 74 20 63  6f 6e 76 65 72 74 20 73  | don't convert s|
0006cc40  61 6d 70 6c 65 73 0a 0a  3c 3d 09 52 30 20 69 73  |amples..<=.R0 is|
0006cc50  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0006cc60  20 53 57 49 20 77 69 6c  6c 20 73 77 69 74 63 68  | SWI will switch|
0006cc70  20 6f 66 66 20 74 68 65  20 51 54 4d 20 73 6f 75  | off the QTM sou|
0006cc80  6e 64 20 73 79 73 74 65  6d 20 61 6e 64 20 73 74  |nd system and st|
0006cc90  6f 70 20 74 68 65 20 63  75 72 72 65 6e 74 20 73  |op the current s|
0006cca0  6f 6e 67 20 70 6c 61 79  69 6e 67 2c 20 72 65 6c  |ong playing, rel|
0006ccb0  65 61 73 69 6e 67 20 61  6e 79 20 6d 65 6d 6f 72  |easing any memor|
0006ccc0  79 20 75 73 65 64 20 66  6f 72 20 74 68 65 20 73  |y used for the s|
0006ccd0  6f 6e 67 20 69 66 20 69  74 20 77 61 73 20 6c 6f  |ong if it was lo|
0006cce0  61 64 65 64 20 69 6e 74  6f 20 52 4d 41 2e 20 54  |aded into RMA. T|
0006ccf0  68 65 20 73 6f 6e 67 20  63 61 6e 6e 6f 74 20 62  |he song cannot b|
0006cd00  65 20 72 65 73 74 61 72  74 65 64 20 61 66 74 65  |e restarted afte|
0006cd10  72 20 74 68 69 73 20 63  6f 6d 6d 61 6e 64 2c 20  |r this command, |
0006cd20  75 6e 6c 65 73 73 20 69  74 20 69 73 20 72 65 6c  |unless it is rel|
0006cd30  6f 61 64 65 64 20 28 66  72 6f 6d 20 75 73 65 72  |oaded (from user|
0006cd40  2d 72 65 73 65 72 76 65  64 20 6d 65 6d 6f 72 79  |-reserved memory|
0006cd50  2c 20 64 69 73 63 2c 20  65 74 63 2e 29 20 75 73  |, disc, etc.) us|
0006cd60  69 6e 67 20 3c 51 54 4d  5f 4c 6f 61 64 3e 2e 0a  |ing <QTM_Load>..|
0006cd70  0a 54 68 65 20 43 55 52  52 45 4e 54 20 73 6f 6e  |.The CURRENT son|
0006cd80  67 20 63 61 6e 20 6f 6e  6c 79 20 62 65 20 72 65  |g can only be re|
0006cd90  6c 6f 61 64 65 64 20 66  72 6f 6d 20 75 73 65 72  |loaded from user|
0006cda0  2d 72 65 73 65 72 76 65  64 20 28 6e 6f 74 20 51  |-reserved (not Q|
0006cdb0  54 4d 27 73 29 20 6d 65  6d 6f 72 79 0a 61 66 74  |TM's) memory.aft|
0006cdc0  65 72 20 63 61 6c 6c 69  6e 67 20 3c 51 54 4d 5f  |er calling <QTM_|
0006cdd0  43 6c 65 61 72 3e 2c 20  69 66 20 74 68 65 20 73  |Clear>, if the s|
0006cde0  61 6d 70 6c 65 73 20 68  61 76 65 20 62 65 65 6e  |amples have been|
0006cdf0  20 63 6f 6e 76 65 72 74  65 64 20 62 61 63 6b 20  | converted back |
0006ce00  74 6f 0a 73 69 67 6e 65  64 20 6c 69 6e 65 61 72  |to.signed linear|
0006ce10  20 66 6f 72 6d 61 74 20  28 66 72 6f 6d 20 74 68  | format (from th|
0006ce20  65 20 6c 6f 67 61 72 69  74 68 6d 69 63 20 66 6f  |e logarithmic fo|
0006ce30  72 6d 61 74 20 74 68 65  79 20 77 65 72 65 20 63  |rmat they were c|
0006ce40  6f 6e 76 65 72 74 65 64  20 74 6f 0a 77 68 65 6e  |onverted to.when|
0006ce50  20 74 68 65 20 73 6f 6e  67 20 77 61 73 20 6c 6f  | the song was lo|
0006ce60  61 64 65 64 29 2e 20 54  68 69 73 20 63 61 6e 20  |aded). This can |
0006ce70  62 65 20 64 6f 6e 65 20  62 79 20 73 65 74 74 69  |be done by setti|
0006ce80  6e 67 20 52 30 20 74 6f  20 2d 31 20 62 65 66 6f  |ng R0 to -1 befo|
0006ce90  72 65 0a 63 61 6c 6c 69  6e 67 20 3c 51 54 4d 5f  |re.calling <QTM_|
0006cea0  43 6c 65 61 72 3e 2e 20  53 65 65 20 3c 51 54 4d  |Clear>. See <QTM|
0006ceb0  5f 4c 6f 61 64 3e 20 66  6f 72 20 69 6e 66 6f 72  |_Load> for infor|
0006cec0  6d 61 74 69 6f 6e 20 6f  6e 20 28 72 65 29 6c 6f  |mation on (re)lo|
0006ced0  61 64 69 6e 67 20 61 0a  73 6f 6e 67 20 74 68 61  |ading a.song tha|
0006cee0  74 20 69 73 20 61 6c 72  65 61 64 79 20 73 74 6f  |t is already sto|
0006cef0  72 65 64 20 69 6e 20 6d  65 6d 6f 72 79 2e 0a 0a  |red in memory...|
0006cf00  4e 6f 20 65 72 72 6f 72  20 69 73 20 72 65 70 6f  |No error is repo|
0006cf10  72 74 65 64 20 69 66 20  74 68 65 72 65 20 69 73  |rted if there is|
0006cf20  20 6e 6f 74 20 61 20 73  6f 6e 67 20 6c 6f 61 64  | not a song load|
0006cf30  65 64 2e 0a 44 41 54 41  ba 05 00 00 51 54 4d 5f  |ed..DATA....QTM_|
0006cf40  49 6e 66 6f 20 20 28 26  34 37 45 34 35 29 0a 23  |Info  (&47E45).#|
0006cf50  50 61 72 65 6e 74 20 51  54 4d 5f 0a 3c 3d 09 52  |Parent QTM_.<=.R|
0006cf60  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 74  |0 =.pointer to t|
0006cf70  72 61 63 6b 20 6e 61 6d  65 20 28 30 20 74 65 72  |rack name (0 ter|
0006cf80  6d 69 6e 61 74 65 64 29  0a 09 52 31 20 3d 09 70  |minated)..R1 =.p|
0006cf90  6f 69 6e 74 65 72 20 74  6f 20 61 75 74 68 6f 72  |ointer to author|
0006cfa0  20 6e 61 6d 65 20 28 30  20 74 65 72 6d 69 6e 61  | name (0 termina|
0006cfb0  74 65 64 29 20 6f 72 20  30 20 69 66 20 6e 6f 6e  |ted) or 0 if non|
0006cfc0  65 0a 09 52 32 20 3d 09  3c 73 6f 6e 67 20 6f 72  |e..R2 =.<song or|
0006cfd0  69 67 69 6e 3d 3e 2e 6f  72 69 67 69 6e 73 3e 0a  |igin=>.origins>.|
0006cfe0  09 52 33 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |.R3 =.number of |
0006cff0  63 68 61 6e 6e 65 6c 73  20 28 63 75 72 72 65 6e  |channels (curren|
0006d000  74 6c 79 20 6f 6e 6c 79  20 34 20 63 68 61 6e 6e  |tly only 4 chann|
0006d010  65 6c 73 29 0a 09 52 34  20 3d 09 66 69 6c 65 20  |els)..R4 =.file |
0006d020  6c 65 6e 67 74 68 20 28  69 6e 20 62 79 74 65 73  |length (in bytes|
0006d030  29 0a 09 52 35 20 3d 09  67 61 72 62 61 67 65 20  |)..R5 =.garbage |
0006d040  64 61 74 61 20 73 69 7a  65 20 28 2d 76 65 20 69  |data size (-ve i|
0006d050  66 20 64 61 74 61 20 6d  69 73 73 69 6e 67 29 0a  |f data missing).|
0006d060  09 52 36 20 3d 09 61 64  64 72 65 73 73 20 77 68  |.R6 =.address wh|
0006d070  65 72 65 20 73 6f 6e 67  20 69 73 20 6c 6f 61 64  |ere song is load|
0006d080  65 64 0a 0a 54 68 69 73  20 53 57 49 20 72 65 74  |ed..This SWI ret|
0006d090  75 72 6e 73 20 67 65 6e  65 72 61 6c 20 69 6e 66  |urns general inf|
0006d0a0  6f 72 6d 61 74 69 6f 6e  20 61 62 6f 75 74 20 74  |ormation about t|
0006d0b0  68 65 20 63 75 72 72 65  6e 74 20 74 72 61 63 6b  |he current track|
0006d0c0  20 6c 6f 61 64 65 64 20  69 6e 20 51 54 4d 2e 0a  | loaded in QTM..|
0006d0d0  0a 49 74 20 61 6c 73 6f  20 75 73 65 73 20 61 6e  |.It also uses an|
0006d0e0  20 27 69 6e 74 65 6c 6c  69 67 65 6e 74 20 61 75  | 'intelligent au|
0006d0f0  74 68 6f 72 20 64 65 74  65 63 74 6f 72 27 20 72  |thor detector' r|
0006d100  6f 75 74 69 6e 65 2c 20  74 6f 20 73 65 61 72 63  |outine, to searc|
0006d110  68 20 74 68 72 6f 75 67  68 20 74 68 65 20 73 61  |h through the sa|
0006d120  6d 70 6c 65 20 6e 61 6d  65 73 20 28 75 73 75 61  |mple names (usua|
0006d130  6c 6c 79 20 75 73 65 64  20 62 79 20 61 75 74 68  |lly used by auth|
0006d140  6f 72 73 2c 20 74 6f 20  73 74 6f 72 65 20 74 68  |ors, to store th|
0006d150  65 69 72 20 6e 61 6d 65  20 6f 72 20 67 72 6f 75  |eir name or grou|
0006d160  70 29 20 74 6f 20 73 65  65 20 69 66 20 69 74 20  |p) to see if it |
0006d170  63 61 6e 20 66 69 6e 64  20 61 6e 79 74 68 69 6e  |can find anythin|
0006d180  67 20 74 68 61 74 20 72  65 73 65 6d 62 6c 65 73  |g that resembles|
0006d190  20 61 20 6e 61 6d 65 2e  20 49 66 20 69 74 20 73  | a name. If it s|
0006d1a0  75 63 63 65 65 64 73 2c  20 61 20 70 6f 69 6e 74  |ucceeds, a point|
0006d1b0  65 72 20 74 6f 20 74 68  65 20 6e 61 6d 65 20 69  |er to the name i|
0006d1c0  73 20 72 65 74 75 72 6e  65 64 20 69 6e 20 52 31  |s returned in R1|
0006d1d0  2c 20 6f 74 68 65 72 77  69 73 65 20 30 20 69 73  |, otherwise 0 is|
0006d1e0  20 72 65 74 75 72 6e 65  64 2e 0a 0a 4e 6f 74 65  | returned...Note|
0006d1f0  3a 20 54 68 65 20 27 73  6f 6e 67 20 6f 72 69 67  |: The 'song orig|
0006d200  69 6e 27 20 76 61 6c 75  65 20 28 52 32 29 2c 20  |in' value (R2), |
0006d210  63 6f 72 72 65 73 70 6f  6e 64 73 20 74 6f 20 74  |corresponds to t|
0006d220  68 65 20 6f 72 69 67 69  6e 61 6c 20 73 6f 6e 67  |he original song|
0006d230  20 74 79 70 65 2c 20 4e  4f 54 20 74 68 65 20 66  | type, NOT the f|
0006d240  6f 72 6d 61 74 20 6f 66  20 74 68 65 20 73 6f 6e  |ormat of the son|
0006d250  67 20 69 6e 20 6d 65 6d  6f 72 79 2e 20 41 66 74  |g in memory. Aft|
0006d260  65 72 20 6c 6f 61 64 69  6e 67 2c 20 51 54 4d 20  |er loading, QTM |
0006d270  63 6f 6e 76 65 72 74 73  20 61 6c 6c 20 73 6f 6e  |converts all son|
0006d280  67 73 20 74 6f 20 74 68  65 20 33 31 20 69 6e 73  |gs to the 31 ins|
0006d290  74 2e 20 50 72 6f 54 72  61 63 6b 65 72 20 66 6f  |t. ProTracker fo|
0006d2a0  72 6d 61 74 2e 20 46 75  74 75 72 65 20 76 65 72  |rmat. Future ver|
0006d2b0  73 69 6f 6e 73 20 6f 66  20 51 54 4d 2c 20 68 6f  |sions of QTM, ho|
0006d2c0  77 65 76 65 72 2c 20 6d  61 79 20 73 75 70 70 6f  |wever, may suppo|
0006d2d0  72 74 20 64 69 66 66 65  72 65 6e 74 20 73 6f 6e  |rt different son|
0006d2e0  67 20 74 79 70 65 73 20  69 6e 20 6d 65 6d 6f 72  |g types in memor|
0006d2f0  79 2e 20 54 6f 20 61 76  6f 69 64 20 70 72 6f 62  |y. To avoid prob|
0006d300  6c 65 6d 73 20 77 69 74  68 20 6e 65 77 20 74 79  |lems with new ty|
0006d310  70 65 73 20 62 65 69 6e  67 20 73 75 70 70 6f 72  |pes being suppor|
0006d320  74 65 64 2c 20 69 74 20  63 61 6e 20 62 65 20 61  |ted, it can be a|
0006d330  73 73 75 6d 65 64 20 74  68 61 74 20 61 6e 79 20  |ssumed that any |
0006d340  73 6f 6e 67 20 72 65 74  75 72 6e 69 6e 67 20 61  |song returning a|
0006d350  20 76 61 6c 75 65 20 69  6e 20 52 32 20 5c 3c 20  | value in R2 \< |
0006d360  26 31 30 20 28 31 36 29  2c 20 77 69 6c 6c 20 62  |&10 (16), will b|
0006d370  65 20 73 74 6f 72 65 64  20 69 6e 20 6d 65 6d 6f  |e stored in memo|
0006d380  72 79 20 61 73 20 61 20  34 20 63 68 61 6e 6e 65  |ry as a 4 channe|
0006d390  6c 2c 20 33 31 20 69 6e  73 74 2e 20 50 72 6f 54  |l, 31 inst. ProT|
0006d3a0  72 61 63 6b 65 72 20 66  6f 72 6d 61 74 20 73 6f  |racker format so|
0006d3b0  6e 67 2e 20 53 6f 6e 67  20 65 64 69 74 6f 72 73  |ng. Song editors|
0006d3c0  20 61 6e 64 20 64 69 73  70 6c 61 79 20 70 72 6f  | and display pro|
0006d3d0  67 72 61 6d 73 20 73 68  6f 75 6c 64 20 63 68 65  |grams should che|
0006d3e0  63 6b 20 74 68 69 73 20  76 61 6c 75 65 2c 20 74  |ck this value, t|
0006d3f0  6f 20 65 6e 73 75 72 65  20 74 68 61 74 20 74 68  |o ensure that th|
0006d400  65 20 6c 6f 61 64 65 64  20 73 6f 6e 67 20 69 73  |e loaded song is|
0006d410  20 69 6e 20 74 68 65 20  65 78 70 65 63 74 65 64  | in the expected|
0006d420  20 66 6f 72 6d 61 74 20  66 6f 72 20 74 68 65 20  | format for the |
0006d430  70 72 6f 67 72 61 6d 2e  0a 0a 56 20 66 6c 61 67  |program...V flag|
0006d440  20 73 65 74 20 69 66 20  6e 6f 20 73 6f 6e 67 20  | set if no song |
0006d450  69 73 20 6c 6f 61 64 65  64 0a 23 53 75 62 70 61  |is loaded.#Subpa|
0006d460  67 65 20 6f 72 69 67 69  6e 73 0a 51 54 4d 20 53  |ge origins.QTM S|
0006d470  6f 6e 67 20 6f 72 69 67  69 6e 73 0a 76 61 6c 75  |ong origins.valu|
0006d480  65 09 6f 72 69 67 69 6e  0a 23 4c 69 6e 65 0a 30  |e.origin.#Line.0|
0006d490  09 31 35 20 69 6e 73 74  2e 20 53 6f 75 6e 64 20  |.15 inst. Sound |
0006d4a0  54 72 61 63 6b 65 72 0a  31 09 33 31 20 69 6e 73  |Tracker.1.31 ins|
0006d4b0  74 2e 20 53 6f 75 6e 64  20 54 72 61 63 6b 65 72  |t. Sound Tracker|
0006d4c0  0a 32 09 33 31 20 69 6e  73 74 2e 20 50 72 6f 54  |.2.31 inst. ProT|
0006d4d0  72 61 63 6b 65 72 0a 33  09 33 31 20 69 6e 73 74  |racker.3.31 inst|
0006d4e0  2e 20 53 74 61 72 74 72  65 6b 6b 65 72 0a 00 00  |. Startrekker...|
0006d4f0  44 41 54 41 98 01 00 00  51 54 4d 5f 50 6f 73 20  |DATA....QTM_Pos |
0006d500  20 28 26 34 37 45 34 36  29 0a 23 50 61 72 65 6e  | (&47E46).#Paren|
0006d510  74 20 51 54 4d 5f 0a 3d  3e 09 52 30 20 3d 09 6e  |t QTM_.=>.R0 =.n|
0006d520  65 77 20 73 65 71 75 65  6e 63 65 20 70 6f 73 69  |ew sequence posi|
0006d530  74 69 6f 6e 20 28 30 2d  31 32 37 29 2c 20 2d 31  |tion (0-127), -1|
0006d540  20 74 6f 20 72 65 61 64  20 63 75 72 72 65 6e 74  | to read current|
0006d550  20 70 6f 73 69 74 69 6f  6e 0a 09 52 31 20 3d 09  | position..R1 =.|
0006d560  6e 65 77 20 65 76 65 6e  74 20 70 6f 73 69 74 69  |new event positi|
0006d570  6f 6e 20 28 30 2d 36 33  29 2c 20 2d 31 20 74 6f  |on (0-63), -1 to|
0006d580  20 72 65 61 64 0a 0a 3c  3d 09 52 30 20 3d 09 70  | read..<=.R0 =.p|
0006d590  72 65 76 69 6f 75 73 20  73 65 71 75 65 6e 63 65  |revious sequence|
0006d5a0  20 70 6f 73 69 74 69 6f  6e 20 28 30 2d 31 32 37  | position (0-127|
0006d5b0  29 0a 09 52 31 20 3d 09  70 72 65 76 69 6f 75 73  |)..R1 =.previous|
0006d5c0  20 65 76 65 6e 74 20 70  6f 73 69 74 69 6f 6e 20  | event position |
0006d5d0  28 30 2d 36 33 29 0a 0a  54 68 69 73 20 53 57 49  |(0-63)..This SWI|
0006d5e0  20 63 61 6e 20 62 65 20  75 73 65 64 20 74 6f 20  | can be used to |
0006d5f0  72 65 61 64 20 6f 72 20  61 6c 74 65 72 20 74 68  |read or alter th|
0006d600  65 20 63 75 72 72 65 6e  74 20 73 65 71 75 65 6e  |e current sequen|
0006d610  63 65 20 6f 72 20 65 76  65 6e 74 20 70 6f 73 69  |ce or event posi|
0006d620  74 69 6f 6e 20 69 6e 20  74 68 65 20 63 75 72 72  |tion in the curr|
0006d630  65 6e 74 20 73 6f 6e 67  2e 0a 0a 56 20 66 6c 61  |ent song...V fla|
0006d640  67 20 73 65 74 20 69 66  20 6e 6f 20 73 6f 6e 67  |g set if no song|
0006d650  20 69 73 20 6c 6f 61 64  65 64 20 6f 72 20 74 68  | is loaded or th|
0006d660  65 20 70 6f 73 69 74 69  6f 6e 2f 65 76 65 6e 74  |e position/event|
0006d670  20 6e 75 6d 62 65 72 20  69 73 20 6f 75 74 20 6f  | number is out o|
0006d680  66 20 72 61 6e 67 65 0a  44 41 54 41 dc 03 00 00  |f range.DATA....|
0006d690  51 54 4d 5f 45 66 66 65  63 74 43 6f 6e 74 72 6f  |QTM_EffectContro|
0006d6a0  6c 20 20 28 26 34 37 45  34 37 29 0a 23 50 61 72  |l  (&47E47).#Par|
0006d6b0  65 6e 74 20 51 54 4d 5f  0a 3d 3e 09 52 30 20 3d  |ent QTM_.=>.R0 =|
0006d6c0  09 3c 65 66 66 65 63 74  20 6e 75 6d 62 65 72 3d  |.<effect number=|
0006d6d0  3e 51 54 4d 5f 65 66 66  65 63 74 73 3e 20 28 26  |>QTM_effects> (&|
0006d6e0  30 2d 26 46 2c 26 45 30  2d 26 45 46 20 66 6f 72  |0-&F,&E0-&EF for|
0006d6f0  20 3c 27 45 27 20 65 66  66 65 63 74 73 3d 3e 51  | <'E' effects=>Q|
0006d700  54 4d 5f 65 2d 65 66 66  65 63 74 73 3e 29 20 6f  |TM_e-effects>) o|
0006d710  72 20 2d 31 20 74 6f 20  72 65 61 64 20 63 75 72  |r -1 to read cur|
0006d720  72 65 6e 74 20 73 74 61  74 65 0a 09 52 31 20 3d  |rent state..R1 =|
0006d730  09 6e 65 77 20 73 74 61  74 65 20 6f 66 20 65 66  |.new state of ef|
0006d740  66 65 63 74 20 28 30 2d  6f 66 66 2f 31 2d 6f 6e  |fect (0-off/1-on|
0006d750  29 0a 0a 3c 3d 09 52 30  20 3d 09 70 72 65 76 69  |)..<=.R0 =.previ|
0006d760  6f 75 73 20 65 66 66 65  63 74 20 73 74 61 74 65  |ous effect state|
0006d770  20 77 6f 72 64 20 28 26  30 2d 26 46 29 20 31 20  | word (&0-&F) 1 |
0006d780  62 69 74 20 70 65 72 20  65 66 66 65 63 74 2c 20  |bit per effect, |
0006d790  31 36 20 62 69 74 73 0a  09 52 31 20 3d 09 70 72  |16 bits..R1 =.pr|
0006d7a0  65 76 69 6f 75 73 20 65  66 66 65 63 74 20 73 74  |evious effect st|
0006d7b0  61 74 65 20 77 6f 72 64  20 28 26 45 30 2d 26 45  |ate word (&E0-&E|
0006d7c0  46 29 20 61 73 20 61 62  6f 76 65 0a 0a 54 68 69  |F) as above..Thi|
0006d7d0  73 20 53 57 49 20 63 61  6e 20 62 65 20 75 73 65  |s SWI can be use|
0006d7e0  64 20 74 6f 20 63 68 61  6e 67 65 20 74 68 65 20  |d to change the |
0006d7f0  73 74 61 74 65 20 6f 66  20 61 6e 79 20 65 66 66  |state of any eff|
0006d800  65 63 74 20 28 61 73 20  73 65 65 6e 20 62 79 20  |ect (as seen by |
0006d810  74 68 65 20 51 54 4d 20  65 66 66 65 63 74 20 68  |the QTM effect h|
0006d820  61 6e 64 6c 65 72 73 29  2e 20 44 69 73 61 62 6c  |andlers). Disabl|
0006d830  69 6e 67 20 61 6e 20 65  66 66 65 63 74 20 77 69  |ing an effect wi|
0006d840  6c 6c 20 73 74 6f 70 20  51 54 4d 20 74 61 6b 69  |ll stop QTM taki|
0006d850  6e 67 20 61 6e 79 20 61  63 74 69 6f 6e 20 6f 76  |ng any action ov|
0006d860  65 72 20 69 74 2e 20 46  6f 72 20 65 78 61 6d 70  |er it. For examp|
0006d870  6c 65 2c 20 64 69 73 61  62 6c 69 6e 67 20 65 66  |le, disabling ef|
0006d880  66 65 63 74 20 26 46 20  77 69 6c 6c 20 6e 6f 74  |fect &F will not|
0006d890  20 61 6c 6c 6f 77 20 73  70 65 65 64 2f 74 65 6d  | allow speed/tem|
0006d8a0  70 6f 20 63 68 61 6e 67  65 73 20 74 6f 20 74 61  |po changes to ta|
0006d8b0  6b 65 20 70 6c 61 63 65  2c 20 61 6e 64 20 74 68  |ke place, and th|
0006d8c0  65 20 73 6f 6e 67 20 6d  61 79 20 73 6f 75 6e 64  |e song may sound|
0006d8d0  20 74 6f 6f 20 66 61 73  74 20 6f 72 20 73 6c 6f  | too fast or slo|
0006d8e0  77 2e 0a 0a 4f 6e 63 65  20 72 65 2d 65 6e 61 62  |w...Once re-enab|
0006d8f0  6c 65 64 2c 20 74 68 65  20 65 66 66 65 63 74 28  |led, the effect(|
0006d900  73 29 20 77 69 6c 6c 20  62 65 20 72 75 6e 20 61  |s) will be run a|
0006d910  73 20 75 73 75 61 6c 20  61 67 61 69 6e 2e 0a 0a  |s usual again...|
0006d920  54 68 65 20 63 6f 6e 74  65 6e 74 73 20 6f 66 20  |The contents of |
0006d930  52 30 20 61 6e 64 20 52  31 20 6f 6e 20 65 78 69  |R0 and R1 on exi|
0006d940  74 20 61 72 65 20 61 20  63 6f 70 79 20 6f 66 20  |t are a copy of |
0006d950  74 68 65 20 65 66 66 65  63 74 20 77 6f 72 64 73  |the effect words|
0006d960  20 75 73 65 64 20 62 79  20 51 54 4d 20 2d 20 65  | used by QTM - e|
0006d970  61 63 68 20 68 61 73 20  31 36 20 62 69 74 73 20  |ach has 16 bits |
0006d980  75 73 65 64 2c 20 77 69  74 68 20 65 61 63 68 20  |used, with each |
0006d990  62 69 74 20 72 65 70 72  65 73 65 6e 74 69 6e 67  |bit representing|
0006d9a0  20 74 68 65 20 73 74 61  74 65 20 6f 66 20 74 68  | the state of th|
0006d9b0  61 74 20 65 66 66 65 63  74 20 30 2d 6f 66 66 2c  |at effect 0-off,|
0006d9c0  20 31 2d 6f 6e 2e 20 52  30 20 63 6f 6e 74 61 69  | 1-on. R0 contai|
0006d9d0  6e 73 20 74 68 65 20 66  6c 61 67 73 20 66 6f 72  |ns the flags for|
0006d9e0  20 74 68 65 20 6e 6f 72  6d 61 6c 20 65 66 66 65  | the normal effe|
0006d9f0  63 74 73 20 28 26 30 2d  26 46 29 2c 20 52 31 20  |cts (&0-&F), R1 |
0006da00  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 66 6c 61  |contains the fla|
0006da10  67 73 20 66 6f 72 20 74  68 65 20 27 45 27 20 65  |gs for the 'E' e|
0006da20  66 66 65 63 74 73 20 28  26 45 30 2d 26 45 46 29  |ffects (&E0-&EF)|
0006da30  2e 0a 0a 56 20 66 6c 61  67 20 73 65 74 20 69 66  |...V flag set if|
0006da40  20 74 68 65 20 65 66 66  65 63 74 20 6e 75 6d 62  | the effect numb|
0006da50  65 72 20 77 61 73 20 6f  75 74 20 6f 66 20 72 61  |er was out of ra|
0006da60  6e 67 65 0a 44 41 54 41  7d 01 00 00 51 54 4d 5f  |nge.DATA}...QTM_|
0006da70  56 6f 6c 75 6d 65 20 20  28 26 34 37 45 34 38 29  |Volume  (&47E48)|
0006da80  0a 23 50 61 72 65 6e 74  20 51 54 4d 5f 0a 3d 3e  |.#Parent QTM_.=>|
0006da90  09 52 30 20 3d 09 6e 65  77 20 6f 76 65 72 61 6c  |.R0 =.new overal|
0006daa0  6c 20 76 6f 6c 75 6d 65  20 28 30 2d 36 34 29 20  |l volume (0-64) |
0006dab0  6f 72 20 2d 31 20 74 6f  20 72 65 61 64 20 63 75  |or -1 to read cu|
0006dac0  72 72 65 6e 74 20 76 6f  6c 75 6d 65 0a 3c 3d 09  |rrent volume.<=.|
0006dad0  52 30 20 3d 09 70 72 65  76 69 6f 75 73 20 76 6f  |R0 =.previous vo|
0006dae0  6c 75 6d 65 20 28 30 2d  36 34 29 0a 0a 54 68 69  |lume (0-64)..Thi|
0006daf0  73 20 53 57 49 20 61 6c  6c 6f 77 73 20 79 6f 75  |s SWI allows you|
0006db00  20 73 65 74 20 74 68 65  20 6f 76 65 72 61 6c 6c  | set the overall|
0006db10  20 6f 75 74 70 75 74 20  76 6f 6c 75 6d 65 20 66  | output volume f|
0006db20  72 6f 6d 20 74 68 65 20  51 54 4d 20 73 6f 75 6e  |rom the QTM soun|
0006db30  64 20 68 61 6e 64 6c 65  72 73 2e 20 54 68 65 20  |d handlers. The |
0006db40  76 6f 6c 75 6d 65 20 69  73 20 69 6e 20 61 20 6c  |volume is in a l|
0006db50  69 6e 65 61 72 20 66 6f  72 6d 20 28 30 2d 36 34  |inear form (0-64|
0006db60  29 2c 20 61 73 20 75 73  65 64 20 66 6f 72 20 76  |), as used for v|
0006db70  6f 6c 75 6d 65 73 20 69  6e 20 50 72 6f 54 72 61  |olumes in ProTra|
0006db80  63 6b 65 72 20 73 6f 6e  67 73 2e 20 47 72 61 64  |cker songs. Grad|
0006db90  75 61 6c 20 66 61 64 65  73 20 63 61 6e 20 62 65  |ual fades can be|
0006dba0  20 67 65 6e 65 72 61 74  65 64 20 75 73 69 6e 67  | generated using|
0006dbb0  20 74 68 69 73 20 53 57  49 2e 0a 0a 56 20 66 6c  | this SWI...V fl|
0006dbc0  61 67 20 73 65 74 20 69  66 20 76 6f 6c 75 6d 65  |ag set if volume|
0006dbd0  20 69 73 20 6f 75 74 20  6f 66 20 72 61 6e 67 65  | is out of range|
0006dbe0  0a 00 00 00 44 41 54 41  05 02 00 00 51 54 4d 5f  |....DATA....QTM_|
0006dbf0  53 65 74 53 61 6d 70 6c  65 53 70 65 65 64 20 20  |SetSampleSpeed  |
0006dc00  28 26 34 37 45 34 39 29  0a 23 50 61 72 65 6e 74  |(&47E49).#Parent|
0006dc10  20 51 54 4d 5f 0a 3d 3e  09 52 30 20 3d 09 6e 65  | QTM_.=>.R0 =.ne|
0006dc20  77 20 73 61 6d 70 6c 65  20 73 70 65 65 64 20 28  |w sample speed (|
0006dc30  31 36 2d 39 36 b5 53 29  20 6f 72 20 2d 31 20 74  |16-96.S) or -1 t|
0006dc40  6f 20 72 65 61 64 20 63  75 72 72 65 6e 74 20 73  |o read current s|
0006dc50  70 65 65 64 0a 3c 3d 09  52 30 20 3d 09 70 72 65  |peed.<=.R0 =.pre|
0006dc60  76 69 6f 75 73 20 73 61  6d 70 6c 65 20 73 70 65  |vious sample spe|
0006dc70  65 64 20 28 31 36 2d 39  36 b5 53 29 0a 0a 54 68  |ed (16-96.S)..Th|
0006dc80  69 73 20 53 57 49 20 6c  65 74 73 20 79 6f 75 20  |is SWI lets you |
0006dc90  73 65 74 20 74 68 65 20  74 69 6d 65 20 62 65 74  |set the time bet|
0006dca0  77 65 65 6e 20 73 61 6d  70 6c 65 20 6f 75 74 70  |ween sample outp|
0006dcb0  75 74 73 20 28 69 65 2e  20 73 61 6d 70 6c 65 20  |uts (ie. sample |
0006dcc0  71 75 61 6c 69 74 79 29  20 74 6f 20 61 20 76 61  |quality) to a va|
0006dcd0  6c 75 65 20 62 65 74 77  65 65 6e 20 31 36 b5 53  |lue between 16.S|
0006dce0  20 61 6e 64 20 39 36 b5  53 2e 20 53 6d 61 6c 6c  | and 96.S. Small|
0006dcf0  65 72 20 73 70 65 65 64  20 76 61 6c 75 65 73 20  |er speed values |
0006dd00  67 69 76 65 20 62 65 74  74 65 72 20 73 61 6d 70  |give better samp|
0006dd10  6c 65 20 71 75 61 6c 69  74 79 2c 20 62 75 74 20  |le quality, but |
0006dd20  61 6c 73 6f 20 75 73 65  20 6d 6f 72 65 20 70 72  |also use more pr|
0006dd30  6f 63 65 73 73 6f 72 20  74 69 6d 65 2c 20 73 6c  |ocessor time, sl|
0006dd40  6f 77 69 6e 67 20 74 68  65 20 63 6f 6d 70 75 74  |owing the comput|
0006dd50  65 72 20 64 6f 77 6e 20  6d 6f 72 65 2e 20 54 68  |er down more. Th|
0006dd60  65 20 64 65 66 61 75 6c  74 20 73 70 65 65 64 20  |e default speed |
0006dd70  69 73 20 33 32 b5 53 2e  0a 0a 4e 6f 74 65 3a 20  |is 32.S...Note: |
0006dd80  49 66 20 38 20 63 68 61  6e 6e 65 6c 73 20 61 72  |If 8 channels ar|
0006dd90  65 20 65 6e 61 62 6c 65  64 2c 20 74 68 65 20 6d  |e enabled, the m|
0006dda0  69 6e 69 6d 75 6d 20 73  61 6d 70 6c 65 20 73 70  |inimum sample sp|
0006ddb0  65 65 64 20 69 73 20 32  34 b5 53 2e 0a 0a 56 20  |eed is 24.S...V |
0006ddc0  66 6c 61 67 20 73 65 74  20 69 66 20 73 61 6d 70  |flag set if samp|
0006ddd0  6c 65 20 73 70 65 65 64  20 69 73 20 6f 75 74 20  |le speed is out |
0006dde0  6f 66 20 72 61 6e 67 65  0a 00 00 00 44 41 54 41  |of range....DATA|
0006ddf0  48 02 00 00 51 54 4d 5f  44 4d 41 42 75 66 66 65  |H...QTM_DMABuffe|
0006de00  72 20 20 28 26 34 37 45  34 41 29 0a 23 50 61 72  |r  (&47E4A).#Par|
0006de10  65 6e 74 20 51 54 4d 5f  0a 3c 3d 09 52 30 20 3d  |ent QTM_.<=.R0 =|
0006de20  09 61 64 64 72 65 73 73  20 6f 66 20 6c 61 73 74  |.address of last|
0006de30  20 75 73 65 64 20 44 4d  41 20 73 6f 75 6e 64 20  | used DMA sound |
0006de40  62 75 66 66 65 72 2e 0a  0a 42 79 20 75 73 69 6e  |buffer...By usin|
0006de50  67 20 74 68 69 73 20 53  57 49 2c 20 69 74 20 77  |g this SWI, it w|
0006de60  6f 75 6c 64 20 62 65 20  70 6f 73 73 69 62 6c 65  |ould be possible|
0006de70  20 74 6f 20 69 6d 70 6c  65 6d 65 6e 74 20 73 6f  | to implement so|
0006de80  75 6e 64 20 6f 75 74 70  75 74 20 6f 73 63 69 6c  |und output oscil|
0006de90  6c 6f 73 63 6f 70 65 73  2c 20 6f 72 20 76 6f 6c  |loscopes, or vol|
0006dea0  75 6d 65 20 61 63 74 69  76 61 74 65 64 20 28 72  |ume activated (r|
0006deb0  65 61 6c 29 20 56 55 20  62 61 72 73 2e 20 54 68  |eal) VU bars. Th|
0006dec0  65 20 64 61 74 61 20 69  6e 20 74 68 65 20 44 4d  |e data in the DM|
0006ded0  41 20 62 75 66 66 65 72  20 69 73 20 73 74 6f 72  |A buffer is stor|
0006dee0  65 64 20 61 73 3a 20 5b  63 31 5d 2c 5b 63 32 5d  |ed as: [c1],[c2]|
0006def0  2c 5b 63 33 5d 2c 5b 63  30 5d 2c 5b 63 31 5d 2c  |,[c3],[c0],[c1],|
0006df00  5b 63 32 5d 2e 2e 2e 65  74 63 2c 20 31 20 62 79  |[c2]...etc, 1 by|
0006df10  74 65 20 66 6f 72 20 65  61 63 68 20 63 68 61 6e  |te for each chan|
0006df20  6e 65 6c 2e 20 54 68 65  20 44 4d 41 20 62 75 66  |nel. The DMA buf|
0006df30  66 65 72 20 73 69 7a 65  20 75 73 65 64 20 62 79  |fer size used by|
0006df40  20 51 54 4d 20 69 73 20  32 30 38 2a 5c 3c 6e 6f  | QTM is 208*\<no|
0006df50  2e 20 6f 66 20 63 68 61  6e 6e 65 6c 73 3e 20 6c  |. of channels> l|
0006df60  6f 6e 67 2e 0a 0a 54 68  65 20 61 64 64 72 65 73  |ong...The addres|
0006df70  73 20 72 65 74 75 72 6e  65 64 20 69 6e 20 52 30  |s returned in R0|
0006df80  20 77 69 6c 6c 20 6f 6e  6c 79 20 62 65 20 61 63  | will only be ac|
0006df90  63 75 72 61 74 65 20 69  66 20 74 68 65 20 51 54  |curate if the QT|
0006dfa0  4d 20 73 6f 75 6e 64 20  73 79 73 74 65 6d 20 69  |M sound system i|
0006dfb0  73 20 63 75 72 72 65 6e  74 6c 79 20 61 63 74 69  |s currently acti|
0006dfc0  76 65 2e 20 54 6f 20 63  68 65 63 6b 20 77 68 65  |ve. To check whe|
0006dfd0  74 68 65 72 20 74 68 69  73 20 69 73 20 74 68 65  |ther this is the|
0006dfe0  20 63 61 73 65 2c 20 75  73 65 20 3c 51 54 4d 5f  | case, use <QTM_|
0006dff0  53 6f 75 6e 64 43 6f 6e  74 72 6f 6c 3e 2c 20 74  |SoundControl>, t|
0006e000  6f 20 72 65 61 64 20 74  68 65 20 73 6f 75 6e 64  |o read the sound|
0006e010  20 73 79 73 74 65 6d 20  73 74 61 74 65 20 28 6e  | system state (n|
0006e020  75 6d 62 65 72 20 6f 66  20 63 68 61 6e 6e 65 6c  |umber of channel|
0006e030  73 29 2e 0a 44 41 54 41  e0 03 00 00 51 54 4d 5f  |s)..DATA....QTM_|
0006e040  52 65 6d 6f 76 65 43 68  61 6e 6e 65 6c 20 20 28  |RemoveChannel  (|
0006e050  26 34 37 45 34 42 29 0a  23 50 61 72 65 6e 74 20  |&47E4B).#Parent |
0006e060  51 54 4d 5f 0a 3d 3e 09  52 30 20 3d 09 63 68 61  |QTM_.=>.R0 =.cha|
0006e070  6e 6e 65 6c 20 6e 75 6d  62 65 72 20 74 6f 20 72  |nnel number to r|
0006e080  65 6d 6f 76 65 20 66 72  6f 6d 20 73 6f 6e 67 20  |emove from song |
0006e090  70 6c 61 79 65 72 20 28  31 2d 38 29 0a 0a 3c 3d  |player (1-8)..<=|
0006e0a0  09 52 30 20 3d 09 70 72  65 76 69 6f 75 73 20 73  |.R0 =.previous s|
0006e0b0  74 61 74 65 20 6f 66 20  74 68 61 74 20 63 68 61  |tate of that cha|
0006e0c0  6e 6e 65 6c 3a 09 30 20  3d 20 61 6c 72 65 61 64  |nnel:.0 = alread|
0006e0d0  79 20 72 65 6d 6f 76 65  64 0a 09 20 09 20 09 09  |y removed.. . ..|
0006e0e0  09 09 31 20 3d 20 51 54  4d 20 63 68 61 6e 6e 65  |..1 = QTM channe|
0006e0f0  6c 0a 0a 54 68 69 73 20  53 57 49 20 68 61 73 20  |l..This SWI has |
0006e100  74 68 65 20 65 66 66 65  63 74 20 6f 66 20 27 72  |the effect of 'r|
0006e110  65 6d 6f 76 69 6e 67 27  20 74 68 65 20 67 69 76  |emoving' the giv|
0006e120  65 6e 20 63 68 61 6e 6e  65 6c 20 66 72 6f 6d 20  |en channel from |
0006e130  74 68 65 20 51 54 4d 20  70 6c 61 79 65 72 20 72  |the QTM player r|
0006e140  6f 75 74 69 6e 65 2e 20  54 68 69 73 20 6d 65 61  |outine. This mea|
0006e150  6e 73 20 6e 6f 20 73 61  6d 70 6c 65 73 20 66 72  |ns no samples fr|
0006e160  6f 6d 20 74 68 65 20 73  6f 6e 67 20 77 69 6c 6c  |om the song will|
0006e170  20 62 65 20 70 6c 61 79  65 64 20 74 68 72 6f 75  | be played throu|
0006e180  67 68 20 74 68 69 73 20  63 68 61 6e 6e 65 6c 2c  |gh this channel,|
0006e190  20 61 6c 74 68 6f 75 67  68 20 69 74 20 69 73 20  | although it is |
0006e1a0  73 74 69 6c 6c 20 70 6f  73 73 69 62 6c 65 20 74  |still possible t|
0006e1b0  6f 20 70 6c 61 79 20 73  61 6d 70 6c 65 73 20 64  |o play samples d|
0006e1c0  69 72 65 63 74 6c 79 2c  20 75 73 69 6e 67 20 74  |irectly, using t|
0006e1d0  68 65 20 50 6c 61 79 53  61 6d 70 6c 65 20 53 57  |he PlaySample SW|
0006e1e0  49 73 2c 20 6f 72 20 74  68 72 6f 75 67 68 20 74  |Is, or through t|
0006e1f0  68 65 20 54 72 61 6e 73  70 61 72 65 6e 74 20 73  |he Transparent s|
0006e200  6f 75 6e 64 20 73 79 73  74 65 6d 20 28 69 66 20  |ound system (if |
0006e210  61 63 74 69 76 65 29 2e  0a 0a 57 68 69 6c 65 20  |active)...While |
0006e220  74 68 65 20 63 68 61 6e  6e 65 6c 20 69 73 20 27  |the channel is '|
0006e230  72 65 6d 6f 76 65 64 27  2c 20 74 68 65 20 70 6c  |removed', the pl|
0006e240  61 79 65 72 20 77 69 6c  6c 20 63 6f 6e 74 69 6e  |ayer will contin|
0006e250  75 65 20 74 6f 20 6b 65  65 70 20 75 70 20 74 6f  |ue to keep up to|
0006e260  20 64 61 74 65 20 74 68  65 20 65 66 66 65 63 74  | date the effect|
0006e270  73 20 61 6e 64 20 73 61  6d 70 6c 65 20 69 6e 66  |s and sample inf|
0006e280  6f 72 6d 61 74 69 6f 6e  2c 20 73 6f 20 74 68 61  |ormation, so tha|
0006e290  74 20 77 68 65 6e 20 74  68 65 20 63 68 61 6e 6e  |t when the chann|
0006e2a0  65 6c 20 69 73 20 72 65  73 74 6f 72 65 64 2c 20  |el is restored, |
0006e2b0  74 68 65 20 73 6f 6e 67  20 77 69 6c 6c 20 63 6f  |the song will co|
0006e2c0  6e 74 69 6e 75 65 20 61  73 20 69 66 20 6e 6f 74  |ntinue as if not|
0006e2d0  68 69 6e 67 20 68 61 64  20 68 61 70 70 65 6e 65  |hing had happene|
0006e2e0  64 2e 0a 0a 4e 6f 74 65  3a 20 51 54 4d 20 76 31  |d...Note: QTM v1|
0006e2f0  2e 32 32 20 64 6f 65 73  20 6e 6f 74 20 75 73 65  |.22 does not use|
0006e300  20 63 68 61 6e 6e 65 6c  73 20 35 2d 38 20 66 6f  | channels 5-8 fo|
0006e310  72 20 73 6f 6e 67 20 70  6c 61 79 69 6e 67 2c 20  |r song playing, |
0006e320  73 6f 20 61 6c 74 68 6f  75 67 68 20 74 68 65 79  |so although they|
0006e330  20 63 61 6e 20 62 65 20  27 72 65 6d 6f 76 65 64  | can be 'removed|
0006e340  27 2c 20 74 68 69 73 20  77 69 6c 6c 20 6d 61 6b  |', this will mak|
0006e350  65 20 6e 6f 20 6e 6f 74  69 63 65 61 62 6c 65 20  |e no noticeable |
0006e360  64 69 66 66 65 72 65 6e  63 65 20 61 73 20 74 68  |difference as th|
0006e370  65 79 20 63 61 6e 20 6f  6e 6c 79 20 62 65 20 75  |ey can only be u|
0006e380  73 65 64 20 66 6f 72 20  73 61 6d 70 6c 65 20 70  |sed for sample p|
0006e390  6c 61 79 69 6e 67 20 61  6e 79 77 61 79 21 0a 0a  |laying anyway!..|
0006e3a0  56 20 66 6c 61 67 20 73  65 74 20 69 66 20 63 68  |V flag set if ch|
0006e3b0  61 6e 6e 65 6c 20 6e 75  6d 62 65 72 20 69 73 20  |annel number is |
0006e3c0  6f 75 74 20 6f 66 20 72  61 6e 67 65 0a 49 6e 74  |out of range.Int|
0006e3d0  65 72 72 75 70 74 73 3a  20 49 52 51 20 69 6e 74  |errupts: IRQ int|
0006e3e0  65 72 72 75 70 74 73 20  64 69 73 61 62 6c 65 64  |errupts disabled|
0006e3f0  20 77 68 69 6c 65 20 51  54 4d 20 73 6f 75 6e 64  | while QTM sound|
0006e400  20 66 6c 61 67 73 20 61  72 65 20 61 6c 74 65 72  | flags are alter|
0006e410  65 64 2e 0a 44 41 54 41  4a 01 00 00 51 54 4d 5f  |ed..DATAJ...QTM_|
0006e420  52 65 73 74 6f 72 65 43  68 61 6e 6e 65 6c 20 20  |RestoreChannel  |
0006e430  28 26 34 37 45 34 43 29  0a 23 50 61 72 65 6e 74  |(&47E4C).#Parent|
0006e440  20 51 54 4d 5f 0a 23 57  72 61 70 20 6f 66 66 0a  | QTM_.#Wrap off.|
0006e450  3d 3e 09 52 30 20 3d 09  63 68 61 6e 6e 65 6c 20  |=>.R0 =.channel |
0006e460  6e 75 6d 62 65 72 20 74  6f 20 72 65 73 74 6f 72  |number to restor|
0006e470  65 20 28 31 2d 38 29 0a  3c 3d 09 52 30 20 3d 09  |e (1-8).<=.R0 =.|
0006e480  70 72 65 76 69 6f 75 73  20 73 74 61 74 65 20 6f  |previous state o|
0006e490  66 20 74 68 61 74 20 63  68 61 6e 6e 65 6c 3a 09  |f that channel:.|
0006e4a0  30 20 3d 20 70 72 65 76  69 6f 75 73 6c 79 20 72  |0 = previously r|
0006e4b0  65 6d 6f 76 65 64 0a 09  20 09 20 09 09 09 09 31  |emoved.. . ....1|
0006e4c0  20 3d 20 61 6c 72 65 61  64 79 20 61 20 51 54 4d  | = already a QTM|
0006e4d0  20 63 68 61 6e 6e 65 6c  0a 23 57 72 61 70 0a 0a  | channel.#Wrap..|
0006e4e0  54 68 69 73 20 53 57 49  20 69 73 20 75 73 65 64  |This SWI is used|
0006e4f0  20 74 6f 20 72 65 73 74  6f 72 65 20 63 68 61 6e  | to restore chan|
0006e500  6e 65 6c 73 20 70 72 65  76 69 6f 75 73 6c 79 20  |nels previously |
0006e510  72 65 6d 6f 76 65 64 20  62 79 20 3c 51 54 4d 5f  |removed by <QTM_|
0006e520  52 65 6d 6f 76 65 43 68  61 6e 6e 65 6c 3e 2e 0a  |RemoveChannel>..|
0006e530  0a 56 20 66 6c 61 67 20  73 65 74 20 69 66 20 63  |.V flag set if c|
0006e540  68 61 6e 6e 65 6c 20 6e  75 6d 62 65 72 20 69 73  |hannel number is|
0006e550  20 6f 75 74 20 6f 66 20  72 61 6e 67 65 0a 00 00  | out of range...|
0006e560  44 41 54 41 1c 04 00 00  51 54 4d 5f 53 74 65 72  |DATA....QTM_Ster|
0006e570  65 6f 20 20 28 26 34 37  45 34 44 29 0a 23 50 61  |eo  (&47E4D).#Pa|
0006e580  72 65 6e 74 20 51 54 4d  5f 0a 3d 3e 09 52 30 20  |rent QTM_.=>.R0 |
0006e590  3d 09 3c 63 68 61 6e 6e  65 6c 20 6e 75 6d 62 65  |=.<channel numbe|
0006e5a0  72 3d 3e 2e 75 73 72 63  68 61 6e 6e 65 6c 3e 20  |r=>.usrchannel> |
0006e5b0  74 6f 20 61 6c 74 65 72  0a 09 20 09 6f 72 20 30  |to alter.. .or 0|
0006e5c0  20 66 6f 72 20 3c 70 72  65 2d 70 72 6f 67 72 61  | for <pre-progra|
0006e5d0  6d 6d 65 64 20 73 65 74  74 69 6e 67 73 3d 3e 2e  |mmed settings=>.|
0006e5e0  70 72 67 63 68 61 6e 6e  65 6c 3e 0a 0a 3c 3d 09  |prgchannel>..<=.|
0006e5f0  52 30 20 69 73 20 70 72  65 73 65 72 76 65 64 0a  |R0 is preserved.|
0006e600  09 49 66 20 52 30 20 3d  20 31 2d 38 20 74 68 65  |.If R0 = 1-8 the|
0006e610  6e 20 52 31 20 3d 20 70  72 65 76 69 6f 75 73 20  |n R1 = previous |
0006e620  73 74 65 72 65 6f 20 70  6f 73 69 74 69 6f 6e 0a  |stereo position.|
0006e630  09 49 66 20 52 30 20 3d  20 30 20 74 68 65 6e 20  |.If R0 = 0 then |
0006e640  52 31 20 69 73 20 63 6f  72 72 75 70 74 65 64 0a  |R1 is corrupted.|
0006e650  0a 54 68 69 73 20 53 57  49 20 61 6c 6c 6f 77 73  |.This SWI allows|
0006e660  20 74 68 65 20 73 74 65  72 65 6f 20 70 6f 73 69  | the stereo posi|
0006e670  74 69 6f 6e 73 20 66 6f  72 20 65 61 63 68 20 63  |tions for each c|
0006e680  68 61 6e 6e 65 6c 20 74  6f 20 62 65 20 61 6c 74  |hannel to be alt|
0006e690  65 72 65 64 20 69 6e 64  65 70 65 6e 64 65 6e 74  |ered independent|
0006e6a0  6c 79 2c 20 6f 72 20 61  6c 6c 20 74 6f 67 65 74  |ly, or all toget|
0006e6b0  68 65 72 2e 20 49 66 20  52 30 3d 31 2d 38 20 6f  |her. If R0=1-8 o|
0006e6c0  6e 20 65 6e 74 72 79 2c  20 74 68 65 6e 20 52 31  |n entry, then R1|
0006e6d0  20 6d 75 73 74 20 62 65  20 65 69 74 68 65 72 20  | must be either |
0006e6e0  61 20 76 61 6c 69 64 20  73 74 65 72 65 6f 20 70  |a valid stereo p|
0006e6f0  6f 73 69 74 69 6f 6e 20  28 2d 31 32 37 20 74 6f  |osition (-127 to|
0006e700  20 31 32 37 29 20 6f 72  20 2d 31 32 38 20 74 6f  | 127) or -128 to|
0006e710  20 72 65 61 64 20 74 68  65 20 70 72 65 76 69 6f  | read the previo|
0006e720  75 73 20 70 6f 73 69 74  69 6f 6e 2e 20 49 66 20  |us position. If |
0006e730  52 30 3d 30 20 6f 6e 20  65 6e 74 72 79 2c 20 74  |R0=0 on entry, t|
0006e740  68 65 6e 20 52 31 20 6d  75 73 74 20 62 65 20 69  |hen R1 must be i|
0006e750  6e 20 74 68 65 20 72 61  6e 67 65 20 30 2d 34 20  |n the range 0-4 |
0006e760  74 6f 20 61 6c 74 65 72  20 61 6c 6c 20 74 68 65  |to alter all the|
0006e770  20 63 68 61 6e 6e 65 6c  73 20 74 6f 20 6f 6e 65  | channels to one|
0006e780  20 6f 66 20 74 68 65 73  65 20 70 72 65 2d 70 72  | of these pre-pr|
0006e790  6f 67 72 61 6d 6d 65 64  20 76 61 6c 75 65 73 2e  |ogrammed values.|
0006e7a0  0a 23 53 75 62 70 61 67  65 20 75 73 72 63 68 61  |.#Subpage usrcha|
0006e7b0  6e 6e 65 6c 0a 55 73 65  72 20 63 68 61 6e 6e 65  |nnel.User channe|
0006e7c0  6c 20 73 74 65 72 65 6f  20 73 65 74 74 69 6e 67  |l stereo setting|
0006e7d0  73 0a 52 30 20 3d 09 31  2d 38 0a 52 31 20 3d 09  |s.R0 =.1-8.R1 =.|
0006e7e0  2d 31 32 37 20 28 6c 65  66 74 29 20 74 6f 20 31  |-127 (left) to 1|
0006e7f0  32 37 20 28 72 69 67 68  74 29 0a 09 6f 72 20 2d  |27 (right)..or -|
0006e800  31 32 38 20 74 6f 20 72  65 61 64 20 63 75 72 72  |128 to read curr|
0006e810  65 6e 74 20 70 6f 73 69  74 69 6f 6e 0a 23 53 75  |ent position.#Su|
0006e820  62 70 61 67 65 20 70 72  67 63 68 61 6e 6e 65 6c  |bpage prgchannel|
0006e830  0a 52 30 20 3d 09 30 0a  52 31 20 3d 09 30 09 3c  |.R0 =.0.R1 =.0.<|
0006e840  64 65 66 61 75 6c 74 20  73 74 65 72 65 6f 20 70  |default stereo p|
0006e850  6f 73 69 74 69 6f 6e 73  3d 3e 2e 64 65 66 61 75  |ositions=>.defau|
0006e860  6c 74 3e 0a 09 31 09 41  6d 69 67 61 20 28 66 75  |lt>..1.Amiga (fu|
0006e870  6c 6c 29 20 73 74 65 72  65 6f 20 70 6f 73 69 74  |ll) stereo posit|
0006e880  69 6f 6e 73 0a 09 32 09  63 65 6e 74 72 65 64 20  |ions..2.centred |
0006e890  28 6e 6f 20 73 74 65 72  65 6f 29 0a 09 33 09 66  |(no stereo)..3.f|
0006e8a0  75 6c 6c 20 6c 65 66 74  0a 09 34 09 66 75 6c 6c  |ull left..4.full|
0006e8b0  20 72 69 67 68 74 0a 23  53 75 62 70 61 67 65 20  | right.#Subpage |
0006e8c0  64 65 66 61 75 6c 74 0a  44 65 66 61 75 6c 74 20  |default.Default |
0006e8d0  73 74 65 72 65 6f 20 73  65 74 74 69 6e 67 73 0a  |stereo settings.|
0006e8e0  43 68 61 6e 6e 65 6c 73  20 31 2c 35 20 50 6f 73  |Channels 1,5 Pos|
0006e8f0  69 74 69 6f 6e 3a 20 2d  37 39 20 28 6c 65 66 74  |ition: -79 (left|
0006e900  29 0a 43 68 61 6e 6e 65  6c 73 20 32 2c 36 20 50  |).Channels 2,6 P|
0006e910  6f 73 69 74 69 6f 6e 3a  20 20 37 39 20 28 72 69  |osition:  79 (ri|
0006e920  67 68 74 29 0a 43 68 61  6e 6e 65 6c 73 20 33 2c  |ght).Channels 3,|
0006e930  37 20 50 6f 73 69 74 69  6f 6e 3a 20 20 34 37 20  |7 Position:  47 |
0006e940  28 73 6c 69 67 68 74 6c  79 20 72 69 67 68 74 29  |(slightly right)|
0006e950  0a 43 68 61 6e 6e 65 6c  73 20 34 2c 38 20 50 6f  |.Channels 4,8 Po|
0006e960  73 69 74 69 6f 6e 3a 20  2d 34 37 20 28 73 6c 69  |sition: -47 (sli|
0006e970  67 68 74 6c 79 20 6c 65  66 74 29 0a 44 41 54 41  |ghtly left).DATA|
0006e980  96 01 00 00 51 54 4d 5f  52 65 61 64 53 6f 6e 67  |....QTM_ReadSong|
0006e990  4c 65 6e 67 74 68 20 20  28 26 34 37 45 34 45 29  |Length  (&47E4E)|
0006e9a0  0a 23 50 61 72 65 6e 74  20 51 54 4d 5f 0a 3c 3d  |.#Parent QTM_.<=|
0006e9b0  09 52 30 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |.R0 =.number of |
0006e9c0  73 65 71 75 65 6e 63 65  73 20 69 6e 20 63 75 72  |sequences in cur|
0006e9d0  72 65 6e 74 20 73 6f 6e  67 20 28 31 2d 31 32 38  |rent song (1-128|
0006e9e0  29 0a 09 52 31 20 3d 09  6d 61 78 69 6d 75 6d 20  |)..R1 =.maximum |
0006e9f0  70 61 74 74 65 72 6e 20  6e 75 6d 62 65 72 20 69  |pattern number i|
0006ea00  6e 20 73 6f 6e 67 20 28  69 65 2e 20 6e 75 6d 62  |n song (ie. numb|
0006ea10  65 72 20 6f 66 20 70 61  74 74 65 72 6e 73 2d 31  |er of patterns-1|
0006ea20  29 0a 0a 54 68 69 73 20  53 57 49 20 61 6c 6c 6f  |)..This SWI allo|
0006ea30  77 73 20 79 6f 75 20 74  6f 20 72 65 61 64 20 74  |ws you to read t|
0006ea40  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 73 65 71  |he number of seq|
0006ea50  75 65 6e 63 65 73 20 61  6e 64 20 6d 61 78 69 6d  |uences and maxim|
0006ea60  75 6d 20 70 61 74 74 65  72 6e 20 6e 75 6d 62 65  |um pattern numbe|
0006ea70  72 20 69 6e 20 74 68 65  20 63 75 72 72 65 6e 74  |r in the current|
0006ea80  20 73 6f 6e 67 2e 20 54  68 65 20 6d 61 78 69 6d  | song. The maxim|
0006ea90  75 6d 20 70 61 74 74 65  72 6e 20 6e 75 6d 62 65  |um pattern numbe|
0006eaa0  72 20 69 73 20 41 4c 57  41 59 53 20 74 68 65 20  |r is ALWAYS the |
0006eab0  6e 75 6d 62 65 72 20 6f  66 20 70 61 74 74 65 72  |number of patter|
0006eac0  6e 73 20 70 72 65 73 65  6e 74 2d 31 2c 20 73 69  |ns present-1, si|
0006ead0  6e 63 65 20 63 6f 75 6e  74 69 6e 67 20 73 74 61  |nce counting sta|
0006eae0  72 74 73 20 61 74 20 30  2c 20 6e 6f 74 20 31 2e  |rts at 0, not 1.|
0006eaf0  0a 0a 56 20 66 6c 61 67  20 73 65 74 20 69 66 20  |..V flag set if |
0006eb00  6e 6f 20 73 6f 6e 67 20  69 73 20 6c 6f 61 64 65  |no song is loade|
0006eb10  64 0a 00 00 44 41 54 41  69 01 00 00 51 54 4d 5f  |d...DATAi...QTM_|
0006eb20  52 65 61 64 53 65 71 75  65 6e 63 65 54 61 62 6c  |ReadSequenceTabl|
0006eb30  65 20 20 28 26 34 37 45  34 46 29 0a 23 50 61 72  |e  (&47E4F).#Par|
0006eb40  65 6e 74 20 51 54 4d 5f  0a 3d 3e 09 52 30 20 3d  |ent QTM_.=>.R0 =|
0006eb50  20 73 65 71 75 65 6e 63  65 20 6e 75 6d 62 65 72  | sequence number|
0006eb60  20 74 6f 20 72 65 61 64  20 28 30 2d 31 32 37 29  | to read (0-127)|
0006eb70  0a 3c 3d 09 52 30 20 3d  20 70 61 74 74 65 72 6e  |.<=.R0 = pattern|
0006eb80  20 6e 75 6d 62 65 72 20  73 74 6f 72 65 64 20 61  | number stored a|
0006eb90  74 20 74 68 61 74 20 70  6f 73 69 74 69 6f 6e 0a  |t that position.|
0006eba0  0a 54 68 69 73 20 53 57  49 20 65 6e 61 62 6c 65  |.This SWI enable|
0006ebb0  73 20 79 6f 75 20 74 6f  20 72 65 61 64 20 74 68  |s you to read th|
0006ebc0  65 20 70 61 74 74 65 72  6e 20 74 6f 20 62 65 20  |e pattern to be |
0006ebd0  70 6c 61 79 65 64 20 61  74 20 61 20 67 69 76 65  |played at a give|
0006ebe0  6e 20 70 6f 73 69 74 69  6f 6e 20 69 6e 20 74 68  |n position in th|
0006ebf0  65 20 63 75 72 72 65 6e  74 20 73 6f 6e 67 27 73  |e current song's|
0006ec00  20 73 65 71 75 65 6e 63  65 20 74 61 62 6c 65 2e  | sequence table.|
0006ec10  0a 0a 56 20 66 6c 61 67  20 73 65 74 20 69 66 20  |..V flag set if |
0006ec20  6e 6f 20 73 6f 6e 67 20  69 73 20 6c 6f 61 64 65  |no song is loade|
0006ec30  64 20 6f 72 20 69 66 20  73 65 71 75 65 6e 63 65  |d or if sequence|
0006ec40  20 6e 75 6d 62 65 72 20  69 73 20 6c 61 72 67 65  | number is large|
0006ec50  72 20 74 68 61 6e 20 74  68 65 20 73 6f 6e 67 27  |r than the song'|
0006ec60  73 20 6d 61 78 69 6d 75  6d 20 73 65 71 75 65 6e  |s maximum sequen|
0006ec70  63 65 20 70 6f 73 69 74  69 6f 6e 2e 0a 00 00 00  |ce position.....|
0006ec80  44 41 54 41 e0 02 00 00  51 54 4d 5f 56 55 42 61  |DATA....QTM_VUBa|
0006ec90  72 43 6f 6e 74 72 6f 6c  20 20 28 26 34 37 45 35  |rControl  (&47E5|
0006eca0  30 29 0a 23 50 61 72 65  6e 74 20 51 54 4d 5f 0a  |0).#Parent QTM_.|
0006ecb0  3d 3e 09 52 30 20 3d 09  3c 63 6f 6e 74 72 6f 6c  |=>.R0 =.<control|
0006ecc0  20 76 61 6c 75 65 3d 3e  2e 63 6f 6e 74 72 6f 6c  | value=>.control|
0006ecd0  3e 0a 09 52 31 20 3d 09  6e 65 77 20 56 55 20 67  |>..R1 =.new VU g|
0006ece0  72 61 76 69 74 79 2c 20  6f 72 20 2d 31 20 74 6f  |ravity, or -1 to|
0006ecf0  20 72 65 61 64 0a 0a 3c  3d 09 52 30 20 3d 09 70  | read..<=.R0 =.p|
0006ed00  72 65 76 69 6f 75 73 20  56 55 20 63 6f 6e 74 72  |revious VU contr|
0006ed10  6f 6c 6c 65 72 20 73 74  61 74 65 0a 09 52 31 20  |oller state..R1 |
0006ed20  3d 09 70 72 65 76 69 6f  75 73 20 56 55 20 62 61  |=.previous VU ba|
0006ed30  72 20 67 72 61 76 69 74  79 0a 0a 54 68 69 73 20  |r gravity..This |
0006ed40  53 57 49 20 61 6c 6c 6f  77 73 20 63 6f 6e 74 72  |SWI allows contr|
0006ed50  6f 6c 20 6f 66 20 74 68  65 20 68 69 67 68 6c 79  |ol of the highly|
0006ed60  20 61 63 63 75 72 61 74  65 20 56 55 20 62 61 72  | accurate VU bar|
0006ed70  20 72 6f 75 74 69 6e 65  20 63 6f 6e 74 61 69 6e  | routine contain|
0006ed80  65 64 20 69 6e 20 74 68  65 20 51 54 4d 20 6d 6f  |ed in the QTM mo|
0006ed90  64 75 6c 65 2e 20 54 68  65 20 64 65 66 61 75 6c  |dule. The defaul|
0006eda0  74 20 73 65 74 74 69 6e  67 73 20 66 6f 72 20 74  |t settings for t|
0006edb0  68 65 20 56 55 20 62 61  72 20 72 6f 75 74 69 6e  |he VU bar routin|
0006edc0  65 20 61 72 65 3a 20 67  72 61 76 69 74 79 20 3d  |e are: gravity =|
0006edd0  20 32 20 28 6c 69 6e 65  73 20 70 65 72 20 35 30  | 2 (lines per 50|
0006ede0  74 68 20 6f 66 20 61 20  73 65 63 6f 6e 64 29 20  |th of a second) |
0006edf0  61 6e 64 20 74 68 65 20  56 55 20 62 61 72 20 63  |and the VU bar c|
0006ee00  6f 6e 74 72 6f 6c 6c 65  72 20 6f 66 66 2e 0a 0a  |ontroller off...|
0006ee10  4e 6f 74 65 3a 20 43 75  72 72 65 6e 74 6c 79 20  |Note: Currently |
0006ee20  51 54 4d 20 56 55 20 62  61 72 73 20 61 72 65 20  |QTM VU bars are |
0006ee30  6f 6e 6c 79 20 61 76 61  69 6c 61 62 6c 65 20 66  |only available f|
0006ee40  6f 72 20 63 68 61 6e 6e  65 6c 73 20 31 2d 34 2e  |or channels 1-4.|
0006ee50  0a 23 53 75 62 70 61 67  65 20 63 6f 6e 74 72 6f  |.#Subpage contro|
0006ee60  6c 0a 51 54 4d 20 56 55  42 61 72 20 63 6f 6e 74  |l.QTM VUBar cont|
0006ee70  72 6f 6c 20 76 61 6c 75  65 73 0a 5c 23 09 6d 65  |rol values.\#.me|
0006ee80  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 30 09 73 77  |aning.#Line.0.sw|
0006ee90  69 74 63 68 20 74 68 65  20 56 55 20 62 61 72 20  |itch the VU bar |
0006eea0  63 6f 6e 74 72 6f 6c 6c  65 72 73 20 6f 66 66 0a  |controllers off.|
0006eeb0  31 09 73 65 74 20 74 68  65 20 56 55 20 62 61 72  |1.set the VU bar|
0006eec0  20 63 6f 6e 74 72 6f 6c  6c 65 72 20 74 6f 20 75  | controller to u|
0006eed0  73 65 20 27 66 61 6b 65  27 20 56 55 20 62 61 72  |se 'fake' VU bar|
0006eee0  73 0a 32 09 73 65 74 20  74 68 65 20 56 55 20 62  |s.2.set the VU b|
0006eef0  61 72 20 63 6f 6e 74 72  6f 6c 6c 65 72 20 74 6f  |ar controller to|
0006ef00  20 75 73 65 20 27 65 66  66 65 63 74 27 20 56 55  | use 'effect' VU|
0006ef10  20 62 61 72 73 0a 33 09  73 65 74 20 74 68 65 20  | bars.3.set the |
0006ef20  56 55 20 62 61 72 20 63  6f 6e 74 72 6f 6c 6c 65  |VU bar controlle|
0006ef30  72 20 74 6f 20 75 73 65  20 27 72 65 61 6c 27 20  |r to use 'real' |
0006ef40  56 55 20 62 61 72 73 0a  2d 31 09 72 65 61 64 20  |VU bars.-1.read |
0006ef50  63 75 72 72 65 6e 74 20  73 65 74 74 69 6e 67 0a  |current setting.|
0006ef60  44 41 54 41 29 02 00 00  51 54 4d 5f 52 65 61 64  |DATA)...QTM_Read|
0006ef70  56 55 4c 65 76 65 6c 73  20 20 28 26 34 37 45 35  |VULevels  (&47E5|
0006ef80  31 29 0a 23 50 61 72 65  6e 74 20 51 54 4d 5f 0a  |1).#Parent QTM_.|
0006ef90  3d 3e 09 52 30 20 3d 09  43 68 61 6e 6e 65 6c 20  |=>.R0 =.Channel |
0006efa0  6e 75 6d 62 65 72 20 28  31 2d 34 29 20 6f 72 20  |number (1-4) or |
0006efb0  30 20 66 6f 72 20 61 6c  6c 20 63 68 61 6e 6e 65  |0 for all channe|
0006efc0  6c 73 0a 0a 3c 3d 09 49  66 20 52 30 20 3d 20 31  |ls..<=.If R0 = 1|
0006efd0  2d 34 20 6f 6e 20 65 6e  74 72 79 2c 20 74 68 65  |-4 on entry, the|
0006efe0  6e 0a 09 20 20 20 52 30  20 3d 20 56 55 20 62 61  |n..   R0 = VU ba|
0006eff0  72 20 68 65 69 67 68 74  20 66 6f 72 20 74 68 65  |r height for the|
0006f000  20 63 68 61 6e 6e 65 6c  20 73 70 65 63 69 66 69  | channel specifi|
0006f010  65 64 20 69 6e 20 52 30  20 28 30 2d 36 34 29 0a  |ed in R0 (0-64).|
0006f020  09 49 66 20 52 30 20 3d  20 30 20 6f 6e 20 65 6e  |.If R0 = 0 on en|
0006f030  74 72 79 2c 20 74 68 65  6e 20 0a 09 20 20 20 52  |try, then ..   R|
0006f040  30 20 3d 20 77 6f 72 64  20 63 6f 6e 74 61 69 6e  |0 = word contain|
0006f050  69 6e 67 20 31 20 62 79  74 65 20 70 65 72 20 63  |ing 1 byte per c|
0006f060  68 61 6e 6e 65 6c 20 6f  66 20 61 6c 6c 20 74 68  |hannel of all th|
0006f070  65 20 34 20 63 68 61 6e  6e 65 6c 73 27 20 56 55  |e 4 channels' VU|
0006f080  20 62 61 72 20 68 65 69  67 68 74 73 20 28 30 2d  | bar heights (0-|
0006f090  36 34 2c 20 65 61 63 68  20 62 79 74 65 29 0a 0a  |64, each byte)..|
0006f0a0  54 68 69 73 20 53 57 49  20 6c 65 74 73 20 79 6f  |This SWI lets yo|
0006f0b0  75 20 72 65 61 64 20 74  68 65 20 63 75 72 72 65  |u read the curre|
0006f0c0  6e 74 20 56 55 20 6c 65  76 65 6c 73 20 6f 66 20  |nt VU levels of |
0006f0d0  74 68 65 20 51 54 4d 20  56 55 20 62 61 72 20 68  |the QTM VU bar h|
0006f0e0  61 6e 64 6c 65 72 2e 20  54 68 69 73 20 63 61 6c  |andler. This cal|
0006f0f0  6c 20 73 68 6f 75 6c 64  20 6f 6e 6c 79 20 62 65  |l should only be|
0006f100  20 75 73 65 64 20 69 66  20 74 68 65 20 56 55 20  | used if the VU |
0006f110  62 61 72 20 68 61 6e 64  6c 65 72 20 68 61 73 20  |bar handler has |
0006f120  62 65 65 6e 20 65 6e 61  62 6c 65 64 20 75 73 69  |been enabled usi|
0006f130  6e 67 20 3c 51 54 4d 5f  56 55 42 61 72 43 6f 6e  |ng <QTM_VUBarCon|
0006f140  74 72 6f 6c 3e 2e 0a 0a  4e 6f 74 65 3a 20 43 75  |trol>...Note: Cu|
0006f150  72 72 65 6e 74 6c 79 20  51 54 4d 20 56 55 20 62  |rrently QTM VU b|
0006f160  61 72 73 20 61 72 65 20  6f 6e 6c 79 20 61 76 61  |ars are only ava|
0006f170  69 6c 61 62 6c 65 20 66  6f 72 20 63 68 61 6e 6e  |ilable for chann|
0006f180  65 6c 73 20 31 2d 34 2e  0a 00 00 00 44 41 54 41  |els 1-4.....DATA|
0006f190  4a 03 00 00 51 54 4d 5f  52 65 61 64 53 61 6d 70  |J...QTM_ReadSamp|
0006f1a0  6c 65 54 61 62 6c 65 20  20 28 26 34 37 45 35 32  |leTable  (&47E52|
0006f1b0  29 0a 23 50 61 72 65 6e  74 20 51 54 4d 5f 0a 3d  |).#Parent QTM_.=|
0006f1c0  3e 09 52 30 20 3d 09 73  61 6d 70 6c 65 20 6e 75  |>.R0 =.sample nu|
0006f1d0  6d 62 65 72 20 28 31 2d  36 34 29 0a 0a 3c 3d 09  |mber (1-64)..<=.|
0006f1e0  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
0006f1f0  32 32 20 62 79 74 65 20  62 6c 6f 63 6b 20 28 6e  |22 byte block (n|
0006f200  6f 74 20 74 65 72 6d 69  6e 61 74 65 64 29 20 63  |ot terminated) c|
0006f210  6f 6e 74 61 69 6e 69 6e  67 20 73 61 6d 70 6c 65  |ontaining sample|
0006f220  20 6e 61 6d 65 20 28 6f  72 20 61 20 30 20 62 79  | name (or a 0 by|
0006f230  74 65 2c 20 69 66 20 6e  6f 20 73 61 6d 70 6c 65  |te, if no sample|
0006f240  20 6e 61 6d 65 29 0a 09  52 31 20 3d 09 73 61 6d  | name)..R1 =.sam|
0006f250  70 6c 65 20 6c 65 6e 67  74 68 20 28 69 6e 20 62  |ple length (in b|
0006f260  79 74 65 73 29 0a 09 52  32 20 3d 09 72 65 70 65  |ytes)..R2 =.repe|
0006f270  61 74 20 6f 66 66 73 65  74 20 28 62 79 74 65 73  |at offset (bytes|
0006f280  20 66 72 6f 6d 20 73 74  61 72 74 20 6f 66 20 73  | from start of s|
0006f290  61 6d 70 6c 65 29 0a 09  52 33 20 3d 09 72 65 70  |ample)..R3 =.rep|
0006f2a0  65 61 74 20 6c 65 6e 67  74 68 20 28 69 6e 20 62  |eat length (in b|
0006f2b0  79 74 65 73 29 0a 09 52  34 20 3d 09 64 65 66 61  |ytes)..R4 =.defa|
0006f2c0  75 6c 74 20 76 6f 6c 75  6d 65 20 28 30 2d 36 34  |ult volume (0-64|
0006f2d0  29 0a 09 52 35 20 3d 09  66 69 6e 65 20 74 75 6e  |)..R5 =.fine tun|
0006f2e0  69 6e 67 20 76 61 6c 75  65 20 28 2d 38 20 74 6f  |ing value (-8 to|
0006f2f0  20 2b 37 29 0a 09 52 36  20 3d 09 61 64 64 72 65  | +7)..R6 =.addre|
0006f300  73 73 20 6f 66 20 72 61  77 20 73 61 6d 70 6c 65  |ss of raw sample|
0006f310  20 64 61 74 61 20 28 6c  6f 67 61 72 69 74 68 6d  | data (logarithm|
0006f320  69 63 20 66 6f 72 6d 61  74 29 0a 0a 54 68 69 73  |ic format)..This|
0006f330  20 53 57 49 20 61 6c 6c  6f 77 73 20 79 6f 75 20  | SWI allows you |
0006f340  74 6f 20 72 65 61 64 20  69 6e 66 6f 72 6d 61 74  |to read informat|
0006f350  69 6f 6e 20 66 72 6f 6d  20 74 68 65 20 51 54 4d  |ion from the QTM|
0006f360  20 73 61 6d 70 6c 65 20  74 61 62 6c 65 2c 20 77  | sample table, w|
0006f370  68 69 63 68 20 63 6f 6e  74 61 69 6e 73 20 75 70  |hich contains up|
0006f380  20 74 6f 20 36 34 20 73  61 6d 70 6c 65 73 2e 20  | to 64 samples. |
0006f390  4e 6f 6e 2d 65 78 69 73  74 65 6e 74 20 73 61 6d  |Non-existent sam|
0006f3a0  70 6c 65 73 20 77 69 6c  6c 20 72 65 74 75 72 6e  |ples will return|
0006f3b0  20 7a 65 72 6f 20 69 6e  20 52 31 2d 52 36 2c 20  | zero in R1-R6, |
0006f3c0  61 6e 64 20 52 30 20 77  69 6c 6c 20 70 6f 69 6e  |and R0 will poin|
0006f3d0  74 20 74 6f 20 61 20 30  20 62 79 74 65 2e 0a 0a  |t to a 0 byte...|
0006f3e0  4e 6f 74 65 3a 20 42 65  63 61 75 73 65 20 6f 6e  |Note: Because on|
0006f3f0  6c 79 20 73 61 6d 70 6c  65 73 20 31 2d 33 31 20  |ly samples 1-31 |
0006f400  61 72 65 20 75 73 65 64  20 62 79 20 73 6f 6e 67  |are used by song|
0006f410  73 2c 20 73 61 6d 70 6c  65 73 20 33 32 2d 36 34  |s, samples 32-64|
0006f420  20 63 61 6e 20 62 65 20  75 73 65 64 20 66 6f 72  | can be used for|
0006f430  20 73 6f 75 6e 64 20 65  66 66 65 63 74 73 20 28  | sound effects (|
0006f440  69 6e 20 67 61 6d 65 73  20 65 74 63 2e 29 20 61  |in games etc.) a|
0006f450  6e 64 20 63 61 6e 20 62  65 20 72 65 67 69 73 74  |nd can be regist|
0006f460  65 72 65 64 20 73 65 70  61 72 61 74 65 6c 79 2c  |ered separately,|
0006f470  20 75 73 69 6e 67 20 3c  51 54 4d 5f 52 65 67 69  | using <QTM_Regi|
0006f480  73 74 65 72 53 61 6d 70  6c 65 3e 2e 0a 0a 56 20  |sterSample>...V |
0006f490  66 6c 61 67 20 73 65 74  20 69 66 20 73 61 6d 70  |flag set if samp|
0006f4a0  6c 65 20 6e 75 6d 62 65  72 20 69 73 20 6f 75 74  |le number is out|
0006f4b0  20 6f 66 20 74 68 65 20  72 61 6e 67 65 20 31 2d  | of the range 1-|
0006f4c0  36 34 20 6f 72 20 73 6f  6e 67 20 6e 6f 74 20 6c  |64 or song not l|
0006f4d0  6f 61 64 65 64 0a 00 00  44 41 54 41 b4 03 00 00  |oaded...DATA....|
0006f4e0  51 54 4d 5f 52 65 61 64  53 70 65 65 64 20 20 28  |QTM_ReadSpeed  (|
0006f4f0  26 34 37 45 35 33 29 0a  23 50 61 72 65 6e 74 20  |&47E53).#Parent |
0006f500  51 54 4d 5f 0a 3c 3d 09  52 30 20 3d 09 63 75 72  |QTM_.<=.R0 =.cur|
0006f510  72 65 6e 74 20 73 6f 6e  67 20 73 70 65 65 64 20  |rent song speed |
0006f520  28 30 30 2d 33 31 29 0a  09 52 31 20 3d 09 63 75  |(00-31)..R1 =.cu|
0006f530  72 72 65 6e 74 20 73 6f  6e 67 20 43 49 41 20 74  |rrent song CIA t|
0006f540  65 6d 70 6f 20 73 65 74  74 69 6e 67 20 28 33 32  |empo setting (32|
0006f550  2d 32 35 35 29 0a 09 52  32 20 3d 09 73 70 65 65  |-255)..R2 =.spee|
0006f560  64 20 63 6f 75 6e 74 65  72 20 76 61 6c 75 65 20  |d counter value |
0006f570  28 30 31 2d 73 70 65 65  64 29 0a 0a 54 68 69 73  |(01-speed)..This|
0006f580  20 53 57 49 20 72 65 74  75 72 6e 73 20 69 6e 66  | SWI returns inf|
0006f590  6f 72 6d 61 74 69 6f 6e  20 6f 6e 20 74 68 65 20  |ormation on the |
0006f5a0  63 75 72 72 65 6e 74 20  73 70 65 65 64 2c 20 74  |current speed, t|
0006f5b0  65 6d 70 6f 20 61 6e 64  20 63 6f 75 6e 74 65 72  |empo and counter|
0006f5c0  20 76 61 6c 75 65 73 20  6f 66 20 74 68 65 20 63  | values of the c|
0006f5d0  75 72 72 65 6e 74 20 73  6f 6e 67 2e 20 54 68 65  |urrent song. The|
0006f5e0  20 73 70 65 65 64 20 76  61 6c 75 65 20 28 52 30  | speed value (R0|
0006f5f0  29 20 69 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |) is the number |
0006f600  6f 66 20 74 69 6d 65 73  20 74 68 65 20 73 6f 6e  |of times the son|
0006f610  67 20 63 6f 6e 74 72 6f  6c 6c 65 72 20 68 61 73  |g controller has|
0006f620  20 74 6f 20 62 65 20 63  61 6c 6c 65 64 2c 20 62  | to be called, b|
0006f630  65 66 6f 72 65 20 69 74  20 70 6c 61 79 73 20 74  |efore it plays t|
0006f640  68 65 20 6e 65 78 74 20  6e 6f 74 65 2c 20 74 68  |he next note, th|
0006f650  65 20 64 65 66 61 75 6c  74 20 69 73 20 36 20 74  |e default is 6 t|
0006f660  69 6d 65 73 2e 20 49 66  20 61 20 73 70 65 65 64  |imes. If a speed|
0006f670  20 6f 66 20 30 20 69 73  20 72 65 74 75 72 6e 65  | of 0 is returne|
0006f680  64 2c 20 74 68 65 20 73  6f 6e 67 20 69 73 20 6e  |d, the song is n|
0006f690  6f 74 20 70 6c 61 79 69  6e 67 2e 0a 0a 54 68 65  |ot playing...The|
0006f6a0  20 43 49 41 20 74 65 6d  70 6f 20 73 65 74 74 69  | CIA tempo setti|
0006f6b0  6e 67 20 63 6f 6e 74 72  6f 6c 73 20 68 6f 77 20  |ng controls how |
0006f6c0  66 61 73 74 20 74 68 65  20 73 6f 6e 67 20 63 6f  |fast the song co|
0006f6d0  6e 74 72 6f 6c 6c 65 72  20 69 73 20 63 61 6c 6c  |ntroller is call|
0006f6e0  65 64 2e 20 54 68 65 20  64 65 66 61 75 6c 74 20  |ed. The default |
0006f6f0  69 73 20 35 30 20 74 69  6d 65 73 20 61 20 73 65  |is 50 times a se|
0006f700  63 6f 6e 64 2c 20 74 65  6d 70 6f 20 31 32 35 2e  |cond, tempo 125.|
0006f710  20 28 54 68 65 20 6e 61  6d 65 20 43 49 41 20 74  | (The name CIA t|
0006f720  65 6d 70 6f 20 63 6f 6d  65 73 20 66 72 6f 6d 20  |empo comes from |
0006f730  43 6f 6d 70 6c 65 78 20  49 6e 74 65 72 66 61 63  |Complex Interfac|
0006f740  65 20 41 64 61 70 74 6f  72 2c 20 77 68 69 63 68  |e Adaptor, which|
0006f750  20 77 61 73 20 75 73 65  64 20 6f 6e 20 74 68 65  | was used on the|
0006f760  20 41 6d 69 67 61 20 74  6f 20 63 6f 6e 74 72 6f  | Amiga to contro|
0006f770  6c 20 50 72 6f 54 72 61  63 6b 65 72 27 73 20 69  |l ProTracker's i|
0006f780  6e 74 65 72 72 75 70 74  20 73 70 65 65 64 2e 29  |nterrupt speed.)|
0006f790  0a 0a 54 68 65 20 73 70  65 65 64 20 63 6f 75 6e  |..The speed coun|
0006f7a0  74 65 72 20 28 52 32 29  20 76 61 72 69 65 73 20  |ter (R2) varies |
0006f7b0  66 72 6f 6d 20 31 20 74  6f 20 74 68 65 20 63 75  |from 1 to the cu|
0006f7c0  72 72 65 6e 74 20 73 70  65 65 64 20 28 52 30 29  |rrent speed (R0)|
0006f7d0  2e 20 49 74 20 69 73 20  64 65 63 72 65 6d 65 6e  |. It is decremen|
0006f7e0  74 65 64 20 6f 6e 63 65  20 65 76 65 72 79 20 74  |ted once every t|
0006f7f0  69 6d 65 20 74 68 65 20  73 6f 6e 67 20 63 6f 6e  |ime the song con|
0006f800  74 72 6f 6c 6c 65 72 20  69 73 20 63 61 6c 6c 65  |troller is calle|
0006f810  64 2c 20 75 6e 74 69 6c  20 69 74 20 72 65 61 63  |d, until it reac|
0006f820  68 65 73 20 30 2c 20 77  68 65 6e 20 74 68 65 20  |hes 0, when the |
0006f830  6e 65 78 74 20 6e 6f 74  65 20 69 73 20 70 6c 61  |next note is pla|
0006f840  79 65 64 20 61 6e 64 20  74 68 65 20 63 6f 75 6e  |yed and the coun|
0006f850  74 65 72 20 69 73 20 72  65 73 65 74 20 74 6f 20  |ter is reset to |
0006f860  74 68 65 20 73 70 65 65  64 2e 0a 0a 56 20 66 6c  |the speed...V fl|
0006f870  61 67 20 73 65 74 20 69  66 20 6e 6f 20 73 6f 6e  |ag set if no son|
0006f880  67 20 69 73 20 6c 6f 61  64 65 64 0a 44 41 54 41  |g is loaded.DATA|
0006f890  8c 03 00 00 51 54 4d 5f  50 6c 61 79 53 61 6d 70  |....QTM_PlaySamp|
0006f8a0  6c 65 20 20 28 26 34 37  45 35 34 29 0a 23 50 61  |le  (&47E54).#Pa|
0006f8b0  72 65 6e 74 20 51 54 4d  5f 0a 3d 3e 09 52 30 20  |rent QTM_.=>.R0 |
0006f8c0  3d 20 63 68 61 6e 6e 65  6c 20 6e 75 6d 62 65 72  |= channel number|
0006f8d0  20 28 31 2d 38 29 0a 09  52 31 20 3d 20 73 61 6d  | (1-8)..R1 = sam|
0006f8e0  70 6c 65 20 6e 75 6d 62  65 72 20 28 30 2c 31 2d  |ple number (0,1-|
0006f8f0  36 34 29 2c 20 30 20 74  6f 20 63 6c 65 61 72 20  |64), 0 to clear |
0006f900  63 68 61 6e 6e 65 6c 0a  09 52 32 20 3d 20 6e 6f  |channel..R2 = no|
0006f910  74 65 20 6e 75 6d 62 65  72 20 28 31 2d 33 36 20  |te number (1-36 |
0006f920  66 6f 72 20 73 74 61 6e  64 61 72 64 2c 20 31 31  |for standard, 11|
0006f930  33 2d 38 35 36 20 66 6f  72 20 61 6d 69 67 61 20  |3-856 for amiga |
0006f940  70 69 74 63 68 29 0a 09  52 33 20 3d 20 6c 69 6e  |pitch)..R3 = lin|
0006f950  65 61 72 20 76 6f 6c 75  6d 65 20 28 30 2d 36 34  |ear volume (0-64|
0006f960  29 0a 0a 3c 3d 09 52 30  2d 52 33 20 70 72 65 73  |)..<=.R0-R3 pres|
0006f970  65 72 76 65 64 0a 0a 54  68 69 73 20 53 57 49 20  |erved..This SWI |
0006f980  61 6c 6c 6f 77 73 20 79  6f 75 20 74 6f 20 70 6c  |allows you to pl|
0006f990  61 79 20 61 6e 79 20 6f  66 20 74 68 65 20 36 34  |ay any of the 64|
0006f9a0  20 73 61 6d 70 6c 65 73  20 68 65 6c 64 20 69 6e  | samples held in|
0006f9b0  20 74 68 65 20 51 54 4d  20 73 61 6d 70 6c 65 20  | the QTM sample |
0006f9c0  74 61 62 6c 65 20 6f 6e  20 61 6e 79 20 6f 66 20  |table on any of |
0006f9d0  74 68 65 20 34 20 6f 72  20 38 20 61 76 61 69 6c  |the 4 or 8 avail|
0006f9e0  61 62 6c 65 20 63 68 61  6e 6e 65 6c 73 2e 20 41  |able channels. A|
0006f9f0  20 73 61 6d 70 6c 65 20  63 61 6e 20 62 65 20 70  | sample can be p|
0006fa00  6c 61 79 65 64 20 61 74  20 61 6e 79 20 74 69 6d  |layed at any tim|
0006fa10  65 2c 20 69 6e 63 6c 75  64 69 6e 67 20 77 68 69  |e, including whi|
0006fa20  6c 65 20 61 20 73 6f 6e  67 20 69 73 20 70 6c 61  |le a song is pla|
0006fa30  79 69 6e 67 2c 20 61 6c  74 68 6f 75 67 68 20 74  |ying, although t|
0006fa40  68 65 20 73 61 6d 70 6c  65 20 6d 61 79 20 62 65  |he sample may be|
0006fa50  20 63 75 74 20 73 68 6f  72 74 20 69 66 20 74 68  | cut short if th|
0006fa60  65 20 73 6f 6e 67 20 69  73 20 70 6c 61 79 69 6e  |e song is playin|
0006fa70  67 2e 20 50 6c 61 79 69  6e 67 20 61 20 6e 6f 6e  |g. Playing a non|
0006fa80  2d 65 78 69 73 74 65 6e  74 20 73 61 6d 70 6c 65  |-existent sample|
0006fa90  20 77 69 6c 6c 20 72 65  73 75 6c 74 20 69 6e 20  | will result in |
0006faa0  6e 6f 74 68 69 6e 67 20  62 65 69 6e 67 20 70 6c  |nothing being pl|
0006fab0  61 79 65 64 2e 20 54 68  65 20 73 61 6d 70 6c 65  |ayed. The sample|
0006fac0  73 20 61 62 6f 76 65 20  33 31 20 63 61 6e 20 62  |s above 31 can b|
0006fad0  65 20 75 73 65 64 20 61  66 74 65 72 20 74 68 65  |e used after the|
0006fae0  79 20 61 72 65 20 72 65  67 69 73 74 65 72 65 64  |y are registered|
0006faf0  2c 20 75 73 69 6e 67 20  3c 51 54 4d 5f 52 65 67  |, using <QTM_Reg|
0006fb00  69 73 74 65 72 53 61 6d  70 6c 65 3e 2e 0a 0a 54  |isterSample>...T|
0006fb10  68 69 73 20 53 57 49 20  77 69 6c 6c 20 61 6c 73  |his SWI will als|
0006fb20  6f 20 73 74 61 72 74 20  75 70 20 74 68 65 20 51  |o start up the Q|
0006fb30  54 4d 20 73 6f 75 6e 64  20 73 79 73 74 65 6d 20  |TM sound system |
0006fb40  69 66 20 69 74 20 69 73  20 63 61 6c 6c 65 64 20  |if it is called |
0006fb50  77 68 69 6c 65 20 74 68  65 0a 73 6f 6e 67 20 69  |while the.song i|
0006fb60  73 20 73 74 6f 70 70 65  64 20 6f 72 20 70 61 75  |s stopped or pau|
0006fb70  73 65 64 2c 20 74 68 6f  75 67 68 20 69 74 20 77  |sed, though it w|
0006fb80  69 6c 6c 20 6e 6f 74 20  73 77 69 74 63 68 20 74  |ill not switch t|
0006fb90  68 65 20 73 79 73 74 65  6d 20 6f 66 66 20 61 66  |he system off af|
0006fba0  74 65 72 0a 74 68 65 20  73 61 6d 70 6c 65 20 66  |ter.the sample f|
0006fbb0  69 6e 69 73 68 65 73 2c  20 75 73 65 20 3c 51 54  |inishes, use <QT|
0006fbc0  4d 5f 53 6f 75 6e 64 43  6f 6e 74 72 6f 6c 3e 20  |M_SoundControl> |
0006fbd0  74 6f 20 64 6f 20 74 68  69 73 2e 0a 0a 56 20 66  |to do this...V f|
0006fbe0  6c 61 67 20 73 65 74 20  69 66 20 61 6e 79 20 6f  |lag set if any o|
0006fbf0  66 20 74 68 65 20 72 65  67 69 73 74 65 72 73 20  |f the registers |
0006fc00  63 6f 6e 74 61 69 6e 20  69 6c 6c 65 67 61 6c 20  |contain illegal |
0006fc10  76 61 6c 75 65 73 2e 0a  44 41 54 41 58 01 00 00  |values..DATAX...|
0006fc20  51 54 4d 5f 53 6f 6e 67  53 74 61 74 75 73 20 20  |QTM_SongStatus  |
0006fc30  28 26 34 37 45 35 35 29  0a 23 50 61 72 65 6e 74  |(&47E55).#Parent|
0006fc40  20 51 54 4d 5f 0a 3c 3d  09 52 30 20 3d 20 3c 73  | QTM_.<=.R0 = <s|
0006fc50  6f 6e 67 20 73 74 61 74  75 73 20 66 6c 61 67 73  |ong status flags|
0006fc60  3d 3e 2e 66 6c 61 67 73  3e 0a 0a 54 68 69 73 20  |=>.flags>..This |
0006fc70  53 57 49 20 61 6c 6c 6f  77 73 20 79 6f 75 20 74  |SWI allows you t|
0006fc80  6f 20 72 65 61 64 20 74  68 65 20 63 75 72 72 65  |o read the curre|
0006fc90  6e 74 20 73 74 61 74 75  73 20 6f 66 20 74 68 65  |nt status of the|
0006fca0  20 51 54 4d 20 73 6f 6e  67 20 63 6f 6e 74 72 6f  | QTM song contro|
0006fcb0  6c 6c 65 72 2e 0a 0a 4e  6f 20 65 72 72 6f 72 20  |ller...No error |
0006fcc0  69 73 20 67 65 6e 65 72  61 74 65 64 20 69 66 20  |is generated if |
0006fcd0  74 68 65 72 65 20 69 73  20 6e 6f 20 73 6f 6e 67  |there is no song|
0006fce0  20 6c 6f 61 64 65 64 2e  0a 23 53 75 62 70 61 67  | loaded..#Subpag|
0006fcf0  65 20 66 6c 61 67 73 0a  51 54 4d 20 53 6f 6e 67  |e flags.QTM Song|
0006fd00  20 73 74 61 74 75 73 20  66 6c 61 67 73 0a 42 69  | status flags.Bi|
0006fd10  74 09 6d 65 61 6e 69 6e  67 20 69 66 20 73 65 74  |t.meaning if set|
0006fd20  0a 23 4c 69 6e 65 0a 30  09 73 6f 6e 67 20 6c 6f  |.#Line.0.song lo|
0006fd30  61 64 65 64 0a 31 09 73  6f 6e 67 20 6c 6f 61 64  |aded.1.song load|
0006fd40  65 64 20 69 6e 20 52 4d  41 0a 32 09 73 6f 6e 67  |ed in RMA.2.song|
0006fd50  20 63 75 72 72 65 6e 74  6c 20 70 6c 61 79 69 6e  | currentl playin|
0006fd60  67 0a 33 2d 33 31 09 72  65 73 65 72 76 65 64 0a  |g.3-31.reserved.|
0006fd70  44 41 54 41 e0 04 00 00  51 54 4d 5f 52 65 61 64  |DATA....QTM_Read|
0006fd80  50 6c 61 79 69 6e 67 54  69 6d 65 20 20 28 26 34  |PlayingTime  (&4|
0006fd90  37 45 35 36 29 0a 23 50  61 72 65 6e 74 20 51 54  |7E56).#Parent QT|
0006fda0  4d 5f 0a 3c 3d 09 52 30  20 3d 09 74 6f 74 61 6c  |M_.<=.R0 =.total|
0006fdb0  20 70 6c 61 79 69 6e 67  20 74 69 6d 65 20 73 6f  | playing time so|
0006fdc0  20 66 61 72 20 28 73 65  63 6f 6e 64 73 29 0a 09  | far (seconds)..|
0006fdd0  52 31 20 3d 09 74 69 6d  65 20 73 69 6e 63 65 20  |R1 =.time since |
0006fde0  6c 61 73 74 20 3c 51 54  4d 5f 53 74 61 72 74 3e  |last <QTM_Start>|
0006fdf0  20 28 73 65 63 6f 6e 64  73 29 0a 09 52 32 20 3d  | (seconds)..R2 =|
0006fe00  09 74 6f 74 61 6c 20 70  6c 61 79 69 6e 67 20 74  |.total playing t|
0006fe10  69 6d 65 20 6f 66 20 74  68 65 20 77 68 6f 6c 65  |ime of the whole|
0006fe20  20 73 6f 6e 67 20 28 73  65 63 6f 6e 64 73 29 0a  | song (seconds).|
0006fe30  0a 54 68 69 73 20 53 57  49 20 61 6c 6c 6f 77 73  |.This SWI allows|
0006fe40  20 79 6f 75 20 74 6f 20  72 65 61 64 20 74 68 65  | you to read the|
0006fe50  20 74 77 6f 20 51 54 4d  20 73 6f 6e 67 20 74 69  | two QTM song ti|
0006fe60  6d 65 72 73 20 61 6e 64  20 74 68 65 20 74 6f 74  |mers and the tot|
0006fe70  61 6c 20 74 69 6d 65 20  6f 66 20 74 68 65 20 63  |al time of the c|
0006fe80  75 72 72 65 6e 74 20 73  6f 6e 67 2e 20 54 68 65  |urrent song. The|
0006fe90  20 63 6f 6e 74 65 6e 74  73 20 6f 66 20 52 30 20  | contents of R0 |
0006fea0  61 6e 64 20 52 31 20 6f  6e 20 65 78 69 74 20 61  |and R1 on exit a|
0006feb0  72 65 20 63 61 6c 63 75  6c 61 74 65 64 20 66 72  |re calculated fr|
0006fec0  6f 6d 20 74 68 65 20 69  6e 74 65 72 6e 61 6c 20  |om the internal |
0006fed0  31 30 30 48 7a 20 74 69  6d 65 72 2c 20 62 75 74  |100Hz timer, but|
0006fee0  20 74 68 65 20 63 6f 6e  74 65 6e 74 73 20 6f 66  | the contents of|
0006fef0  20 52 32 20 72 65 6c 79  20 6f 6e 20 61 20 73 70  | R2 rely on a sp|
0006ff00  65 63 69 61 6c 20 31 30  30 25 20 61 63 63 75 72  |ecial 100% accur|
0006ff10  61 74 65 2c 20 73 6f 6e  67 20 6c 65 6e 67 74 68  |ate, song length|
0006ff20  20 63 61 6c 63 75 6c 61  74 69 6f 6e 20 72 6f 75  | calculation rou|
0006ff30  74 69 6e 65 2e 2e 2e 0a  0a 54 68 65 20 2a 2a 20  |tine.....The ** |
0006ff40  7b 2a 7d 51 54 4d 2d 55  6c 74 72 61 2d 6d 65 67  |{*}QTM-Ultra-meg|
0006ff50  61 2d 74 69 6d 65 2d 77  6f 72 6b 65 72 2d 6f 75  |a-time-worker-ou|
0006ff60  74 65 72 7b 2a 7d 20 2a  2a 20 69 73 20 74 68 65  |ter{*} ** is the|
0006ff70  20 66 69 72 73 74 20 73  6f 6e 67 20 74 69 6d 65  | first song time|
0006ff80  20 63 61 6c 63 75 6c 61  74 69 6f 6e 20 72 6f 75  | calculation rou|
0006ff90  74 69 6e 65 20 6f 6e 20  74 68 65 20 41 72 63 2c  |tine on the Arc,|
0006ffa0  20 61 6e 64 20 74 68 65  20 6f 6e 6c 79 20 72 6f  | and the only ro|
0006ffb0  75 74 69 6e 65 20 6f 6e  20 61 6e 79 20 63 6f 6d  |utine on any com|
0006ffc0  70 75 74 65 72 20 77 68  69 63 68 20 63 61 6e 20  |puter which can |
0006ffd0  61 63 63 75 72 61 74 65  6c 79 20 77 6f 72 6b 20  |accurately work |
0006ffe0  6f 75 74 20 74 69 6d 65  73 20 63 6f 72 72 65 63  |out times correc|
0006fff0  74 6c 79 20 77 69 74 68  20 65 66 66 65 63 74 73  |tly with effects|
00070000  20 73 75 63 68 20 61 73  20 43 49 41 20 74 65 6d  | such as CIA tem|
00070010  70 6f 73 2c 20 70 61 74  74 65 72 6e 20 6c 6f 6f  |pos, pattern loo|
00070020  70 73 20 61 6e 64 20 70  61 74 74 65 72 6e 20 64  |ps and pattern d|
00070030  65 6c 61 79 73 2e 20 54  68 65 20 72 6f 75 74 69  |elays. The routi|
00070040  6e 65 20 77 6f 72 6b 73  20 62 79 20 73 63 61 6e  |ne works by scan|
00070050  6e 69 6e 67 20 74 68 72  6f 75 67 68 20 61 6c 6c  |ning through all|
00070060  20 74 68 65 20 73 6f 6e  67 27 73 20 70 61 74 74  | the song's patt|
00070070  65 72 6e 73 2c 20 69 6e  20 74 68 65 20 63 6f 72  |erns, in the cor|
00070080  72 65 63 74 20 6f 72 64  65 72 2c 20 63 61 6c 63  |rect order, calc|
00070090  75 6c 61 74 69 6e 67 20  74 68 65 20 74 69 6d 65  |ulating the time|
000700a0  20 6f 66 20 65 61 63 68  20 65 76 65 6e 74 20 61  | of each event a|
000700b0  73 20 69 74 20 67 6f 65  73 2c 20 61 6e 64 20 74  |s it goes, and t|
000700c0  61 6b 69 6e 67 20 69 6e  74 6f 20 61 63 63 6f 75  |aking into accou|
000700d0  6e 74 20 61 6e 79 20 73  70 65 65 64 2c 20 74 65  |nt any speed, te|
000700e0  6d 70 6f 2c 20 6c 6f 6f  70 20 6f 72 20 64 65 6c  |mpo, loop or del|
000700f0  61 79 20 73 65 74 74 69  6e 67 73 20 74 68 61 74  |ay settings that|
00070100  20 6d 61 79 20 62 65 20  69 6e 20 75 73 65 2e 0a  | may be in use..|
00070110  0a 57 68 65 6e 20 74 68  69 73 20 53 57 49 20 69  |.When this SWI i|
00070120  73 20 63 61 6c 6c 65 64  20 66 6f 72 20 74 68 65  |s called for the|
00070130  20 66 69 72 73 74 20 74  69 6d 65 20 61 66 74 65  | first time afte|
00070140  72 20 6c 6f 61 64 69 6e  67 20 61 20 73 6f 6e 67  |r loading a song|
00070150  2c 20 74 68 65 20 74 6f  74 61 6c 20 6c 65 6e 67  |, the total leng|
00070160  74 68 20 77 69 6c 6c 20  62 65 20 77 6f 72 6b 65  |th will be worke|
00070170  64 20 6f 75 74 20 75 73  69 6e 67 20 74 68 65 20  |d out using the |
00070180  73 70 65 63 69 61 6c 20  72 6f 75 74 69 6e 65 2e  |special routine.|
00070190  20 4f 6e 20 6c 61 74 65  72 20 63 61 6c 6c 73 20  | On later calls |
000701a0  74 6f 20 74 68 69 73 20  53 57 49 20 28 77 68 69  |to this SWI (whi|
000701b0  6c 65 20 74 68 65 20 73  61 6d 65 20 73 6f 6e 67  |le the same song|
000701c0  20 69 73 20 6c 6f 61 64  65 64 29 2c 20 74 68 65  | is loaded), the|
000701d0  20 74 6f 74 61 6c 20 6c  65 6e 67 74 68 20 77 69  | total length wi|
000701e0  6c 6c 20 6e 6f 74 20 62  65 20 72 65 2d 63 61 6c  |ll not be re-cal|
000701f0  63 75 6c 61 74 65 64 2c  20 62 75 74 20 74 68 65  |culated, but the|
00070200  20 6f 72 69 67 69 6e 61  6c 20 63 61 6c 63 75 6c  | original calcul|
00070210  61 74 69 6f 6e 20 77 69  6c 6c 20 75 73 65 64 2c  |ation will used,|
00070220  20 74 6f 20 73 61 76 65  20 74 69 6d 65 2e 0a 0a  | to save time...|
00070230  56 20 66 6c 61 67 20 73  65 74 20 69 66 20 6e 6f  |V flag set if no|
00070240  20 73 6f 6e 67 20 69 73  20 6c 6f 61 64 65 64 0a  | song is loaded.|
00070250  44 41 54 41 04 03 00 00  51 54 4d 5f 50 6c 61 79  |DATA....QTM_Play|
00070260  52 61 77 53 61 6d 70 6c  65 20 20 28 26 34 37 45  |RawSample  (&47E|
00070270  35 37 29 0a 23 50 61 72  65 6e 74 20 51 54 4d 5f  |57).#Parent QTM_|
00070280  0a 3d 3e 09 52 30 20 3d  20 63 68 61 6e 6e 65 6c  |.=>.R0 = channel|
00070290  20 6e 75 6d 62 65 72 20  28 31 2d 38 29 0a 09 52  | number (1-8)..R|
000702a0  31 20 3d 20 73 61 6d 70  6c 65 20 61 64 64 72 65  |1 = sample addre|
000702b0  73 73 20 28 6c 6f 67 61  72 69 74 68 6d 69 63 20  |ss (logarithmic |
000702c0  73 61 6d 70 6c 65 20 64  61 74 61 29 2c 20 6f 72  |sample data), or|
000702d0  20 30 20 74 6f 20 73 69  6c 65 6e 63 65 20 63 68  | 0 to silence ch|
000702e0  61 6e 6e 65 6c 0a 09 52  32 20 3d 20 73 61 6d 70  |annel..R2 = samp|
000702f0  6c 65 20 6c 65 6e 67 74  68 20 28 69 6e 20 62 79  |le length (in by|
00070300  74 65 73 29 0a 09 52 33  20 3d 20 72 65 70 65 61  |tes)..R3 = repea|
00070310  74 20 6f 66 66 73 65 74  20 28 62 79 74 65 73 20  |t offset (bytes |
00070320  66 72 6f 6d 20 73 74 61  72 74 20 6f 66 20 73 61  |from start of sa|
00070330  6d 70 6c 65 29 0a 09 52  34 20 3d 20 72 65 70 65  |mple)..R4 = repe|
00070340  61 74 20 6c 65 6e 67 74  68 20 28 69 6e 20 62 79  |at length (in by|
00070350  74 65 73 29 0a 09 52 35  20 3d 20 6e 6f 74 65 20  |tes)..R5 = note |
00070360  6e 75 6d 62 65 72 20 28  31 2d 33 36 20 66 6f 72  |number (1-36 for|
00070370  20 73 74 61 6e 64 61 72  64 20 6e 6f 74 65 2c 20  | standard note, |
00070380  31 31 33 2d 38 35 36 20  66 6f 72 20 61 6d 69 67  |113-856 for amig|
00070390  61 20 70 69 74 63 68 29  0a 09 52 36 20 3d 20 6c  |a pitch)..R6 = l|
000703a0  69 6e 65 61 72 20 76 6f  6c 75 6d 65 20 28 30 2d  |inear volume (0-|
000703b0  36 34 29 0a 0a 3c 3d 09  52 30 2d 52 36 20 70 72  |64)..<=.R0-R6 pr|
000703c0  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 53 57  |eserved..This SW|
000703d0  49 20 61 6c 6c 6f 77 73  20 79 6f 75 20 74 6f 20  |I allows you to |
000703e0  70 6c 61 79 20 61 20 73  61 6d 70 6c 65 20 73 74  |play a sample st|
000703f0  6f 72 65 64 20 69 6e 20  61 6e 79 20 61 72 65 61  |ored in any area|
00070400  20 6f 66 20 6d 65 6d 6f  72 79 2e 20 54 68 65 20  | of memory. The |
00070410  73 61 6d 70 6c 65 20 73  68 6f 75 6c 64 20 62 65  |sample should be|
00070420  20 69 6e 20 38 2d 62 69  74 20 6c 6f 67 61 72 69  | in 8-bit logari|
00070430  74 68 6d 69 63 20 66 6f  72 6d 61 74 2e 0a 0a 54  |thmic format...T|
00070440  68 69 73 20 53 57 49 20  77 69 6c 6c 20 61 6c 73  |his SWI will als|
00070450  6f 20 73 74 61 72 74 20  75 70 20 74 68 65 20 51  |o start up the Q|
00070460  54 4d 20 73 6f 75 6e 64  20 73 79 73 74 65 6d 20  |TM sound system |
00070470  69 66 20 69 74 20 69 73  20 63 61 6c 6c 65 64 20  |if it is called |
00070480  77 68 69 6c 65 20 74 68  65 20 73 6f 6e 67 20 69  |while the song i|
00070490  73 20 73 74 6f 70 70 65  64 20 6f 72 20 70 61 75  |s stopped or pau|
000704a0  73 65 64 2c 20 74 68 6f  75 67 68 20 69 74 20 77  |sed, though it w|
000704b0  69 6c 6c 20 6e 6f 74 20  73 77 69 74 63 68 20 74  |ill not switch t|
000704c0  68 65 20 73 79 73 74 65  6d 20 6f 66 66 20 61 66  |he system off af|
000704d0  74 65 72 20 74 68 65 20  73 61 6d 70 6c 65 20 66  |ter the sample f|
000704e0  69 6e 69 73 68 65 73 2c  20 75 73 65 20 3c 51 54  |inishes, use <QT|
000704f0  4d 5f 53 6f 75 6e 64 43  6f 6e 74 72 6f 6c 3e 20  |M_SoundControl> |
00070500  74 6f 20 64 6f 20 74 68  69 73 2e 0a 0a 56 20 66  |to do this...V f|
00070510  6c 61 67 73 20 73 65 74  20 69 66 20 74 68 65 20  |lags set if the |
00070520  63 6f 6e 74 65 6e 74 73  20 6f 66 20 74 68 65 20  |contents of the |
00070530  72 65 67 69 73 74 65 72  73 20 63 6f 6e 74 61 69  |registers contai|
00070540  6e 20 64 61 6e 67 65 72  6f 75 73 20 76 61 6c 75  |n dangerous valu|
00070550  65 73 21 0a 44 41 54 41  89 06 00 00 51 54 4d 5f  |es!.DATA....QTM_|
00070560  53 6f 75 6e 64 43 6f 6e  74 72 6f 6c 20 20 28 26  |SoundControl  (&|
00070570  34 37 45 35 38 29 0a 23  50 61 72 65 6e 74 20 51  |47E58).#Parent Q|
00070580  54 4d 5f 0a 3d 3e 09 52  30 20 3d 09 6e 75 6d 62  |TM_.=>.R0 =.numb|
00070590  65 72 20 6f 66 20 63 68  61 6e 6e 65 6c 73 20 74  |er of channels t|
000705a0  6f 20 75 73 65 20 28 34  2c 20 38 20 6f 72 20 30  |o use (4, 8 or 0|
000705b0  20 74 6f 20 73 68 75 74  64 6f 77 6e 29 20 2d 31  | to shutdown) -1|
000705c0  20 74 6f 20 72 65 61 64  0a 09 52 31 20 3d 09 74  | to read..R1 =.t|
000705d0  72 61 6e 73 70 61 72 65  6e 74 20 73 6f 75 6e 64  |ransparent sound|
000705e0  20 73 79 73 74 65 6d 20  66 6c 61 67 73 20 31 2d  | system flags 1-|
000705f0  6f 6e 2c 20 30 2d 6f 66  66 2c 20 2d 31 20 74 6f  |on, 0-off, -1 to|
00070600  20 72 65 61 64 0a 09 52  32 20 3d 09 74 72 61 6e  | read..R2 =.tran|
00070610  73 70 61 72 65 6e 74 20  73 6f 75 6e 64 20 73 79  |sparent sound sy|
00070620  73 74 65 6d 20 63 68 61  6e 6e 65 6c 20 68 61 6e  |stem channel han|
00070630  64 6c 65 72 20 61 64 64  72 65 73 73 20 6f 72 20  |dler address or |
00070640  2d 31 0a 0a 3c 3d 09 52  30 20 3d 09 70 72 65 76  |-1..<=.R0 =.prev|
00070650  69 6f 75 73 20 6e 75 6d  62 65 72 20 6f 66 20 63  |ious number of c|
00070660  68 61 6e 6e 65 6c 73 20  28 30 20 69 66 20 73 6f  |hannels (0 if so|
00070670  75 6e 64 20 73 79 73 74  65 6d 20 77 61 73 20 6f  |und system was o|
00070680  66 66 29 0a 09 52 31 20  3d 09 70 72 65 76 69 6f  |ff)..R1 =.previo|
00070690  75 73 20 74 72 61 6e 73  70 61 72 65 6e 74 20 73  |us transparent s|
000706a0  6f 75 6e 64 20 73 79 73  74 65 6d 20 66 6c 61 67  |ound system flag|
000706b0  73 0a 09 52 32 20 3d 09  70 72 65 76 69 6f 75 73  |s..R2 =.previous|
000706c0  20 74 72 61 6e 73 70 61  72 65 6e 74 20 73 6f 75  | transparent sou|
000706d0  6e 64 20 73 79 73 74 65  6d 20 68 61 6e 64 6c 65  |nd system handle|
000706e0  72 0a 0a 54 68 69 73 20  53 57 49 20 61 6c 6c 6f  |r..This SWI allo|
000706f0  77 73 20 63 6f 6e 74 72  6f 6c 20 6f 76 65 72 20  |ws control over |
00070700  74 68 65 20 51 54 4d 20  73 6f 75 6e 64 20 44 4d  |the QTM sound DM|
00070710  41 20 68 61 6e 64 6c 65  72 2e 0a 0a 54 68 65 20  |A handler...The |
00070720  51 54 4d 20 73 6f 75 6e  64 20 73 79 73 74 65 6d  |QTM sound system|
00070730  20 73 77 69 74 63 68 65  73 20 6f 6e 20 61 75 74  | switches on aut|
00070740  6f 6d 61 74 69 63 61 6c  6c 79 20 77 68 65 6e 20  |omatically when |
00070750  61 20 73 6f 6e 67 20 6f  72 20 61 20 73 61 6d 70  |a song or a samp|
00070760  6c 65 20 69 73 20 70 6c  61 79 65 64 2c 20 62 75  |le is played, bu|
00070770  74 20 63 61 6e 20 61 6c  73 6f 20 62 65 20 73 77  |t can also be sw|
00070780  69 74 63 68 65 64 20 6f  6e 20 6d 61 6e 75 61 6c  |itched on manual|
00070790  6c 79 20 75 73 69 6e 67  20 74 68 69 73 20 53 57  |ly using this SW|
000707a0  49 2c 20 73 70 65 63 69  66 79 69 6e 67 20 34 20  |I, specifying 4 |
000707b0  6f 72 20 38 20 63 68 61  6e 6e 65 6c 73 2e 20 4e  |or 8 channels. N|
000707c0  6f 74 65 3a 20 54 68 69  73 20 73 65 74 73 20 74  |ote: This sets t|
000707d0  68 65 20 27 64 65 66 61  75 6c 74 27 20 6e 75 6d  |he 'default' num|
000707e0  62 65 72 20 6f 66 20 63  68 61 6e 6e 65 6c 73 2c  |ber of channels,|
000707f0  20 73 6f 20 65 76 65 6e  20 61 66 74 65 72 20 74  | so even after t|
00070800  68 65 20 73 6f 75 6e 64  20 73 79 73 74 65 6d 20  |he sound system |
00070810  69 73 20 6e 65 78 74 20  73 68 75 74 20 64 6f 77  |is next shut dow|
00070820  6e 2c 20 51 54 4d 20 77  69 6c 6c 20 63 6f 6e 74  |n, QTM will cont|
00070830  69 6e 75 65 20 74 6f 20  75 73 65 20 74 68 65 20  |inue to use the |
00070840  6e 75 6d 62 65 72 20 6f  66 20 63 68 61 6e 6e 65  |number of channe|
00070850  6c 73 20 73 70 65 63 69  66 69 65 64 20 77 68 65  |ls specified whe|
00070860  6e 65 76 65 72 20 61 20  73 6f 6e 67 20 6f 72 20  |never a song or |
00070870  73 61 6d 70 6c 65 20 63  61 75 73 65 73 20 74 68  |sample causes th|
00070880  65 20 73 6f 75 6e 64 20  73 79 73 74 65 6d 20 74  |e sound system t|
00070890  6f 20 73 74 61 72 74 20  75 70 20 61 67 61 69 6e  |o start up again|
000708a0  2e 0a 0a 49 66 20 30 20  63 68 61 6e 6e 65 6c 73  |...If 0 channels|
000708b0  20 61 72 65 20 73 70 65  63 69 66 69 65 64 2c 20  | are specified, |
000708c0  74 68 65 20 51 54 4d 20  73 6f 75 6e 64 20 73 79  |the QTM sound sy|
000708d0  73 74 65 6d 20 69 73 20  73 68 75 74 20 64 6f 77  |stem is shut dow|
000708e0  6e 2e 20 49 66 20 61 20  73 6f 6e 67 20 77 61 73  |n. If a song was|
000708f0  20 70 6c 61 79 69 6e 67  20 61 74 20 74 68 61 74  | playing at that|
00070900  20 74 69 6d 65 2c 20 74  68 65 20 6d 75 73 69 63  | time, the music|
00070910  20 68 61 6e 64 6c 65 72  73 20 61 6e 64 20 70 6f  | handlers and po|
00070920  73 69 74 69 6f 6e 20 63  6f 75 6e 74 65 72 73 20  |sition counters |
00070930  77 69 6c 6c 20 63 6f 6e  74 69 6e 75 65 20 74 6f  |will continue to|
00070940  20 6d 6f 76 65 20 74 68  72 6f 75 67 68 20 74 68  | move through th|
00070950  65 20 73 6f 6e 67 2c 20  61 6c 74 68 6f 75 67 68  |e song, although|
00070960  20 6e 6f 20 73 6f 75 6e  64 20 77 69 6c 6c 20 62  | no sound will b|
00070970  65 20 68 65 61 72 64 20  66 72 6f 6d 20 51 54 4d  |e heard from QTM|
00070980  2e 0a 0a 44 65 74 61 69  6c 73 20 6f 66 20 74 68  |...Details of th|
00070990  65 20 54 72 61 6e 73 70  61 72 65 6e 74 20 53 6f  |e Transparent So|
000709a0  75 6e 64 20 53 79 73 74  65 6d 20 63 61 6e 20 62  |und System can b|
000709b0  65 20 66 6f 75 6e 64 20  69 6e 20 74 68 65 20 27  |e found in the '|
000709c0  54 65 63 68 6e 69 63 61  6c 27 20 68 65 6c 70 20  |Technical' help |
000709d0  66 69 6c 65 2c 20 62 75  74 20 62 61 73 69 63 61  |file, but basica|
000709e0  6c 6c 79 20 69 74 20 61  6c 6c 6f 77 73 20 6a 6f  |lly it allows jo|
000709f0  69 6e 74 20 63 6f 6e 74  72 6f 6c 20 6f 76 65 72  |int control over|
00070a00  20 74 68 65 20 73 6f 75  6e 64 20 63 68 61 6e 6e  | the sound chann|
00070a10  65 6c 73 2c 20 62 79 20  51 54 4d 20 61 6e 64 20  |els, by QTM and |
00070a20  65 69 74 68 65 72 20 74  68 65 20 52 69 73 63 4f  |either the RiscO|
00070a30  53 20 73 6f 75 6e 64 20  68 61 6e 64 6c 65 72 20  |S sound handler |
00070a40  28 64 65 66 61 75 6c 74  29 20 6f 72 20 61 6e 79  |(default) or any|
00070a50  20 6f 74 68 65 72 20 52  69 73 63 4f 53 20 63 6f  | other RiscOS co|
00070a60  6d 70 61 74 69 62 6c 65  20 73 6f 75 6e 64 20 63  |mpatible sound c|
00070a70  68 61 6e 6e 65 6c 20 68  61 6e 64 6c 65 72 2e 20  |hannel handler. |
00070a80  53 77 69 74 63 68 69 6e  67 20 74 68 65 20 54 72  |Switching the Tr|
00070a90  61 6e 73 70 61 72 65 6e  74 20 53 6f 75 6e 64 20  |ansparent Sound |
00070aa0  53 79 73 74 65 6d 20 6f  6e 20 28 70 61 73 73 69  |System on (passi|
00070ab0  6e 67 20 31 20 69 6e 20  52 31 29 20 77 69 6c 6c  |ng 1 in R1) will|
00070ac0  20 61 6c 6c 6f 77 20 79  6f 75 20 74 6f 20 68 65  | allow you to he|
00070ad0  61 72 20 61 6e 79 20 52  69 73 63 4f 53 20 76 6f  |ar any RiscOS vo|
00070ae0  69 63 65 20 6d 6f 64 75  6c 65 20 73 6f 75 6e 64  |ice module sound|
00070af0  73 20 41 53 20 57 45 4c  4c 20 61 73 20 61 6e 79  |s AS WELL as any|
00070b00  20 51 54 4d 20 73 61 6d  70 6c 65 73 2e 20 46 6f  | QTM samples. Fo|
00070b10  72 20 65 78 61 6d 70 6c  65 2c 20 69 6e 20 69 74  |r example, in it|
00070b20  73 20 64 65 66 61 75 6c  74 20 73 74 61 74 65 2c  |s default state,|
00070b30  20 74 68 65 20 54 72 61  6e 73 70 61 72 65 6e 74  | the Transparent|
00070b40  20 53 6f 75 6e 64 20 53  79 73 74 65 6d 20 77 69  | Sound System wi|
00070b50  6c 6c 20 61 6c 6c 6f 77  20 79 6f 75 20 74 6f 20  |ll allow you to |
00070b60  68 65 61 72 20 74 68 65  20 73 79 73 74 65 6d 20  |hear the system |
00070b70  27 62 65 65 70 27 2c 20  77 68 69 6c 65 20 61 20  |'beep', while a |
00070b80  73 6f 6e 67 20 6f 72 20  73 61 6d 70 6c 65 20 69  |song or sample i|
00070b90  73 20 62 65 69 6e 67 20  70 6c 61 79 65 64 20 74  |s being played t|
00070ba0  68 72 6f 75 67 68 20 51  54 4d 2e 0a 0a 56 20 66  |hrough QTM...V f|
00070bb0  6c 61 67 20 73 65 74 20  69 66 20 69 6c 6c 65 67  |lag set if illeg|
00070bc0  61 6c 20 76 61 6c 75 65  73 20 61 72 65 20 70 61  |al values are pa|
00070bd0  73 73 65 64 20 74 6f 20  51 54 4d 2e 0a 00 00 00  |ssed to QTM.....|
00070be0  44 41 54 41 a0 02 00 00  51 54 4d 5f 53 57 49 54  |DATA....QTM_SWIT|
00070bf0  61 62 6c 65 41 64 64 72  65 73 73 20 20 28 26 34  |ableAddress  (&4|
00070c00  37 45 35 39 29 0a 23 50  61 72 65 6e 74 20 51 54  |7E59).#Parent QT|
00070c10  4d 5f 0a 3c 3d 09 52 30  20 3d 20 61 64 64 72 65  |M_.<=.R0 = addre|
00070c20  73 73 20 6f 66 20 51 54  4d 27 73 20 69 6e 74 65  |ss of QTM's inte|
00070c30  72 6e 61 6c 20 53 57 49  20 6a 75 6d 70 20 74 61  |rnal SWI jump ta|
00070c40  62 6c 65 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |ble..This SWI re|
00070c50  74 75 72 6e 73 20 74 68  65 20 61 64 64 72 65 73  |turns the addres|
00070c60  73 20 6f 66 20 51 54 4d  27 73 20 53 57 49 20 6a  |s of QTM's SWI j|
00070c70  75 6d 70 20 74 61 62 6c  65 2c 20 73 6f 20 74 68  |ump table, so th|
00070c80  61 74 20 75 73 65 72 20  70 72 6f 67 72 61 6d 73  |at user programs|
00070c90  20 63 61 6e 20 63 61 6c  6c 20 64 69 72 65 63 74  | can call direct|
00070ca0  6c 79 20 61 6e 79 20 51  54 4d 20 53 57 49 2c 20  |ly any QTM SWI, |
00070cb0  77 69 74 68 6f 75 74 20  67 6f 69 6e 67 20 74 68  |without going th|
00070cc0  72 6f 75 67 68 20 74 68  65 20 52 69 73 63 4f 53  |rough the RiscOS|
00070cd0  20 53 57 49 20 68 61 6e  64 6c 65 72 2e 0a 0a 54  | SWI handler...T|
00070ce0  6f 20 63 61 6c 6c 20 61  20 51 54 4d 20 53 57 49  |o call a QTM SWI|
00070cf0  20 76 69 61 20 74 68 69  73 20 61 64 64 72 65 73  | via this addres|
00070d00  73 2c 20 74 68 65 20 72  65 67 69 73 74 65 72 73  |s, the registers|
00070d10  20 73 68 6f 75 6c 64 20  62 65 20 73 65 74 20 75  | should be set u|
00070d20  70 20 61 73 20 72 65 71  75 69 72 65 64 20 62 79  |p as required by|
00070d30  20 74 68 65 20 53 57 49  2c 20 61 6e 64 20 74 68  | the SWI, and th|
00070d40  65 20 53 57 49 20 6e 75  6d 62 65 72 20 6d 69 6e  |e SWI number min|
00070d50  75 73 20 26 34 37 45 34  30 20 73 68 6f 75 6c 64  |us &47E40 should|
00070d60  20 62 65 20 70 6c 61 63  65 64 20 69 6e 20 52 31  | be placed in R1|
00070d70  31 2e 20 54 68 65 20 53  57 49 20 63 61 6e 20 74  |1. The SWI can t|
00070d80  68 65 6e 20 62 65 20 65  78 65 63 75 74 65 64 20  |hen be executed |
00070d90  62 79 20 62 72 61 6e 63  68 69 6e 67 20 74 6f 20  |by branching to |
00070da0  74 68 69 73 20 53 57 49  20 74 61 62 6c 65 20 61  |this SWI table a|
00070db0  64 64 72 65 73 73 2e 0a  0a 4e 6f 74 65 3a 20 61  |ddress...Note: a|
00070dc0  6c 6c 20 51 54 4d 20 53  57 49 73 20 63 61 6e 20  |ll QTM SWIs can |
00070dd0  62 65 20 63 61 6c 6c 65  64 20 74 68 69 73 20 77  |be called this w|
00070de0  61 79 2c 20 66 72 6f 6d  20 61 6e 79 20 50 53 52  |ay, from any PSR|
00070df0  20 6d 6f 64 65 2c 20 61  6c 74 68 6f 75 67 68 20  | mode, although |
00070e00  69 66 20 74 68 65 20 51  54 4d 20 73 6f 75 6e 64  |if the QTM sound|
00070e10  20 73 79 73 74 65 6d 20  69 73 20 61 63 74 69 76  | system is activ|
00070e20  65 2c 20 3c 51 54 4d 5f  52 65 6d 6f 76 65 43 68  |e, <QTM_RemoveCh|
00070e30  61 6e 6e 65 6c 3e 20 73  68 6f 75 6c 64 20 62 65  |annel> should be|
00070e40  20 63 61 6c 6c 65 64 20  66 72 6f 6d 20 61 20 6e  | called from a n|
00070e50  6f 6e 2d 55 73 65 72 20  6d 6f 64 65 2c 20 74 6f  |on-User mode, to|
00070e60  20 61 6c 6c 6f 77 20 64  69 73 61 62 6c 69 6e 67  | allow disabling|
00070e70  20 6f 66 20 69 6e 74 65  72 72 75 70 74 73 2e 0a  | of interrupts..|
00070e80  44 41 54 41 7e 04 00 00  51 54 4d 5f 52 65 67 69  |DATA~...QTM_Regi|
00070e90  73 74 65 72 53 61 6d 70  6c 65 20 20 28 26 34 37  |sterSample  (&47|
00070ea0  45 35 41 29 0a 23 50 61  72 65 6e 74 20 51 54 4d  |E5A).#Parent QTM|
00070eb0  5f 0a 3d 3e 09 52 30 20  3d 09 73 61 6d 70 6c 65  |_.=>.R0 =.sample|
00070ec0  20 6e 75 6d 62 65 72 20  74 6f 20 72 65 67 69 73  | number to regis|
00070ed0  74 65 72 20 61 73 20 28  31 2d 36 34 29 20 28 73  |ter as (1-64) (s|
00070ee0  65 65 20 6e 6f 74 65 73  20 62 65 6c 6f 77 29 0a  |ee notes below).|
00070ef0  09 52 31 20 3d 09 73 61  6d 70 6c 65 20 61 64 64  |.R1 =.sample add|
00070f00  72 65 73 73 20 28 6f 66  20 6c 6f 67 61 72 69 74  |ress (of logarit|
00070f10  68 6d 69 63 20 73 61 6d  70 6c 65 20 64 61 74 61  |hmic sample data|
00070f20  29 20 6f 72 20 30 20 74  6f 20 62 6c 61 6e 6b 20  |) or 0 to blank |
00070f30  74 68 65 20 73 61 6d 70  6c 65 20 69 6e 66 6f 72  |the sample infor|
00070f40  6d 61 74 69 6f 6e 0a 09  49 66 20 52 31 20 5c 3c  |mation..If R1 \<|
00070f50  3e 20 30 20 74 68 65 6e  0a 09 20 09 52 32 20 3d  |> 0 then.. .R2 =|
00070f60  20 73 61 6d 70 6c 65 20  6c 65 6e 67 74 68 20 28  | sample length (|
00070f70  69 6e 20 62 79 74 65 73  29 0a 09 20 09 52 33 20  |in bytes).. .R3 |
00070f80  3d 20 72 65 70 65 61 74  20 6f 66 66 73 65 74 20  |= repeat offset |
00070f90  28 62 79 74 65 73 20 66  72 6f 6d 20 73 74 61 72  |(bytes from star|
00070fa0  74 20 6f 66 20 73 61 6d  70 6c 65 2c 20 6f 72 20  |t of sample, or |
00070fb0  30 29 0a 09 20 09 52 34  20 3d 20 72 65 70 65 61  |0).. .R4 = repea|
00070fc0  74 20 6c 65 6e 67 74 68  20 28 6f 72 20 30 29 0a  |t length (or 0).|
00070fd0  09 20 09 52 35 20 3d 20  64 65 66 61 75 6c 74 20  |. .R5 = default |
00070fe0  76 6f 6c 75 6d 65 20 28  30 2d 36 34 29 0a 09 20  |volume (0-64).. |
00070ff0  09 52 36 20 3d 20 66 69  6e 65 20 74 75 6e 65 20  |.R6 = fine tune |
00071000  76 61 6c 75 65 20 28 2d  38 20 74 6f 20 2b 37 29  |value (-8 to +7)|
00071010  0a 0a 3c 3d 09 52 30 2d  52 36 20 70 72 65 73 65  |..<=.R0-R6 prese|
00071020  72 76 65 64 0a 0a 54 68  69 73 20 53 57 49 20 61  |rved..This SWI a|
00071030  6c 6c 6f 77 73 20 61 20  70 72 6f 67 72 61 6d 20  |llows a program |
00071040  74 6f 20 72 65 67 69 73  74 65 72 20 61 20 73 61  |to register a sa|
00071050  6d 70 6c 65 20 6c 6f 61  64 65 64 20 69 6e 74 6f  |mple loaded into|
00071060  20 69 74 27 73 20 6f 77  6e 20 6d 65 6d 6f 72 79  | it's own memory|
00071070  2c 20 61 73 20 61 20 51  54 4d 20 73 61 6d 70 6c  |, as a QTM sampl|
00071080  65 2e 20 54 68 65 20 61  62 6f 76 65 20 69 6e 66  |e. The above inf|
00071090  6f 72 6d 61 74 69 6f 6e  20 77 69 6c 6c 20 62 65  |ormation will be|
000710a0  20 65 6e 74 65 72 65 64  20 69 6e 74 6f 20 51 54  | entered into QT|
000710b0  4d 27 73 20 36 34 20 73  6c 6f 74 20 73 61 6d 70  |M's 64 slot samp|
000710c0  6c 65 20 74 61 62 6c 65  20 61 6e 64 20 77 69 6c  |le table and wil|
000710d0  6c 20 61 6c 6c 6f 77 20  74 68 65 20 75 73 65 72  |l allow the user|
000710e0  20 70 72 6f 67 72 61 6d  20 74 6f 20 70 6c 61 79  | program to play|
000710f0  20 74 68 65 20 73 61 6d  70 6c 65 20 75 73 69 6e  | the sample usin|
00071100  67 20 3c 51 54 4d 5f 50  6c 61 79 53 61 6d 70 6c  |g <QTM_PlaySampl|
00071110  65 3e 2e 20 49 66 20 74  68 65 20 73 61 6d 70 6c  |e>. If the sampl|
00071120  65 20 6e 75 6d 62 65 72  20 69 73 20 3c 3d 33 31  |e number is <=31|
00071130  2c 20 74 68 65 20 63 75  72 72 65 6e 74 20 73 6f  |, the current so|
00071140  6e 67 20 77 69 6c 6c 20  75 73 65 20 74 68 69 73  |ng will use this|
00071150  20 73 61 6d 70 6c 65 20  72 61 74 68 65 72 20 74  | sample rather t|
00071160  68 61 6e 20 69 74 73 20  64 65 66 61 75 6c 74 20  |han its default |
00071170  73 61 6d 70 6c 65 2e 0a  0a 49 74 20 69 73 20 67  |sample...It is g|
00071180  6f 6f 64 20 70 72 61 63  74 69 63 65 20 66 6f 72  |ood practice for|
00071190  20 6e 6f 6e 2d 64 65 73  6b 74 6f 70 20 75 73 65  | non-desktop use|
000711a0  72 73 20 6f 66 20 74 68  69 73 20 63 61 6c 6c 20  |rs of this call |
000711b0  74 6f 20 62 6c 61 6e 6b  20 74 68 65 69 72 20 72  |to blank their r|
000711c0  65 67 69 73 74 65 72 65  64 20 73 61 6d 70 6c 65  |egistered sample|
000711d0  73 20 77 68 65 6e 20 72  65 74 75 72 6e 69 6e 67  |s when returning|
000711e0  20 74 6f 20 74 68 65 20  64 65 73 6b 74 6f 70 2c  | to the desktop,|
000711f0  20 62 79 20 63 61 6c 6c  69 6e 67 20 74 68 69 73  | by calling this|
00071200  20 53 57 49 20 77 69 74  68 20 52 31 3d 30 2e 0a  | SWI with R1=0..|
00071210  0a 4e 6f 74 65 3a 20 41  6c 6c 20 73 61 6d 70 6c  |.Note: All sampl|
00071220  65 73 20 69 6e 20 74 68  65 20 72 61 6e 67 65 20  |es in the range |
00071230  31 2d 33 31 20 61 72 65  20 72 65 2d 73 65 74 20  |1-31 are re-set |
00071240  77 68 65 6e 20 61 20 6e  65 77 20 73 6f 6e 67 20  |when a new song |
00071250  69 73 20 6c 6f 61 64 65  64 2c 20 74 6f 20 61 6c  |is loaded, to al|
00071260  6c 6f 77 20 73 70 61 63  65 20 66 6f 72 20 74 68  |low space for th|
00071270  65 20 6e 65 77 20 73 6f  6e 67 27 73 20 6f 77 6e  |e new song's own|
00071280  20 73 61 6d 70 6c 65 73  2e 20 49 66 20 79 6f 75  | samples. If you|
00071290  20 61 72 65 20 75 73 69  6e 67 20 74 68 69 73 20  | are using this |
000712a0  72 61 6e 67 65 20 66 6f  72 20 73 6f 75 6e 64 20  |range for sound |
000712b0  65 66 66 65 63 74 73 20  65 74 63 2e 20 79 6f 75  |effects etc. you|
000712c0  20 6d 75 73 74 20 72 65  2d 72 65 67 69 73 74 65  | must re-registe|
000712d0  72 20 61 6c 6c 20 72 65  71 75 69 72 65 64 20 73  |r all required s|
000712e0  61 6d 70 6c 65 73 20 61  66 74 65 72 20 65 76 65  |amples after eve|
000712f0  72 79 20 73 6f 6e 67 20  6c 6f 61 64 2e 0a 00 00  |ry song load....|
00071300  44 41 54 41 bb 03 00 00  51 54 4d 5f 53 65 74 53  |DATA....QTM_SetS|
00071310  70 65 65 64 20 20 28 26  34 37 45 35 42 29 0a 23  |peed  (&47E5B).#|
00071320  50 61 72 65 6e 74 20 51  54 4d 5f 0a 3d 3e 09 52  |Parent QTM_.=>.R|
00071330  30 20 3d 09 6e 65 77 20  73 6f 6e 67 20 73 70 65  |0 =.new song spe|
00071340  65 64 20 28 30 31 2d 33  31 29 20 6f 72 20 74 65  |ed (01-31) or te|
00071350  6d 70 6f 20 28 33 32 2d  32 35 35 29 0a 09 20 09  |mpo (32-255).. .|
00071360  28 73 70 65 65 64 20 28  62 65 61 74 73 20 70 65  |(speed (beats pe|
00071370  72 20 6e 6f 74 65 29 2c  20 66 61 73 74 20 30 31  |r note), fast 01|
00071380  2d 33 31 20 20 76 2e 20  73 6c 6f 77 2c 20 64 65  |-31  v. slow, de|
00071390  66 61 75 6c 74 20 30 36  29 0a 09 20 09 28 74 65  |fault 06).. .(te|
000713a0  6d 70 6f 20 28 62 65 61  74 20 66 72 65 71 75 65  |mpo (beat freque|
000713b0  6e 63 79 29 2c 20 73 6c  6f 77 20 33 32 2d 32 35  |ncy), slow 32-25|
000713c0  35 20 76 2e 20 66 61 73  74 2c 20 64 65 66 61 75  |5 v. fast, defau|
000713d0  6c 74 20 31 32 35 29 0a  0a 3c 3d 09 52 30 20 70  |lt 125)..<=.R0 p|
000713e0  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 53  |reserved..This S|
000713f0  57 49 20 70 72 6f 76 69  64 65 73 20 75 73 65 72  |WI provides user|
00071400  20 63 6f 6e 74 72 6f 6c  20 6f 76 65 72 20 74 68  | control over th|
00071410  65 20 73 70 65 65 64 20  6f 66 20 74 68 65 20 63  |e speed of the c|
00071420  75 72 72 65 6e 74 6c 79  20 70 6c 61 79 69 6e 67  |urrently playing|
00071430  20 73 6f 6e 67 2e 20 54  68 69 73 20 63 6f 6d 6d  | song. This comm|
00071440  61 6e 64 20 68 61 73 20  74 68 65 20 73 61 6d 65  |and has the same|
00071450  20 65 66 66 65 63 74 20  28 61 6e 64 20 74 61 6b  | effect (and tak|
00071460  65 73 20 74 68 65 20 73  61 6d 65 20 70 61 72 61  |es the same para|
00071470  6d 65 74 65 72 73 29 20  61 73 20 74 68 65 20 73  |meters) as the s|
00071480  70 65 65 64 2d 63 68 61  6e 67 65 20 27 46 27 20  |peed-change 'F' |
00071490  65 66 66 65 63 74 20 61  73 20 75 73 65 64 20 69  |effect as used i|
000714a0  6e 20 50 72 6f 54 72 61  63 6b 65 72 20 63 6f 6d  |n ProTracker com|
000714b0  70 61 74 69 62 6c 65 20  73 6f 6e 67 73 2e 20 54  |patible songs. T|
000714c0  68 65 20 6f 6e 6c 79 20  64 69 66 66 65 72 65 6e  |he only differen|
000714d0  63 65 20 62 65 69 6e 67  20 74 68 61 74 20 61 20  |ce being that a |
000714e0  76 61 6c 75 65 20 6f 66  20 30 20 77 69 6c 6c 20  |value of 0 will |
000714f0  4e 4f 54 20 73 74 6f 70  20 74 68 65 20 73 6f 6e  |NOT stop the son|
00071500  67 2c 20 75 73 65 20 53  57 49 20 51 54 4d 5f 53  |g, use SWI QTM_S|
00071510  74 6f 70 20 74 6f 20 64  6f 20 74 68 69 73 2e 0a  |top to do this..|
00071520  0a 41 66 74 65 72 20 75  73 69 6e 67 20 74 68 69  |.After using thi|
00071530  73 20 53 57 49 2c 20 74  68 65 20 73 6f 6e 67 20  |s SWI, the song |
00071540  73 70 65 65 64 20 77 69  6c 6c 20 72 65 6d 61 69  |speed will remai|
00071550  6e 20 61 74 20 74 68 65  20 6e 65 77 20 76 61 6c  |n at the new val|
00071560  75 65 20 75 6e 74 69 6c  20 61 6e 20 27 46 27 20  |ue until an 'F' |
00071570  65 66 66 65 63 74 20 69  73 20 70 6c 61 79 65 64  |effect is played|
00071580  2c 20 6f 72 20 74 68 65  20 73 6f 6e 67 20 69 73  |, or the song is|
00071590  20 73 74 6f 70 70 65 64  2e 20 4e 6f 74 65 3a 20  | stopped. Note: |
000715a0  69 66 20 74 68 65 20 27  46 27 20 65 66 66 65 63  |if the 'F' effec|
000715b0  74 20 69 73 20 64 69 73  61 62 6c 65 64 2c 20 75  |t is disabled, u|
000715c0  73 69 6e 67 20 3c 51 54  4d 5f 45 66 66 65 63 74  |sing <QTM_Effect|
000715d0  43 6f 6e 74 72 6f 6c 3e  2c 20 74 68 65 20 73 6f  |Control>, the so|
000715e0  6e 67 20 77 69 6c 6c 20  70 6c 61 79 20 61 74 20  |ng will play at |
000715f0  74 68 65 20 6e 65 77 20  73 70 65 65 64 20 75 6e  |the new speed un|
00071600  74 69 6c 20 69 74 20 69  73 20 73 74 6f 70 70 65  |til it is stoppe|
00071610  64 2c 20 6f 72 20 27 46  27 20 65 66 66 65 63 74  |d, or 'F' effect|
00071620  73 20 61 72 65 20 65 6e  61 62 6c 65 64 20 61 67  |s are enabled ag|
00071630  61 69 6e 2e 0a 0a 54 68  65 20 63 75 72 72 65 6e  |ain...The curren|
00071640  74 20 73 70 65 65 64 20  61 6e 64 20 74 65 6d 70  |t speed and temp|
00071650  6f 20 63 61 6e 20 62 65  20 72 65 61 64 20 75 73  |o can be read us|
00071660  69 6e 67 20 3c 51 54 4d  5f 52 65 61 64 53 70 65  |ing <QTM_ReadSpe|
00071670  65 64 3e 2e 0a 0a 56 20  66 6c 61 67 20 73 65 74  |ed>...V flag set|
00071680  20 69 66 20 6e 6f 20 73  6f 6e 67 20 6c 6f 61 64  | if no song load|
00071690  65 64 20 6f 72 20 74 68  65 20 6e 65 77 20 73 70  |ed or the new sp|
000716a0  65 65 64 2f 74 65 6d 70  6f 20 69 73 20 6f 75 74  |eed/tempo is out|
000716b0  20 6f 66 20 72 61 6e 67  65 2e 0a 00 44 41 54 41  | of range...DATA|
000716c0  71 01 00 00 53 74 61 6e  64 61 72 64 20 50 72 6f  |q...Standard Pro|
000716d0  54 72 61 63 6b 65 72 20  63 6f 6d 6d 61 6e 64 73  |Tracker commands|
000716e0  2f 65 66 66 65 63 74 73  0a 23 54 61 62 6c 65 20  |/effects.#Table |
000716f0  43 6f 6c 75 6d 6e 73 20  32 0a 30 30 20 41 72 70  |Columns 2.00 Arp|
00071700  65 67 69 6f 0a 30 31 20  50 69 74 63 68 20 73 6c  |egio.01 Pitch sl|
00071710  69 64 65 20 75 70 0a 30  32 20 50 69 74 63 68 20  |ide up.02 Pitch |
00071720  73 6c 69 64 65 20 64 6f  77 6e 0a 30 33 20 54 6f  |slide down.03 To|
00071730  6e 65 20 70 6f 72 74 61  6d 65 6e 74 6f 0a 30 34  |ne portamento.04|
00071740  20 56 69 62 72 61 74 6f  0a 30 35 20 54 6f 6e 65  | Vibrato.05 Tone|
00071750  20 70 6f 72 74 61 6d 65  6e 74 6f 20 2b 20 76 6f  | portamento + vo|
00071760  6c 75 6d 65 20 73 6c 69  64 65 0a 30 36 20 56 69  |lume slide.06 Vi|
00071770  62 72 61 74 6f 20 2b 20  76 6f 6c 75 6d 65 20 73  |brato + volume s|
00071780  6c 69 64 65 0a 30 37 20  54 72 65 6d 65 6c 6f 0a  |lide.07 Tremelo.|
00071790  30 38 20 5c 3c 6e 6f 74  20 75 73 65 64 3e 0a 30  |08 \<not used>.0|
000717a0  39 20 53 65 74 20 73 61  6d 70 6c 65 20 6f 66 66  |9 Set sample off|
000717b0  73 65 74 0a 30 41 20 56  6f 6c 75 6d 65 20 73 6c  |set.0A Volume sl|
000717c0  69 64 65 0a 30 42 20 4a  75 6d 70 20 74 6f 20 73  |ide.0B Jump to s|
000717d0  65 71 75 65 6e 63 65 0a  30 43 20 53 65 74 20 76  |equence.0C Set v|
000717e0  6f 6c 75 6d 65 0a 30 44  20 50 61 74 74 65 72 6e  |olume.0D Pattern|
000717f0  20 62 72 65 61 6b 0a 30  45 20 56 61 72 69 6f 75  | break.0E Variou|
00071800  73 2c 20 73 65 65 20 74  61 62 6c 65 20 32 0a 30  |s, see table 2.0|
00071810  46 20 53 65 74 20 73 70  65 65 64 20 2f 20 74 65  |F Set speed / te|
00071820  6d 70 6f 0a 23 45 6e 64  54 61 62 6c 65 00 00 00  |mpo.#EndTable...|
00071830  44 41 54 41 ad 01 00 00  27 45 27 20 63 6f 6d 6d  |DATA....'E' comm|
00071840  61 6e 64 73 2f 65 66 66  65 63 74 73 0a 23 54 61  |ands/effects.#Ta|
00071850  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 45 30  |ble Columns 2.E0|
00071860  20 53 65 74 20 66 69 6c  74 65 72 20 2a 0a 45 31  | Set filter *.E1|
00071870  20 46 69 6e 65 20 70 69  74 63 68 20 73 6c 69 64  | Fine pitch slid|
00071880  65 20 75 70 0a 45 32 20  46 69 6e 65 20 70 69 74  |e up.E2 Fine pit|
00071890  63 68 20 73 6c 69 64 65  20 64 6f 77 6e 0a 45 33  |ch slide down.E3|
000718a0  20 47 6c 69 73 73 61 6e  64 6f 20 63 6f 6e 74 72  | Glissando contr|
000718b0  6f 6c 0a 45 34 20 53 65  74 20 76 69 62 72 61 74  |ol.E4 Set vibrat|
000718c0  6f 20 77 61 76 65 66 6f  72 6d 0a 45 35 20 53 65  |o waveform.E5 Se|
000718d0  74 20 66 69 6e 65 20 74  75 6e 69 6e 67 0a 45 36  |t fine tuning.E6|
000718e0  20 50 61 74 74 65 72 6e  20 6c 6f 6f 70 0a 45 37  | Pattern loop.E7|
000718f0  20 53 65 74 20 74 72 65  6d 65 6c 6f 20 77 61 76  | Set tremelo wav|
00071900  65 66 6f 72 6d 0a 45 38  20 5c 3c 6e 6f 74 20 75  |eform.E8 \<not u|
00071910  73 65 64 3e 0a 45 39 20  52 65 74 72 69 67 20 6e  |sed>.E9 Retrig n|
00071920  6f 74 65 0a 45 41 20 46  69 6e 65 20 76 6f 6c 75  |ote.EA Fine volu|
00071930  6d 65 20 73 6c 69 64 65  20 75 70 0a 45 42 20 46  |me slide up.EB F|
00071940  69 6e 65 20 76 6f 6c 75  6d 65 20 73 6c 69 64 65  |ine volume slide|
00071950  20 64 6f 77 6e 0a 45 43  20 4e 6f 74 65 20 63 75  | down.EC Note cu|
00071960  74 0a 45 44 20 4e 6f 74  65 20 64 65 6c 61 79 0a  |t.ED Note delay.|
00071970  45 45 20 50 61 74 74 65  72 6e 20 64 65 6c 61 79  |EE Pattern delay|
00071980  0a 45 46 20 49 6e 76 65  72 74 20 6c 6f 6f 70 0a  |.EF Invert loop.|
00071990  23 45 6e 64 54 61 62 6c  65 0a 0a 2a 20 54 68 65  |#EndTable..* The|
000719a0  20 27 53 65 74 20 66 69  6c 74 65 72 27 20 63 6f  | 'Set filter' co|
000719b0  6d 6d 61 6e 64 20 63 61  6e 27 74 20 62 65 20 69  |mmand can't be i|
000719c0  6d 70 6c 65 6d 65 6e 74  65 64 20 6f 6e 20 74 68  |mplemented on th|
000719d0  65 20 41 72 63 68 69 6d  65 64 65 73 2e 00 00 00  |e Archimedes....|
000719e0  44 49 52 24 2c 00 00 00  2c 00 00 00 0c 1a 07 00  |DIR$,...,.......|
000719f0  46 fd ff ff d0 d1 85 4d  cf 00 00 00 13 00 00 00  |F......M........|
00071a00  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00071a10  cf 00 00 00 41 72 63 46  53 4d 65 6d 4d 61 6e 0a  |....ArcFSMemMan.|
00071a20  23 50 61 72 65 6e 74 20  21 52 6f 6f 74 0a 23 50  |#Parent !Root.#P|
00071a30  72 65 66 69 78 20 41 72  63 46 53 4d 65 6d 4d 61  |refix ArcFSMemMa|
00071a40  6e 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |n_.#Table Column|
00071a50  73 20 32 0a 43 6c 61 69  6d 57 6f 72 6b 73 70 61  |s 2.ClaimWorkspa|
00071a60  63 65 0a 52 65 73 69 7a  65 57 6f 72 6b 73 70 61  |ce.ResizeWorkspa|
00071a70  63 65 0a 52 65 6c 65 61  73 65 57 6f 72 6b 73 70  |ce.ReleaseWorksp|
00071a80  61 63 65 0a 43 6c 61 69  6d 46 69 6c 65 43 61 63  |ace.ClaimFileCac|
00071a90  68 65 0a 52 65 73 69 7a  65 46 69 6c 65 43 61 63  |he.ResizeFileCac|
00071aa0  68 65 0a 52 65 6c 65 61  73 65 46 69 6c 65 43 61  |he.ReleaseFileCa|
00071ab0  63 68 65 0a 49 6e 69 74  0a 46 69 6e 61 6c 0a 53  |che.Init.Final.S|
00071ac0  6c 69 64 65 0a 4c 6f 6f  6b 75 70 42 6c 6f 63 6b  |lide.LookupBlock|
00071ad0  0a 23 45 6e 64 54 61 62  6c 65 0a 00 44 49 52 24  |.#EndTable..DIR$|
00071ae0  10 01 00 00 10 01 00 00  ec 1b 07 00 46 fd ff ff  |............F...|
00071af0  28 e5 87 4d 8c 00 00 00  13 00 00 00 00 00 00 00  |(..M............|
00071b00  21 52 6f 6f 74 00 00 00  78 1c 07 00 46 ff ff ff  |!Root...x...F...|
00071b10  00 bb 98 a5 a2 01 00 00  13 00 00 00 00 00 00 00  |................|
00071b20  4d 65 6e 75 00 00 00 00  1c 1e 07 00 46 ff ff ff  |Menu........F...|
00071b30  e2 f3 86 4d 1e 00 00 00  13 00 00 00 00 00 00 00  |...M............|
00071b40  45 6e 64 4d 65 6e 75 00  3c 1e 07 00 46 ff ff ff  |EndMenu.<...F...|
00071b50  01 ff 86 4d 1e 00 00 00  13 00 00 00 00 00 00 00  |...M............|
00071b60  4f 70 74 69 6f 6e 00 00  5c 1e 07 00 46 ff ff ff  |Option..\...F...|
00071b70  16 04 87 4d 1e 00 00 00  13 00 00 00 00 00 00 00  |...M............|
00071b80  44 61 73 68 00 00 00 00  7c 1e 07 00 46 ff ff ff  |Dash....|...F...|
00071b90  6d 05 87 4d 1e 00 00 00  13 00 00 00 00 00 00 00  |m..M............|
00071ba0  43 6f 6d 6d 61 6e 64 00  9c 1e 07 00 46 ff ff ff  |Command.....F...|
00071bb0  70 5f 87 4d 64 01 00 00  13 00 00 00 00 00 00 00  |p_.Md...........|
00071bc0  45 6e 75 6d 65 72 61 74  65 00 00 00 00 20 07 00  |Enumerate.... ..|
00071bd0  46 ff ff ff 30 80 87 4d  9c 01 00 00 13 00 00 00  |F...0..M........|
00071be0  00 00 00 00 4d 65 6d 6f  72 79 00 00 44 41 54 41  |....Memory..DATA|
00071bf0  8c 00 00 00 44 69 72 65  63 74 6f 72 0a 23 50 61  |....Director.#Pa|
00071c00  72 65 6e 74 20 21 52 6f  6f 74 0a 23 50 72 65 66  |rent !Root.#Pref|
00071c10  69 78 20 44 69 72 65 63  74 6f 72 5f 0a 23 54 61  |ix Director_.#Ta|
00071c20  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 3c 4d  |ble Columns 2.<M|
00071c30  65 6e 75 3e 0a 3c 45 6e  64 4d 65 6e 75 3e 0a 3c  |enu>.<EndMenu>.<|
00071c40  4f 70 74 69 6f 6e 3e 0a  3c 44 61 73 68 3e 0a 3c  |Option>.<Dash>.<|
00071c50  43 6f 6d 6d 61 6e 64 3e  0a 3c 45 6e 75 6d 65 72  |Command>.<Enumer|
00071c60  61 74 65 3e 0a 3c 4d 65  6d 6f 72 79 3e 0a 23 45  |ate>.<Memory>.#E|
00071c70  6e 64 54 61 62 6c 65 0a  44 41 54 41 a2 01 00 00  |ndTable.DATA....|
00071c80  44 69 72 65 63 74 6f 72  20 63 6f 6d 6d 61 6e 64  |Director command|
00071c90  20 53 57 49 20 65 71 75  69 76 69 6c 65 6e 74 73  | SWI equivilents|
00071ca0  0a 23 50 61 72 65 6e 74  20 44 69 72 65 63 74 6f  |.#Parent Directo|
00071cb0  72 5f 0a 3d 3e 09 52 30  20 3d 20 70 6f 69 6e 74  |r_.=>.R0 = point|
00071cc0  65 72 20 74 6f 20 6c 69  6e 65 0a 0a 54 68 65 20  |er to line..The |
00071cd0  53 57 49 73 20 3a 0a 23  49 6e 64 65 6e 74 20 32  |SWIs :.#Indent 2|
00071ce0  0a 3c 44 69 72 65 63 74  6f 72 5f 4d 65 6e 75 3e  |.<Director_Menu>|
00071cf0  0a 3c 44 69 72 65 63 74  6f 72 5f 45 6e 64 4d 65  |.<Director_EndMe|
00071d00  6e 75 3e 0a 3c 44 69 72  65 63 74 6f 72 5f 4f 70  |nu>.<Director_Op|
00071d10  74 69 6f 6e 3e 0a 3c 44  69 72 65 63 74 6f 72 5f  |tion>.<Director_|
00071d20  44 61 73 68 3e 0a 3c 44  69 72 65 63 74 6f 72 5f  |Dash>.<Director_|
00071d30  43 6f 6d 6d 61 6e 64 3e  0a 23 49 6e 64 65 6e 74  |Command>.#Indent|
00071d40  0a 0a 61 72 65 20 64 69  72 65 63 74 6c 79 20 65  |..are directly e|
00071d50  71 75 69 76 69 6c 65 6e  74 20 74 6f 20 74 68 65  |quivilent to the|
00071d60  69 72 20 4f 53 43 4c 49  20 63 6f 6d 6d 61 6e 64  |ir OSCLI command|
00071d70  20 63 6f 75 6e 74 65 72  70 61 72 74 73 2e 0a 0a  | counterparts...|
00071d80  54 68 65 73 65 20 61 72  65 20 64 65 66 69 6e 65  |These are define|
00071d90  64 20 62 65 63 61 75 73  65 20 70 72 6f 63 65 73  |d because proces|
00071da0  73 69 6e 67 20 73 74 61  72 20 63 6f 6d 6d 61 6e  |sing star comman|
00071db0  64 73 20 69 73 20 76 65  72 79 20 73 6c 6f 77 20  |ds is very slow |
00071dc0  61 6e 64 20 69 6e 20 64  79 6e 61 6d 69 63 20 6d  |and in dynamic m|
00071dd0  65 6e 75 73 20 65 73 70  65 63 69 61 6c 6c 79 20  |enus especially |
00071de0  69 74 20 69 73 20 69 6d  70 6f 72 74 61 6e 74 20  |it is important |
00071df0  74 68 61 74 20 69 74 65  6d 73 20 63 61 6e 20 62  |that items can b|
00071e00  65 20 61 64 64 65 64 20  74 6f 20 6d 65 6e 75 73  |e added to menus|
00071e10  20 71 75 69 63 6b 6c 79  2e 0a 00 00 44 41 54 41  | quickly....DATA|
00071e20  1e 00 00 00 23 49 6e 63  6c 75 64 65 20 44 69 72  |....#Include Dir|
00071e30  65 63 74 6f 72 5f 4d 65  6e 75 00 00 44 41 54 41  |ector_Menu..DATA|
00071e40  1e 00 00 00 23 49 6e 63  6c 75 64 65 20 44 69 72  |....#Include Dir|
00071e50  65 63 74 6f 72 5f 4d 65  6e 75 00 00 44 41 54 41  |ector_Menu..DATA|
00071e60  1e 00 00 00 23 49 6e 63  6c 75 64 65 20 44 69 72  |....#Include Dir|
00071e70  65 63 74 6f 72 5f 4d 65  6e 75 00 00 44 41 54 41  |ector_Menu..DATA|
00071e80  1e 00 00 00 23 49 6e 63  6c 75 64 65 20 44 69 72  |....#Include Dir|
00071e90  65 63 74 6f 72 5f 4d 65  6e 75 00 00 44 41 54 41  |ector_Menu..DATA|
00071ea0  64 01 00 00 44 69 72 65  63 74 6f 72 5f 45 6e 75  |d...Director_Enu|
00071eb0  6d 65 72 61 74 65 20 20  28 26 34 41 31 30 35 29  |merate  (&4A105)|
00071ec0  0a 45 6e 75 6d 65 72 61  74 65 73 20 6c 69 73 74  |.Enumerates list|
00071ed0  73 20 68 65 6c 64 20 62  79 20 64 69 72 65 63 74  |s held by direct|
00071ee0  6f 72 0a 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |or..=>.R0 =.poin|
00071ef0  74 65 72 20 74 6f 20 62  6c 6f 63 6b 20 6f 72 20  |ter to block or |
00071f00  74 6f 20 73 74 61 72 74  20 75 73 65 20 3a 0a 09  |to start use :..|
00071f10  20 09 20 20 30 20 3d 20  73 74 6f 72 65 64 20 6d  | .  0 = stored m|
00071f20  65 6e 75 73 0a 09 20 09  20 20 31 20 3d 20 64 69  |enus.. .  1 = di|
00071f30  73 70 6c 61 79 65 64 20  6d 65 6e 75 73 0a 09 20  |splayed menus.. |
00071f40  09 20 20 32 20 3d 20 69  63 6f 6e 73 0a 09 20 09  |.  2 = icons.. .|
00071f50  20 20 33 20 3d 20 66 69  6c 74 65 72 73 0a 0a 3c  |  3 = filters..<|
00071f60  3d 09 52 30 20 3d 20 6e  65 77 20 70 6f 69 6e 74  |=.R0 = new point|
00071f70  65 72 20 74 6f 20 62 6c  6f 63 6b 20 28 30 20 66  |er to block (0 f|
00071f80  6f 72 20 65 6e 64 29 0a  09 52 31 20 3d 20 70 6f  |or end)..R1 = po|
00071f90  69 6e 74 65 72 20 74 6f  20 6e 61 6d 65 20 6f 66  |inter to name of|
00071fa0  20 62 6c 6f 63 6b 0a 0a  44 79 6e 61 6d 69 63 20  | block..Dynamic |
00071fb0  6d 65 6e 75 73 20 74 6f  20 76 69 65 77 20 74 68  |menus to view th|
00071fc0  65 73 65 20 6c 69 73 74  73 20 61 6e 64 20 61 63  |ese lists and ac|
00071fd0  74 20 6f 6e 20 74 68 65  6d 20 63 61 6e 20 62 65  |t on them can be|
00071fe0  20 66 6f 75 6e 64 20 6f  6e 20 44 69 72 65 63 74  | found on Direct|
00071ff0  6f 72 27 73 20 6d 61 69  6e 20 6d 65 6e 75 2e 0a  |or's main menu..|
00072000  44 41 54 41 9c 01 00 00  44 69 72 65 63 74 6f 72  |DATA....Director|
00072010  5f 4d 65 6d 6f 72 79 20  20 28 26 34 41 31 30 36  |_Memory  (&4A106|
00072020  29 0a 52 65 74 75 72 6e  73 20 74 68 65 20 6d 65  |).Returns the me|
00072030  6d 6f 72 79 20 75 73 65  64 20 62 79 20 64 69 72  |mory used by dir|
00072040  65 63 74 6f 72 0a 0a 3c  3d 09 52 30 20 3d 09 6d  |ector..<=.R0 =.m|
00072050  6f 64 75 6c 65 20 73 69  7a 65 20 28 63 6f 6e 73  |odule size (cons|
00072060  74 61 6e 74 29 0a 09 52  31 20 3d 09 6d 61 69 6e  |tant)..R1 =.main|
00072070  20 77 6f 72 6b 73 70 61  63 65 20 73 69 7a 65 20  | workspace size |
00072080  28 63 6f 6e 73 74 61 6e  74 29 0a 09 52 32 20 3d  |(constant)..R2 =|
00072090  09 74 6f 74 61 6c 20 73  69 7a 65 20 6f 66 20 61  |.total size of a|
000720a0  6c 6c 20 61 6c 6c 6f 63  61 74 65 64 20 62 6c 6f  |ll allocated blo|
000720b0  63 6b 73 0a 09 52 33 20  3d 09 6e 75 6d 62 65 72  |cks..R3 =.number|
000720c0  20 6f 66 20 62 6c 6f 63  6b 73 20 61 6c 6c 6f 63  | of blocks alloc|
000720d0  61 74 65 64 0a 09 52 34  20 3d 09 64 79 6e 61 6d  |ated..R4 =.dynam|
000720e0  69 63 20 61 72 65 61 20  73 69 7a 65 20 28 30 20  |ic area size (0 |
000720f0  66 6f 72 20 6e 6f 20 64  79 6e 61 6d 69 63 20 61  |for no dynamic a|
00072100  72 65 61 29 0a 09 52 35  20 3d 09 62 79 74 65 73  |rea)..R5 =.bytes|
00072110  20 66 72 65 65 20 69 6e  20 64 79 6e 61 6d 69 63  | free in dynamic|
00072120  20 61 72 65 61 0a 09 52  36 20 3d 09 6c 61 72 67  | area..R6 =.larg|
00072130  65 73 74 20 62 6c 6f 63  6b 20 69 6e 20 64 79 6e  |est block in dyn|
00072140  61 6d 69 63 20 61 72 65  61 0a 0a 41 20 64 79 6e  |amic area..A dyn|
00072150  61 6d 69 63 20 6d 65 6e  75 20 74 6f 20 64 69 73  |amic menu to dis|
00072160  70 6c 61 79 20 74 68 69  73 20 69 6e 66 6f 72 6d  |play this inform|
00072170  61 74 69 6f 6e 20 63 61  6e 20 62 65 20 66 6f 75  |ation can be fou|
00072180  6e 64 20 6f 6e 20 44 69  72 65 63 74 6f 72 27 73  |nd on Director's|
00072190  20 6d 61 69 6e 20 6d 65  6e 75 2e 0a 44 49 52 24  | main menu..DIR$|
000721a0  2c 00 00 00 2c 00 00 00  c8 21 07 00 46 fd ff ff  |,...,....!..F...|
000721b0  94 9b bf 55 c4 00 00 00  13 00 00 00 00 00 00 00  |...U............|
000721c0  21 52 6f 6f 74 00 00 00  44 41 54 41 c4 00 00 00  |!Root...DATA....|
000721d0  52 65 6d 6f 74 65 50 72  69 6e 74 65 72 53 75 70  |RemotePrinterSup|
000721e0  70 6f 72 74 0a 23 50 61  72 65 6e 74 20 21 52 6f  |port.#Parent !Ro|
000721f0  6f 74 0a 23 50 72 65 66  69 78 20 52 65 6d 6f 74  |ot.#Prefix Remot|
00072200  65 50 72 69 6e 74 65 72  53 75 70 70 6f 72 74 5f  |ePrinterSupport_|
00072210  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
00072220  32 0a 52 65 61 64 50 6f  6c 6c 77 6f 72 64 4c 6f  |2.ReadPollwordLo|
00072230  63 61 74 69 6f 6e 0a 47  65 74 4e 65 78 74 45 76  |cation.GetNextEv|
00072240  65 6e 74 0a 52 65 61 64  55 6e 69 71 75 65 41 64  |ent.ReadUniqueAd|
00072250  64 72 65 73 73 0a 45 6e  61 62 6c 65 0a 44 69 73  |dress.Enable.Dis|
00072260  61 62 6c 65 0a 45 6e 61  62 6c 65 55 70 63 61 6c  |able.EnableUpcal|
00072270  6c 73 0a 44 69 73 61 62  6c 65 55 70 63 61 6c 6c  |ls.DisableUpcall|
00072280  73 0a 23 45 6e 64 54 61  62 6c 65 0a 44 41 54 41  |s.#EndTable.DATA|
00072290  59 00 00 00 4e 65 77 6c  79 20 61 64 64 65 64 20  |Y...Newly added |
000722a0  53 57 49 20 63 61 6c 6c  73 0a 23 50 61 72 65 6e  |SWI calls.#Paren|
000722b0  74 20 21 52 6f 6f 74 0a  23 50 6f 73 74 66 69 78  |t !Root.#Postfix|
000722c0  20 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  | _.#Table Column|
000722d0  73 20 33 0a 3c 47 64 62  6d 3e 0a 23 45 6e 64 54  |s 3.<Gdbm>.#EndT|
000722e0  61 62 6c 65 0a 00 00 00  44 49 52 24 2c 00 00 00  |able....DIR$,...|
000722f0  2c 00 00 00 14 23 07 00  46 fd ff ff fd b3 c4 55  |,....#..F......U|
00072300  05 01 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00072310  74 00 00 00 44 41 54 41  05 01 00 00 50 6f 63 6b  |t...DATA....Pock|
00072320  65 74 46 53 0a 23 50 61  72 65 6e 74 20 21 52 6f  |etFS.#Parent !Ro|
00072330  6f 74 0a 23 50 72 65 66  69 78 20 50 6f 63 6b 65  |ot.#Prefix Pocke|
00072340  74 46 53 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |tFS_.#Table Colu|
00072350  6d 6e 73 20 32 0a 54 69  63 6b 65 72 0a 53 65 72  |mns 2.Ticker.Ser|
00072360  69 61 6c 4f 70 65 6e 0a  53 65 72 69 61 6c 43 6c  |ialOpen.SerialCl|
00072370  6f 73 65 0a 53 65 72 69  61 6c 53 65 74 44 54 52  |ose.SerialSetDTR|
00072380  0a 53 65 72 69 61 6c 53  65 74 52 54 53 0a 53 65  |.SerialSetRTS.Se|
00072390  72 69 61 6c 50 72 69 6d  65 54 58 0a 47 65 74 43  |rialPrimeTX.GetC|
000723a0  61 63 68 65 4d 65 6d 0a  46 72 65 65 43 61 63 68  |acheMem.FreeCach|
000723b0  65 4d 65 6d 0a 43 61 63  68 65 49 6e 69 74 0a 43  |eMem.CacheInit.C|
000723c0  61 63 68 65 46 69 6e 61  6c 0a 44 65 73 63 72 69  |acheFinal.Descri|
000723d0  62 65 43 61 63 68 65 0a  43 61 63 68 65 42 6c 6f  |beCache.CacheBlo|
000723e0  63 6b 0a 46 69 6e 64 43  61 63 68 65 45 6e 74 72  |ck.FindCacheEntr|
000723f0  79 0a 53 74 61 74 75 73  0a 44 69 73 6d 6f 75 6e  |y.Status.Dismoun|
00072400  74 0a 53 6f 66 74 44 69  73 6d 6f 75 6e 74 0a 23  |t.SoftDismount.#|
00072410  45 6e 64 54 61 62 6c 65  0a 00 00 00 44 49 52 24  |EndTable....DIR$|
00072420  2c 00 00 00 2c 00 00 00  48 24 07 00 46 fd ff ff  |,...,...H$..F...|
00072430  6f f5 c4 55 45 01 00 00  13 00 00 00 00 00 00 00  |o..UE...........|
00072440  21 52 6f 6f 74 00 00 00  44 41 54 41 45 01 00 00  |!Root...DATAE...|
00072450  50 6f 63 6b 65 74 4c 69  6e 6b 0a 23 50 61 72 65  |PocketLink.#Pare|
00072460  6e 74 20 21 52 6f 6f 74  0a 23 50 72 65 66 69 78  |nt !Root.#Prefix|
00072470  20 50 6f 63 6b 65 74 4c  69 6e 6b 5f 0a 23 54 61  | PocketLink_.#Ta|
00072480  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 33 0a 53 74  |ble Columns 3.St|
00072490  61 72 74 4c 69 6e 6b 0a  43 6c 6f 73 65 4c 69 6e  |artLink.CloseLin|
000724a0  6b 0a 70 5f 6f 70 65 6e  0a 70 5f 63 6c 6f 73 65  |k.p_open.p_close|
000724b0  0a 70 5f 72 65 61 64 0a  70 5f 77 72 69 74 65 0a  |.p_read.p_write.|
000724c0  70 5f 69 6f 77 0a 45 6e  71 75 69 72 65 0a 45 72  |p_iow.Enquire.Er|
000724d0  72 6f 72 43 6f 6e 76 0a  50 61 6e 69 63 43 6f 6e  |rorConv.PanicCon|
000724e0  76 0a 70 5f 66 70 61 72  73 65 0a 70 5f 63 68 64  |v.p_fparse.p_chd|
000724f0  69 72 0a 70 5f 64 65 6c  65 74 65 0a 70 5f 72 65  |ir.p_delete.p_re|
00072500  6e 61 6d 65 0a 70 5f 6d  6b 64 69 72 0a 70 5f 73  |name.p_mkdir.p_s|
00072510  66 73 74 61 74 0a 70 5f  66 64 61 74 65 0a 70 5f  |fstat.p_fdate.p_|
00072520  74 65 73 74 70 74 68 0a  70 5f 66 69 6e 66 6f 0a  |testpth.p_finfo.|
00072530  70 5f 64 69 6e 66 6f 0a  70 5f 6e 69 6e 66 6f 0a  |p_dinfo.p_ninfo.|
00072540  44 61 74 65 54 6f 50 6f  63 6b 65 74 0a 5a 61 70  |DateToPocket.Zap|
00072550  4c 69 6e 6b 0a 44 61 74  65 46 72 6f 6d 50 6f 63  |Link.DateFromPoc|
00072560  6b 65 74 0a 4e 61 6d 65  46 72 6f 6d 48 61 6e 64  |ket.NameFromHand|
00072570  6c 65 0a 70 5f 73 65 65  6b 0a 70 5f 6c 6f 63 63  |le.p_seek.p_locc|
00072580  68 67 0a 23 45 6e 64 54  61 62 6c 65 0a 00 00 00  |hg.#EndTable....|
00072590  44 41 54 41 f7 01 00 00  43 6f 6e 74 72 69 62 75  |DATA....Contribu|
000725a0  74 6f 72 73 0a 3c 47 75  74 74 6f 72 6d 20 56 69  |tors.<Guttorm Vi|
000725b0  6b 3d 3e 46 69 6c 65 74  79 70 65 73 3a 41 75 74  |k=>Filetypes:Aut|
000725c0  68 6f 72 73 5f 47 75 74  74 6f 72 6d 56 69 6b 3e  |hors_GuttormVik>|
000725d0  20 28 6f 72 69 67 69 6e  61 6c 20 76 65 72 73 69  | (original versi|
000725e0  6f 6e 29 2c 20 45 64 75  61 72 64 20 50 66 61 72  |on), Eduard Pfar|
000725f0  72 2c 20 44 69 63 6b 20  41 6c 73 74 65 69 6e 2c  |r, Dick Alstein,|
00072600  20 49 61 69 6e 20 54 72  75 73 6b 65 74 74 2c 20  | Iain Truskett, |
00072610  3c 4a 75 73 74 69 6e 20  46 6c 65 74 63 68 65 72  |<Justin Fletcher|
00072620  3d 3e 46 69 6c 65 74 79  70 65 73 3a 41 75 74 68  |=>Filetypes:Auth|
00072630  6f 72 73 5f 4a 75 73 74  69 6e 46 6c 65 74 63 68  |ors_JustinFletch|
00072640  65 72 3e 2c 20 61 6e 64  20 3c 44 61 76 65 20 54  |er>, and <Dave T|
00072650  68 6f 6d 61 73 3d 3e 46  69 6c 65 74 79 70 65 73  |homas=>Filetypes|
00072660  3a 41 75 74 68 6f 72 73  5f 44 61 76 65 54 68 6f  |:Authors_DaveTho|
00072670  6d 61 73 3e 2e 0a 0a 49  66 20 79 6f 75 20 77 61  |mas>...If you wa|
00072680  6e 74 20 74 6f 20 63 6f  6e 74 72 69 62 75 74 65  |nt to contribute|
00072690  20 73 6f 6d 65 74 68 69  6e 67 20 79 6f 75 72 73  | something yours|
000726a0  65 6c 66 2c 20 74 68 65  6e 20 73 65 6e 64 20 74  |elf, then send t|
000726b0  68 65 20 70 61 67 65 73  20 28 61 73 20 61 20 4d  |he pages (as a M|
000726c0  61 6e 75 61 6c 20 77 69  74 68 20 6f 6e 6c 79 20  |anual with only |
000726d0  79 6f 75 72 20 6e 65 77  20 70 61 67 65 73 20 69  |your new pages i|
000726e0  6e 29 20 74 6f 20 7b 2a  7d 6d 61 69 6c 74 6f 3a  |n) to {*}mailto:|
000726f0  2f 2f 67 75 74 74 6f 72  6d 2e 76 69 6b 40 65 75  |//guttorm.vik@eu|
00072700  6e 65 74 2e 6e 6f 7b 2a  7d 2e 20 54 72 79 20 74  |net.no{*}. Try t|
00072710  6f 20 77 72 69 74 65 20  74 68 65 6d 20 6d 6f 72  |o write them mor|
00072720  65 20 6f 72 20 6c 65 73  73 20 69 6e 20 74 68 65  |e or less in the|
00072730  20 73 61 6d 65 20 73 74  79 6c 65 20 61 73 20 74  | same style as t|
00072740  68 65 20 72 65 73 74 2e  20 7b 2a 7d 44 6f 6e 27  |he rest. {*}Don'|
00072750  74 20 63 6f 70 79 20 74  68 65 20 50 52 4d 7b 2a  |t copy the PRM{*|
00072760  7d 2e 20 49 20 77 69 6c  6c 20 65 64 69 74 20 61  |}. I will edit a|
00072770  6e 64 20 72 65 6a 65 63  74 20 61 73 20 49 20 73  |nd reject as I s|
00072780  65 65 20 66 69 74 2e 00  44 49 52 24 d4 01 00 00  |ee fit..DIR$....|
00072790  d4 01 00 00 5c 29 07 00  46 fd ff ff a7 4d 56 f5  |....\)..F....MV.|
000727a0  f4 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
000727b0  74 00 00 00 50 2a 07 00  46 ff ff ff d0 05 20 a5  |t...P*..F..... .|
000727c0  6d 02 00 00 13 00 00 00  00 00 00 00 49 6e 66 6f  |m...........Info|
000727d0  00 00 00 00 c0 2c 07 00  46 ff ff ff 0e 0a 20 a5  |.....,..F..... .|
000727e0  d6 02 00 00 13 00 00 00  00 00 00 00 46 69 6c 65  |............File|
000727f0  49 6e 66 6f 00 00 00 00  98 2f 07 00 46 ff ff ff  |Info...../..F...|
00072800  ea de 00 f9 fa 03 00 00  13 00 00 00 00 00 00 00  |................|
00072810  50 6c 6f 74 53 63 61 6c  65 64 00 00 94 33 07 00  |PlotScaled...3..|
00072820  46 ff ff ff 61 67 1f a5  d6 01 00 00 13 00 00 00  |F...ag..........|
00072830  00 00 00 00 50 6c 6f 74  46 69 6c 65 53 63 61 6c  |....PlotFileScal|
00072840  65 64 00 00 6c 35 07 00  46 ff ff ff 7a 79 7f f5  |ed..l5..F...zy..|
00072850  12 02 00 00 13 00 00 00  00 00 00 00 70 6c 6f 74  |............plot|
00072860  74 72 61 6e 73 66 6f 72  6d 65 64 00 80 37 07 00  |transformed..7..|
00072870  46 ff ff ff 75 68 1f a5  2d 02 00 00 13 00 00 00  |F...uh..-.......|
00072880  00 00 00 00 50 6c 6f 74  46 69 6c 65 54 72 61 6e  |....PlotFileTran|
00072890  73 66 6f 72 6d 65 64 00  b0 39 07 00 46 ff ff ff  |sformed..9..F...|
000728a0  86 06 0f fb 0f 02 00 00  13 00 00 00 00 00 00 00  |................|
000728b0  70 64 72 69 76 65 72 69  6e 74 65 72 63 65 70 74  |pdriverintercept|
000728c0  00 00 00 00 c0 3b 07 00  46 fd ff ff f6 ed 1f a5  |.....;..F.......|
000728d0  69 00 00 00 13 00 00 00  00 00 00 00 69 6e 66 6f  |i...........info|
000728e0  5f 6f 70 66 6c 61 67 73  00 00 00 00 2c 3c 07 00  |_opflags....,<..|
000728f0  46 fd ff ff 75 c0 1f a5  ce 00 00 00 13 00 00 00  |F...u...........|
00072900  00 00 00 00 70 6c 6f 74  66 6c 61 67 73 00 00 00  |....plotflags...|
00072910  fc 3c 07 00 46 fd ff ff  57 db 1f a5 13 01 00 00  |.<..F...W.......|
00072920  13 00 00 00 00 00 00 00  74 72 61 6e 73 66 6c 61  |........transfla|
00072930  67 73 00 00 10 3e 07 00  46 fd ff ff 8d 26 20 a5  |gs...>..F....& .|
00072940  c8 00 00 00 13 00 00 00  00 00 00 00 69 6e 66 6f  |............info|
00072950  5f 69 6e 66 6f 66 6c 61  67 73 00 00 44 41 54 41  |_infoflags..DATA|
00072960  f4 00 00 00 4a 50 45 47  0a 23 50 61 72 65 6e 74  |....JPEG.#Parent|
00072970  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 4a  | !Root.#Prefix J|
00072980  50 45 47 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |PEG_.#Table Colu|
00072990  6d 6e 73 20 32 0a 3c 49  6e 66 6f 3e 0a 3c 46 69  |mns 2.<Info>.<Fi|
000729a0  6c 65 49 6e 66 6f 3e 0a  3c 50 6c 6f 74 53 63 61  |leInfo>.<PlotSca|
000729b0  6c 65 64 3e 0a 3c 50 6c  6f 74 46 69 6c 65 53 63  |led>.<PlotFileSc|
000729c0  61 6c 65 64 3e 0a 3c 50  6c 6f 74 54 72 61 6e 73  |aled>.<PlotTrans|
000729d0  66 6f 72 6d 65 64 3e 0a  3c 50 6c 6f 74 46 69 6c  |formed>.<PlotFil|
000729e0  65 54 72 61 6e 73 66 6f  72 6d 65 64 3e 0a 3c 50  |eTransformed>.<P|
000729f0  44 72 69 76 65 72 49 6e  74 65 72 63 65 70 74 3e  |DriverIntercept>|
00072a00  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 54 68 65 73  |.#EndTable..Thes|
00072a10  65 20 63 61 6c 6c 73 20  61 72 65 20 6f 6e 6c 79  |e calls are only|
00072a20  20 61 76 61 69 6c 61 62  6c 65 20 77 68 65 6e 20  | available when |
00072a30  53 70 72 69 74 65 45 78  74 65 6e 64 20 30 2e 39  |SpriteExtend 0.9|
00072a40  39 20 69 73 20 69 6e 73  74 61 6c 6c 65 64 2e 0a  |9 is installed..|
00072a50  44 41 54 41 6d 02 00 00  4a 50 45 47 5f 49 6e 66  |DATAm...JPEG_Inf|
00072a60  6f 20 20 28 26 34 39 39  38 30 29 0a 23 50 61 72  |o  (&49980).#Par|
00072a70  65 6e 74 20 4a 50 45 47  5f 0a 3d 3e 09 52 30 20  |ent JPEG_.=>.R0 |
00072a80  3d 20 3c 6f 70 65 72 61  74 69 6f 6e 20 66 6c 61  |= <operation fla|
00072a90  67 73 3d 3e 4a 50 45 47  5f 69 6e 66 6f 5f 6f 70  |gs=>JPEG_info_op|
00072aa0  66 6c 61 67 73 3e 0a 09  52 31 20 3d 20 70 6f 69  |flags>..R1 = poi|
00072ab0  6e 74 65 72 20 74 6f 20  4a 50 45 47 0a 09 52 32  |nter to JPEG..R2|
00072ac0  20 3d 20 6c 65 6e 67 74  68 20 6f 66 20 69 6d 61  | = length of ima|
00072ad0  67 65 0a 09 0a 5c 3c 3d  09 52 30 20 3d 20 3c 69  |ge...\<=.R0 = <i|
00072ae0  6e 66 6f 20 66 6c 61 67  73 3d 3e 4a 50 45 47 5f  |nfo flags=>JPEG_|
00072af0  69 6e 66 6f 5f 69 6e 66  6f 66 6c 61 67 73 3e 0a  |info_infoflags>.|
00072b00  09 52 32 20 3d 20 77 69  64 74 68 20 28 69 6e 20  |.R2 = width (in |
00072b10  70 69 78 65 6c 73 29 0a  09 52 33 20 3d 20 68 65  |pixels)..R3 = he|
00072b20  69 67 68 74 20 28 69 6e  20 70 69 78 65 6c 73 29  |ight (in pixels)|
00072b30  0a 09 52 34 20 3d 20 78  20 70 69 78 65 6c 20 64  |..R4 = x pixel d|
00072b40  65 6e 73 69 74 79 0a 09  52 35 20 3d 20 79 20 70  |ensity..R5 = y p|
00072b50  69 78 65 6c 20 64 65 6e  73 69 74 79 0a 09 52 36  |ixel density..R6|
00072b60  20 3d 20 77 6f 72 6b 73  70 61 63 65 20 74 68 61  | = workspace tha|
00072b70  74 20 77 6f 75 6c 64 20  62 65 20 72 65 71 75 69  |t would be requi|
00072b80  72 65 64 20 74 6f 20 70  6c 6f 74 20 28 30 3d 6e  |red to plot (0=n|
00072b90  6f 6e 65 29 0a 0a 54 68  69 73 20 53 57 49 20 72  |one)..This SWI r|
00072ba0  65 74 75 72 6e 73 20 69  6e 66 6f 72 6d 61 74 69  |eturns informati|
00072bb0  6f 6e 20 61 62 6f 75 74  20 61 20 4a 50 45 47 20  |on about a JPEG |
00072bc0  68 65 6c 64 20 69 6e 20  61 20 62 75 66 66 65 72  |held in a buffer|
00072bd0  20 69 6e 20 6d 65 6d 6f  72 79 2e 20 49 74 20 63  | in memory. It c|
00072be0  68 65 63 6b 73 20 74 68  65 20 68 65 61 64 65 72  |hecks the header|
00072bf0  20 65 6e 6f 75 67 68 20  74 6f 20 72 65 74 75 72  | enough to retur|
00072c00  6e 20 74 68 65 20 77 69  64 74 68 20 61 6e 64 20  |n the width and |
00072c10  68 65 69 67 68 74 2c 20  61 6e 64 20 64 6f 65 73  |height, and does|
00072c20  20 61 20 70 61 72 74 69  61 6c 20 76 61 6c 69 64  | a partial valid|
00072c30  61 74 69 6f 6e 20 6f 66  20 74 68 65 20 64 61 74  |ation of the dat|
00072c40  61 2e 20 20 49 74 20 72  65 74 75 72 6e 73 20 61  |a.  It returns a|
00072c50  6e 20 65 72 72 6f 72 20  69 66 20 74 68 65 20 69  |n error if the i|
00072c60  6d 61 67 65 20 61 70 70  65 61 72 73 20 74 6f 20  |mage appears to |
00072c70  62 65 20 69 6e 76 61 6c  69 64 3b 20 69 66 20 6e  |be invalid; if n|
00072c80  6f 20 65 72 72 6f 72 20  69 73 20 72 65 74 75 72  |o error is retur|
00072c90  6e 65 64 20 79 6f 75 20  6d 61 79 20 61 73 73 75  |ned you may assu|
00072ca0  6d 65 20 74 68 65 20 64  61 74 61 20 69 73 20 61  |me the data is a|
00072cb0  20 4a 50 45 47 20 69 6d  61 67 65 2e 0a 00 00 00  | JPEG image.....|
00072cc0  44 41 54 41 d6 02 00 00  4a 50 45 47 5f 46 69 6c  |DATA....JPEG_Fil|
00072cd0  65 49 6e 66 6f 20 20 28  26 34 39 39 38 31 29 0a  |eInfo  (&49981).|
00072ce0  23 50 61 72 65 6e 74 20  4a 50 45 47 5f 0a 3d 3e  |#Parent JPEG_.=>|
00072cf0  09 52 30 20 3d 20 3c 6f  70 65 72 61 74 69 6f 6e  |.R0 = <operation|
00072d00  20 66 6c 61 67 73 3d 3e  4a 50 45 47 5f 69 6e 66  | flags=>JPEG_inf|
00072d10  6f 5f 6f 70 66 6c 61 67  73 3e 0a 09 52 31 20 3d  |o_opflags>..R1 =|
00072d20  20 70 6f 69 6e 74 65 72  20 74 6f 20 4a 50 45 47  | pointer to JPEG|
00072d30  0a 09 52 32 20 3d 20 6c  65 6e 67 74 68 20 6f 66  |..R2 = length of|
00072d40  20 69 6d 61 67 65 0a 09  0a 5c 3c 3d 09 52 30 20  | image...\<=.R0 |
00072d50  3d 20 3c 69 6e 66 6f 20  66 6c 61 67 73 3d 3e 4a  |= <info flags=>J|
00072d60  50 45 47 5f 69 6e 66 6f  5f 69 6e 66 6f 66 6c 61  |PEG_info_infofla|
00072d70  67 73 3e 0a 09 52 32 20  3d 20 77 69 64 74 68 20  |gs>..R2 = width |
00072d80  28 69 6e 20 70 69 78 65  6c 73 29 0a 09 52 33 20  |(in pixels)..R3 |
00072d90  3d 20 68 65 69 67 68 74  20 28 69 6e 20 70 69 78  |= height (in pix|
00072da0  65 6c 73 29 0a 09 52 34  20 3d 20 78 20 70 69 78  |els)..R4 = x pix|
00072db0  65 6c 20 64 65 6e 73 69  74 79 0a 09 52 35 20 3d  |el density..R5 =|
00072dc0  20 79 20 70 69 78 65 6c  20 64 65 6e 73 69 74 79  | y pixel density|
00072dd0  0a 09 52 36 20 3d 20 77  6f 72 6b 73 70 61 63 65  |..R6 = workspace|
00072de0  20 74 68 61 74 20 77 6f  75 6c 64 20 62 65 20 72  | that would be r|
00072df0  65 71 75 69 72 65 64 20  74 6f 20 70 6c 6f 74 20  |equired to plot |
00072e00  28 30 3d 6e 6f 6e 65 29  0a 0a 54 68 69 73 20 53  |(0=none)..This S|
00072e10  57 49 20 72 65 74 75 72  6e 73 20 69 6e 66 6f 72  |WI returns infor|
00072e20  6d 61 74 69 6f 6e 20 61  62 6f 75 74 20 61 20 4a  |mation about a J|
00072e30  50 45 47 20 68 65 6c 64  20 69 6e 20 61 20 66 69  |PEG held in a fi|
00072e40  6c 65 2e 20 49 74 20 63  68 65 63 6b 73 20 74 68  |le. It checks th|
00072e50  65 20 68 65 61 64 65 72  20 65 6e 6f 75 67 68 20  |e header enough |
00072e60  74 6f 20 72 65 74 75 72  6e 20 74 68 65 20 77 69  |to return the wi|
00072e70  64 74 68 20 61 6e 64 20  68 65 69 67 68 74 2c 20  |dth and height, |
00072e80  61 6e 64 20 64 6f 65 73  20 61 20 70 61 72 74 69  |and does a parti|
00072e90  61 6c 20 76 61 6c 69 64  61 74 69 6f 6e 20 6f 66  |al validation of|
00072ea0  20 74 68 65 20 64 61 74  61 2e 20 20 49 74 20 72  | the data.  It r|
00072eb0  65 74 75 72 6e 73 20 61  6e 20 65 72 72 6f 72 20  |eturns an error |
00072ec0  69 66 20 74 68 65 20 69  6d 61 67 65 20 61 70 70  |if the image app|
00072ed0  65 61 72 73 20 74 6f 20  62 65 20 69 6e 76 61 6c  |ears to be inval|
00072ee0  69 64 3b 20 69 66 20 6e  6f 20 65 72 72 6f 72 20  |id; if no error |
00072ef0  69 73 20 72 65 74 75 72  6e 65 64 20 79 6f 75 20  |is returned you |
00072f00  6d 61 79 20 61 73 73 75  6d 65 20 74 68 65 20 64  |may assume the d|
00072f10  61 74 61 20 69 73 20 61  20 4a 50 45 47 20 69 6d  |ata is a JPEG im|
00072f20  61 67 65 2e 0a 0a 49 74  20 69 73 20 70 72 65 66  |age...It is pref|
00072f30  65 72 61 62 6c 65 20 74  6f 20 6c 6f 61 64 20 74  |erable to load t|
00072f40  68 65 20 66 69 6c 65 20  69 6e 74 6f 20 6d 65 6d  |he file into mem|
00072f50  6f 72 79 20 61 6e 64 20  63 61 6c 6c 20 3c 4a 50  |ory and call <JP|
00072f60  45 47 5f 49 6e 66 6f 3e  2c 20 69 66 20 79 6f 75  |EG_Info>, if you|
00072f70  20 69 6e 74 65 6e 64 20  74 6f 20 64 69 73 70 6c  | intend to displ|
00072f80  61 79 20 74 68 65 20 69  6d 61 67 65 20 61 73 20  |ay the image as |
00072f90  77 65 6c 6c 2e 0a 00 00  44 41 54 41 fa 03 00 00  |well....DATA....|
00072fa0  4a 50 45 47 5f 50 6c 6f  74 53 63 61 6c 65 64 20  |JPEG_PlotScaled |
00072fb0  20 28 26 34 39 39 38 32  29 0a 23 50 61 72 65 6e  | (&49982).#Paren|
00072fc0  74 20 4a 50 45 47 5f 0a  3d 3e 09 52 30 20 3d 20  |t JPEG_.=>.R0 = |
00072fd0  70 6f 69 6e 74 65 72 20  74 6f 20 4a 50 45 47 0a  |pointer to JPEG.|
00072fe0  09 52 31 20 3d 20 78 20  63 6f 6f 72 64 69 6e 61  |.R1 = x coordina|
00072ff0  74 65 20 61 74 20 77 68  69 63 68 20 74 6f 20 70  |te at which to p|
00073000  6c 6f 74 0a 09 52 32 20  3d 20 79 20 63 6f 6f 72  |lot..R2 = y coor|
00073010  64 69 6e 61 74 65 20 61  74 20 77 68 69 63 68 20  |dinate at which |
00073020  74 6f 20 70 6c 6f 74 0a  09 52 33 20 3d 20 70 6f  |to plot..R3 = po|
00073030  69 6e 74 65 72 20 74 6f  20 73 63 61 6c 69 6e 67  |inter to scaling|
00073040  20 62 6c 6f 63 6b 20 28  30 20 66 6f 72 20 6e 6f  | block (0 for no|
00073050  20 73 63 61 6c 69 6e 67  29 0a 09 52 34 20 3d 20  | scaling)..R4 = |
00073060  6c 65 6e 67 74 68 20 6f  66 20 69 6d 61 67 65 0a  |length of image.|
00073070  09 52 35 20 3d 20 3c 70  6c 6f 74 74 69 6e 67 20  |.R5 = <plotting |
00073080  66 6c 61 67 73 3d 3e 4a  50 45 47 5f 70 6c 6f 74  |flags=>JPEG_plot|
00073090  66 6c 61 67 73 3e 0a 0a  54 68 69 73 20 53 57 49  |flags>..This SWI|
000730a0  20 64 65 63 6f 6d 70 72  65 73 73 65 73 2c 20 73  | decompresses, s|
000730b0  63 61 6c 65 73 20 61 6e  64 20 70 6c 6f 74 73 20  |cales and plots |
000730c0  6f 6e 20 74 68 65 20 73  63 72 65 65 6e 20 61 20  |on the screen a |
000730d0  4a 50 45 47 20 69 6d 61  67 65 20 68 65 6c 64 20  |JPEG image held |
000730e0  69 6e 20 61 20 62 75 66  66 65 72 2e 0a 0a 54 68  |in a buffer...Th|
000730f0  69 73 20 69 73 20 73 69  6d 69 6c 61 72 20 74 6f  |is is similar to|
00073100  20 3c 4f 53 5f 53 70 72  69 74 65 4f 70 20 35 32  | <OS_SpriteOp 52|
00073110  3d 3e 4f 53 5f 53 70 72  69 74 65 4f 70 5f 35 32  |=>OS_SpriteOp_52|
00073120  3e 20 66 6f 72 20 73 70  72 69 74 65 73 20 69 6e  |> for sprites in|
00073130  20 74 68 61 74 20 74 68  65 20 73 63 61 6c 65 20  | that the scale |
00073140  66 61 63 74 6f 72 73 20  61 6e 64 20 74 68 65 20  |factors and the |
00073150  63 6f 6f 72 64 69 6e 61  74 65 73 20 68 61 76 65  |coordinates have|
00073160  20 65 78 61 63 74 6c 79  20 74 68 65 20 73 61 6d  | exactly the sam|
00073170  65 20 6d 65 61 6e 69 6e  67 2e 20 48 6f 77 65 76  |e meaning. Howev|
00073180  65 72 2c 20 74 68 69 73  20 63 61 6c 6c 20 6f 6e  |er, this call on|
00073190  6c 79 20 73 75 70 70 6f  72 74 73 20 61 20 64 69  |ly supports a di|
000731a0  72 65 63 74 20 70 6c 6f  74 2e 0a 0a 49 6e 20 70  |rect plot...In p|
000731b0  6c 6f 74 74 69 6e 67 20  74 68 65 20 4a 50 45 47  |lotting the JPEG|
000731c0  2c 20 74 68 65 20 53 70  72 69 74 65 45 78 74 65  |, the SpriteExte|
000731d0  6e 64 20 6d 6f 64 75 6c  65 20 6d 61 79 20 63 6c  |nd module may cl|
000731e0  61 69 6d 20 65 78 74 72  61 20 77 6f 72 6b 73 70  |aim extra worksp|
000731f0  61 63 65 20 69 6e 20 61  20 64 79 6e 61 6d 69 63  |ace in a dynamic|
00073200  20 61 72 65 61 20 74 6f  20 73 74 6f 72 65 20 74  | area to store t|
00073210  61 62 6c 65 73 20 65 74  63 2e 20 20 49 74 20 6b  |ables etc.  It k|
00073220  65 65 70 73 20 74 68 65  73 65 20 63 61 63 68 65  |eeps these cache|
00073230  64 20 75 6e 74 69 6c 20  65 69 74 68 65 72 20 69  |d until either i|
00073240  74 20 69 73 20 61 73 6b  65 64 20 74 6f 20 70 6c  |t is asked to pl|
00073250  6f 74 20 61 20 64 69 66  66 65 72 65 6e 74 20 4a  |ot a different J|
00073260  50 45 47 2c 20 6f 72 20  74 68 65 20 75 73 65 72  |PEG, or the user|
00073270  20 64 65 63 72 65 61 73  65 73 20 74 68 65 20 64  | decreases the d|
00073280  79 6e 61 6d 69 63 20 61  72 65 61 27 73 20 73 69  |ynamic area's si|
00073290  7a 65 2e 20 54 68 69 73  20 73 70 65 65 64 73 20  |ze. This speeds |
000732a0  75 70 20 73 75 63 63 65  73 73 69 76 65 20 72 65  |up successive re|
000732b0  70 6c 6f 74 73 20 6f 66  20 74 68 65 20 73 61 6d  |plots of the sam|
000732c0  65 20 4a 50 45 47 2e 20  59 6f 75 20 63 61 6e 20  |e JPEG. You can |
000732d0  66 69 6e 64 20 6f 75 74  20 68 6f 77 20 6d 75 63  |find out how muc|
000732e0  68 20 65 78 74 72 61 20  77 6f 72 6b 73 70 61 63  |h extra workspac|
000732f0  65 20 53 70 72 69 74 65  45 78 74 65 6e 64 20 77  |e SpriteExtend w|
00073300  69 6c 6c 20 72 65 71 75  69 72 65 20 2d 20 69 66  |ill require - if|
00073310  20 61 6e 79 20 2d 20 62  79 20 66 69 72 73 74 20  | any - by first |
00073320  63 61 6c 6c 69 6e 67 20  3c 4a 50 45 47 5f 49 6e  |calling <JPEG_In|
00073330  66 6f 3e 20 6f 72 20 3c  4a 50 45 47 5f 46 69 6c  |fo> or <JPEG_Fil|
00073340  65 49 6e 66 6f 3e 2c 20  61 6e 64 20 68 65 6e 63  |eInfo>, and henc|
00073350  65 20 65 6e 73 75 72 65  20 74 68 65 72 65 20 69  |e ensure there i|
00073360  73 20 73 75 66 66 69 63  69 65 6e 74 20 66 72 65  |s sufficient fre|
00073370  65 20 6d 65 6d 6f 72 79  20 62 65 66 6f 72 65 20  |e memory before |
00073380  6d 61 6b 69 6e 67 20 74  68 69 73 20 63 61 6c 6c  |making this call|
00073390  2e 0a 00 00 44 41 54 41  d6 01 00 00 4a 50 45 47  |....DATA....JPEG|
000733a0  5f 50 6c 6f 74 46 69 6c  65 53 63 61 6c 65 64 20  |_PlotFileScaled |
000733b0  20 28 26 34 39 39 38 33  29 0a 23 50 61 72 65 6e  | (&49983).#Paren|
000733c0  74 20 4a 50 45 47 5f 0a  3d 3e 09 52 30 20 3d 20  |t JPEG_.=>.R0 = |
000733d0  70 6f 69 6e 74 65 72 20  74 6f 20 66 69 6c 65 6e  |pointer to filen|
000733e0  61 6d 65 20 6f 66 20 4a  50 45 47 20 66 69 6c 65  |ame of JPEG file|
000733f0  0a 09 52 31 20 3d 20 78  20 63 6f 6f 72 64 69 6e  |..R1 = x coordin|
00073400  61 74 65 20 61 74 20 77  68 69 63 68 20 74 6f 20  |ate at which to |
00073410  70 6c 6f 74 0a 09 52 32  20 3d 20 79 20 63 6f 6f  |plot..R2 = y coo|
00073420  72 64 69 6e 61 74 65 20  61 74 20 77 68 69 63 68  |rdinate at which|
00073430  20 74 6f 20 70 6c 6f 74  0a 09 52 33 20 3d 20 70  | to plot..R3 = p|
00073440  6f 69 6e 74 65 72 20 74  6f 20 73 63 61 6c 69 6e  |ointer to scalin|
00073450  67 20 62 6c 6f 63 6b 20  28 30 20 66 6f 72 20 6e  |g block (0 for n|
00073460  6f 20 73 63 61 6c 69 6e  67 29 0a 09 52 34 20 3d  |o scaling)..R4 =|
00073470  20 6c 65 6e 67 74 68 20  6f 66 20 69 6d 61 67 65  | length of image|
00073480  0a 09 52 35 20 3d 20 3c  70 6c 6f 74 74 69 6e 67  |..R5 = <plotting|
00073490  20 66 6c 61 67 73 3d 3e  4a 50 45 47 5f 70 6c 6f  | flags=>JPEG_plo|
000734a0  74 66 6c 61 67 73 3e 0a  0a 54 68 69 73 20 53 57  |tflags>..This SW|
000734b0  49 20 64 65 63 6f 6d 70  72 65 73 73 65 73 2c 20  |I decompresses, |
000734c0  73 63 61 6c 65 73 20 61  6e 64 20 70 6c 6f 74 73  |scales and plots|
000734d0  20 6f 6e 20 74 68 65 20  73 63 72 65 65 6e 20 61  | on the screen a|
000734e0  20 4a 50 45 47 20 69 6d  61 67 65 20 68 65 6c 64  | JPEG image held|
000734f0  20 69 6e 20 61 20 66 69  6c 65 2e 20 54 68 69 73  | in a file. This|
00073500  20 69 73 20 69 64 65 6e  74 69 63 61 6c 20 74 6f  | is identical to|
00073510  20 74 68 65 20 3c 4a 50  45 47 5f 50 6c 6f 74 53  | the <JPEG_PlotS|
00073520  63 61 6c 65 64 3e 20 63  61 6c 6c 2c 20 65 78 63  |caled> call, exc|
00073530  65 70 74 20 74 68 61 74  20 6d 65 6d 6f 72 79 20  |ept that memory |
00073540  69 73 20 63 6c 61 69 6d  65 64 20 69 6e 20 61 20  |is claimed in a |
00073550  44 79 6e 61 6d 69 63 20  41 72 65 61 20 66 6f 72  |Dynamic Area for|
00073560  20 74 68 65 20 66 69 6c  65 2e 00 00 44 41 54 41  | the file...DATA|
00073570  12 02 00 00 4a 50 45 47  5f 50 6c 6f 74 54 72 61  |....JPEG_PlotTra|
00073580  6e 73 66 6f 72 6d 65 64  20 20 28 26 34 39 39 38  |nsformed  (&4998|
00073590  34 29 0a 23 50 61 72 65  6e 74 20 4a 50 45 47 5f  |4).#Parent JPEG_|
000735a0  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
000735b0  20 74 6f 20 4a 50 45 47  0a 09 52 31 20 3d 09 3c  | to JPEG..R1 =.<|
000735c0  74 72 61 6e 73 66 6f 72  6d 61 74 69 6f 6e 20 66  |transformation f|
000735d0  6c 61 67 73 3d 3e 4a 50  45 47 5f 74 72 61 6e 73  |lags=>JPEG_trans|
000735e0  66 6c 61 67 73 3e 0a 09  52 32 20 3d 09 70 6f 69  |flags>..R2 =.poi|
000735f0  6e 74 65 72 20 74 6f 20  64 65 73 74 69 6e 61 74  |nter to destinat|
00073600  69 6f 6e 20 63 6f 6f 72  64 69 6e 61 74 65 20 62  |ion coordinate b|
00073610  6c 6f 63 6b 2c 20 6f 72  20 44 72 61 77 2d 73 74  |lock, or Draw-st|
00073620  79 6c 65 20 74 72 61 6e  73 66 6f 72 6d 61 74 69  |yle transformati|
00073630  6f 6e 20 6d 61 74 72 69  78 2e 0a 09 52 33 20 3d  |on matrix...R3 =|
00073640  09 6c 65 6e 67 74 68 20  6f 66 20 69 6d 61 67 65  |.length of image|
00073650  0a 0a 54 68 69 73 20 53  57 49 20 64 65 63 6f 6d  |..This SWI decom|
00073660  70 72 65 73 73 65 73 2c  20 74 72 61 6e 73 66 6f  |presses, transfo|
00073670  72 6d 73 2c 20 61 6e 64  20 70 6c 6f 74 73 20 6f  |rms, and plots o|
00073680  6e 20 74 68 65 20 73 63  72 65 65 6e 20 61 20 4a  |n the screen a J|
00073690  50 45 47 20 69 6d 61 67  65 20 68 65 6c 64 20 69  |PEG image held i|
000736a0  6e 20 6d 65 6d 6f 72 79  2e 0a 0a 54 68 69 73 20  |n memory...This |
000736b0  63 61 6c 6c 20 69 73 20  73 69 6d 69 6c 61 72 20  |call is similar |
000736c0  74 6f 20 3c 4f 53 5f 53  70 72 69 74 65 4f 70 20  |to <OS_SpriteOp |
000736d0  35 36 3d 3e 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |56=>OS_SpriteOp_|
000736e0  35 35 35 36 3e 2c 20 69  6e 20 74 68 61 74 20 74  |5556>, in that t|
000736f0  68 65 20 64 65 73 74 69  6e 61 74 69 6f 6e 20 63  |he destination c|
00073700  6f 6f 72 64 69 6e 61 74  65 20 62 6c 6f 63 6b 20  |oordinate block |
00073710  61 6e 64 20 74 68 65 20  74 72 61 6e 73 66 6f 72  |and the transfor|
00073720  6d 61 74 69 6f 6e 20 6d  61 74 72 69 78 20 68 61  |mation matrix ha|
00073730  76 65 20 65 78 61 63 74  6c 79 20 74 68 65 20 73  |ve exactly the s|
00073740  61 6d 65 20 6d 65 61 6e  69 6e 67 2e 20 20 48 6f  |ame meaning.  Ho|
00073750  77 65 76 65 72 2c 20 74  68 69 73 20 63 61 6c 6c  |wever, this call|
00073760  20 6f 6e 6c 79 20 73 75  70 70 6f 72 74 73 20 61  | only supports a|
00073770  20 64 69 72 65 63 74 20  70 6c 6f 74 2e 0a 00 00  | direct plot....|
00073780  44 41 54 41 2d 02 00 00  4a 50 45 47 5f 50 6c 6f  |DATA-...JPEG_Plo|
00073790  74 46 69 6c 65 54 72 61  6e 73 66 6f 72 6d 65 64  |tFileTransformed|
000737a0  20 20 28 26 34 39 39 38  35 29 0a 23 50 61 72 65  |  (&49985).#Pare|
000737b0  6e 74 20 4a 50 45 47 5f  0a 3d 3e 09 52 30 20 3d  |nt JPEG_.=>.R0 =|
000737c0  09 70 6f 69 6e 74 65 72  20 74 6f 20 66 69 6c 65  |.pointer to file|
000737d0  6e 61 6d 65 20 6f 66 20  4a 50 45 47 20 66 69 6c  |name of JPEG fil|
000737e0  65 0a 09 52 31 20 3d 09  3c 74 72 61 6e 73 66 6f  |e..R1 =.<transfo|
000737f0  72 6d 61 74 69 6f 6e 20  66 6c 61 67 73 3d 3e 4a  |rmation flags=>J|
00073800  50 45 47 5f 74 72 61 6e  73 66 6c 61 67 73 3e 0a  |PEG_transflags>.|
00073810  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
00073820  20 64 65 73 74 69 6e 61  74 69 6f 6e 20 63 6f 6f  | destination coo|
00073830  72 64 69 6e 61 74 65 20  62 6c 6f 63 6b 2c 20 6f  |rdinate block, o|
00073840  72 20 44 72 61 77 2d 73  74 79 6c 65 20 74 72 61  |r Draw-style tra|
00073850  6e 73 66 6f 72 6d 61 74  69 6f 6e 20 6d 61 74 72  |nsformation matr|
00073860  69 78 2e 0a 09 52 33 20  3d 09 6c 65 6e 67 74 68  |ix...R3 =.length|
00073870  20 6f 66 20 69 6d 61 67  65 0a 0a 54 68 69 73 20  | of image..This |
00073880  53 57 49 20 64 65 63 6f  6d 70 72 65 73 73 65 73  |SWI decompresses|
00073890  2c 20 74 72 61 6e 73 66  6f 72 6d 73 2c 20 61 6e  |, transforms, an|
000738a0  64 20 70 6c 6f 74 73 20  6f 6e 20 74 68 65 20 73  |d plots on the s|
000738b0  63 72 65 65 6e 20 61 20  4a 50 45 47 20 69 6d 61  |creen a JPEG ima|
000738c0  67 65 20 68 65 6c 64 20  69 6e 20 61 20 66 69 6c  |ge held in a fil|
000738d0  65 2e 20 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |e. This call is |
000738e0  74 68 65 20 73 61 6d 65  20 61 73 20 3c 4a 50 45  |the same as <JPE|
000738f0  47 5f 50 6c 6f 74 54 72  61 6e 73 66 6f 72 6d 65  |G_PlotTransforme|
00073900  64 3e 2c 20 65 78 63 65  70 74 20 74 68 61 74 20  |d>, except that |
00073910  6d 65 6d 6f 72 79 20 69  73 20 63 6c 61 69 6d 65  |memory is claime|
00073920  64 20 69 6e 20 61 20 44  79 6e 61 6d 69 63 20 41  |d in a Dynamic A|
00073930  72 65 61 20 74 6f 20 68  6f 6c 64 20 74 68 65 20  |rea to hold the |
00073940  4a 50 45 47 20 62 65 66  6f 72 65 20 70 6c 6f 74  |JPEG before plot|
00073950  74 69 6e 67 2e 0a 0a 59  6f 75 20 61 72 65 20 73  |ting...You are s|
00073960  74 72 6f 6e 67 6c 79 20  72 65 63 6f 6d 6d 65 6e  |trongly recommen|
00073970  64 65 64 20 74 6f 20 75  73 65 20 3c 4a 50 45 47  |ded to use <JPEG|
00073980  5f 50 6c 6f 74 54 72 61  6e 73 66 6f 72 6d 65 64  |_PlotTransformed|
00073990  3e 20 69 6e 20 70 72 65  66 65 72 65 6e 63 65 20  |> in preference |
000739a0  74 6f 20 74 68 69 73 20  63 61 6c 6c 2e 00 00 00  |to this call....|
000739b0  44 41 54 41 0f 02 00 00  4a 50 45 47 5f 50 44 72  |DATA....JPEG_PDr|
000739c0  69 76 65 72 49 6e 74 65  72 63 65 70 74 20 20 28  |iverIntercept  (|
000739d0  26 34 39 39 38 36 29 0a  23 50 61 72 65 6e 74 20  |&49986).#Parent |
000739e0  4a 50 45 47 5f 0a 3d 3e  09 52 30 20 3d 09 3c 66  |JPEG_.=>.R0 =.<f|
000739f0  6c 61 67 73 3d 3e 2e 66  6c 61 67 73 3e 0a 3c 3d  |lags=>.flags>.<=|
00073a00  09 52 30 20 3d 09 70 72  65 76 69 6f 75 73 20 69  |.R0 =.previous i|
00073a10  6e 74 65 72 63 65 70 74  20 73 74 61 74 65 0a 0a  |ntercept state..|
00073a20  54 68 69 73 20 53 57 49  20 69 73 20 75 73 65 64  |This SWI is used|
00073a30  20 62 79 20 74 68 65 20  70 72 69 6e 74 65 72 20  | by the printer |
00073a40  64 72 69 76 65 72 73 20  74 6f 20 72 65 71 75 65  |drivers to reque|
00073a50  73 74 20 74 68 61 74 20  53 70 72 69 74 65 45 78  |st that SpriteEx|
00073a60  74 65 6e 64 20 70 61 73  73 65 73 20 6f 6e 20 61  |tend passes on a|
00073a70  6c 6c 20 63 61 6c 6c 73  20 74 6f 20 4a 50 45 47  |ll calls to JPEG|
00073a80  20 70 6c 6f 74 74 69 6e  67 20 53 57 49 73 20 62  | plotting SWIs b|
00073a90  79 20 69 74 73 65 6c 66  20 63 61 6c 6c 69 6e 67  |y itself calling|
00073aa0  20 50 44 72 69 76 65 72  5f 4a 50 45 47 53 57 49  | PDriver_JPEGSWI|
00073ab0  2e 20 20 57 68 65 6e 20  53 70 72 69 74 65 45 78  |.  When SpriteEx|
00073ac0  74 65 6e 64 20 70 61 73  73 65 73 20 6f 6e 20 74  |tend passes on t|
00073ad0  68 65 73 65 20 63 61 6c  6c 73 2c 20 69 74 20 69  |hese calls, it i|
00073ae0  67 6e 6f 72 65 73 20 74  68 65 6d 20 69 74 73 65  |gnores them itse|
00073af0  6c 66 2e 0a 0a 59 6f 75  20 6d 75 73 74 20 6e 6f  |lf...You must no|
00073b00  74 20 6d 61 6b 65 20 74  68 69 73 20 63 61 6c 6c  |t make this call|
00073b10  20 66 72 6f 6d 20 79 6f  75 72 20 6f 77 6e 20 61  | from your own a|
00073b20  70 70 6c 69 63 61 74 69  6f 6e 73 2e 0a 23 73 75  |pplications..#su|
00073b30  62 70 61 67 65 20 66 6c  61 67 73 0a 4a 50 45 47  |bpage flags.JPEG|
00073b40  5f 50 44 72 69 76 65 72  49 6e 74 65 72 63 65 70  |_PDriverIntercep|
00073b50  74 20 66 6c 61 67 73 0a  62 69 74 09 6d 65 61 6e  |t flags.bit.mean|
00073b60  69 6e 67 20 69 66 20 73  65 74 0a 23 4c 69 6e 65  |ing if set.#Line|
00073b70  0a 30 09 70 61 73 73 20  6f 6e 20 70 6c 6f 74 74  |.0.pass on plott|
00073b80  69 6e 67 20 63 61 6c 6c  73 0a 31 09 75 73 65 20  |ing calls.1.use |
00073b90  74 72 61 6e 73 6c 61 74  69 6f 6e 20 74 61 62 6c  |translation tabl|
00073ba0  65 73 0a 6f 74 68 65 72  73 20 20 72 65 73 65 72  |es.others  reser|
00073bb0  76 65 64 20 28 6d 75 73  74 20 62 65 20 30 29 00  |ved (must be 0).|
00073bc0  44 41 54 41 69 00 00 00  4a 50 45 47 20 69 6e 66  |DATAi...JPEG inf|
00073bd0  6f 20 6f 70 65 72 61 74  69 6f 6e 20 66 6c 61 67  |o operation flag|
00073be0  73 0a 62 69 74 09 6d 65  61 6e 69 6e 67 20 69 66  |s.bit.meaning if|
00073bf0  20 73 65 74 0a 23 4c 69  6e 65 0a 30 09 72 65 74  | set.#Line.0.ret|
00073c00  75 72 6e 20 64 69 6d 65  6e 73 69 6f 6e 73 0a 6f  |urn dimensions.o|
00073c10  74 68 65 72 09 72 65 73  65 72 76 65 64 20 28 6d  |ther.reserved (m|
00073c20  75 73 74 20 62 65 20 30  29 00 00 00 44 41 54 41  |ust be 0)...DATA|
00073c30  ce 00 00 00 4a 50 45 47  20 70 6c 6f 74 74 69 6e  |....JPEG plottin|
00073c40  67 20 66 6c 61 67 73 0a  62 69 74 09 6d 65 61 6e  |g flags.bit.mean|
00073c50  69 6e 67 20 69 66 20 73  65 74 0a 23 4c 69 6e 65  |ing if set.#Line|
00073c60  0a 30 09 64 69 74 68 65  72 20 6f 75 74 70 75 74  |.0.dither output|
00073c70  20 77 68 65 6e 20 70 6c  6f 74 74 69 6e 67 20 32  | when plotting 2|
00073c80  34 20 62 69 74 20 4a 50  45 47 20 61 74 20 31 36  |4 bit JPEG at 16|
00073c90  62 70 70 20 6f 72 20 62  65 6c 6f 77 0a 31 09 64  |bpp or below.1.d|
00073ca0  69 74 68 65 72 69 6e 67  20 28 69 66 20 61 6e 79  |ithering (if any|
00073cb0  29 20 69 73 20 66 75 6c  6c 20 65 72 72 6f 72 20  |) is full error |
00073cc0  64 69 66 66 75 73 65 64  20 77 68 65 6e 20 70 6c  |diffused when pl|
00073cd0  6f 74 74 69 6e 67 20 61  74 20 38 62 70 70 0a 6f  |otting at 8bpp.o|
00073ce0  74 68 65 72 09 72 65 73  65 72 76 65 64 20 28 6d  |ther.reserved (m|
00073cf0  75 73 74 20 62 65 20 30  29 0a 00 00 44 41 54 41  |ust be 0)...DATA|
00073d00  13 01 00 00 4a 50 45 47  20 74 72 61 6e 73 66 6f  |....JPEG transfo|
00073d10  72 6d 61 74 69 6f 6e 20  66 6c 61 67 73 0a 62 69  |rmation flags.bi|
00073d20  74 09 6d 65 61 6e 69 6e  67 20 69 66 20 73 65 74  |t.meaning if set|
00073d30  0a 23 4c 69 6e 65 0a 30  09 52 32 20 3d 20 70 6f  |.#Line.0.R2 = po|
00073d40  69 6e 74 65 72 20 74 6f  20 64 65 73 74 69 6e 61  |inter to destina|
00073d50  74 69 6f 6e 20 63 6f 6f  72 64 69 6e 61 74 65 20  |tion coordinate |
00073d60  62 6c 6f 63 6b 2c 20 65  6c 73 65 20 74 6f 20 6d  |block, else to m|
00073d70  61 74 72 69 78 0a 31 09  64 69 74 68 65 72 20 6f  |atrix.1.dither o|
00073d80  75 74 70 75 74 20 77 68  65 6e 20 70 6c 6f 74 74  |utput when plott|
00073d90  69 6e 67 20 32 34 20 62  69 74 20 4a 50 45 47 20  |ing 24 bit JPEG |
00073da0  61 74 20 31 36 62 70 70  20 6f 72 20 62 65 6c 6f  |at 16bpp or belo|
00073db0  77 0a 32 09 64 69 74 68  65 72 69 6e 67 20 28 69  |w.2.dithering (i|
00073dc0  66 20 61 6e 79 29 20 69  73 20 66 75 6c 6c 20 65  |f any) is full e|
00073dd0  72 72 6f 72 20 64 69 66  66 75 73 65 64 20 77 68  |rror diffused wh|
00073de0  65 6e 20 70 6c 6f 74 74  69 6e 67 20 61 74 20 38  |en plotting at 8|
00073df0  62 70 70 0a 6f 74 68 65  72 09 72 65 73 65 72 76  |bpp.other.reserv|
00073e00  65 64 20 28 6d 75 73 74  20 62 65 20 30 29 0a 00  |ed (must be 0)..|
00073e10  44 41 54 41 c8 00 00 00  4a 50 45 47 20 69 6e 66  |DATA....JPEG inf|
00073e20  6f 72 6d 61 74 69 6f 6e  20 66 6c 61 67 73 0a 62  |ormation flags.b|
00073e30  69 74 09 6d 65 61 6e 69  6e 67 20 69 66 20 73 65  |it.meaning if se|
00073e40  74 0a 23 4c 69 6e 65 0a  30 09 67 72 65 79 73 63  |t.#Line.0.greysc|
00073e50  61 6c 65 20 69 6d 61 67  65 20 28 6f 74 68 65 72  |ale image (other|
00073e60  77 69 73 65 20 63 6f 6c  6f 75 72 29 0a 31 09 74  |wise colour).1.t|
00073e70  72 61 6e 73 66 6f 72 6d  65 64 20 70 6c 6f 74 73  |ransformed plots|
00073e80  20 6e 6f 74 20 73 75 70  70 6f 72 74 65 64 0a 32  | not supported.2|
00073e90  09 70 69 78 65 6c 20 64  65 6e 73 69 74 79 20 69  |.pixel density i|
00073ea0  73 20 72 61 74 69 6f 20  28 6f 74 68 65 72 77 69  |s ratio (otherwi|
00073eb0  73 65 20 69 73 20 69 6e  20 44 50 49 29 0a 6f 74  |se is in DPI).ot|
00073ec0  68 65 72 09 72 65 73 65  72 76 65 64 20 28 6d 75  |her.reserved (mu|
00073ed0  73 74 20 62 65 20 30 29  44 49 52 24 2c 00 00 00  |st be 0)DIR$,...|
00073ee0  2c 00 00 00 04 3f 07 00  46 fd ff ff 5e fd 38 9c  |,....?..F...^.8.|
00073ef0  ac 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00073f00  74 00 00 00 44 41 54 41  ac 00 00 00 4c 69 6e 65  |t...DATA....Line|
00073f10  45 64 69 74 6f 72 0a 23  50 61 72 65 6e 74 20 21  |Editor.#Parent !|
00073f20  52 6f 6f 74 0a 23 50 72  65 66 69 78 20 4c 69 6e  |Root.#Prefix Lin|
00073f30  65 45 64 69 74 6f 72 5f  0a 23 54 61 62 6c 65 20  |eEditor_.#Table |
00073f40  43 6f 6c 75 6d 6e 73 20  32 0a 53 65 74 4f 70 74  |Columns 2.SetOpt|
00073f50  69 6f 6e 73 0a 47 65 74  4f 70 74 69 6f 6e 73 0a  |ions.GetOptions.|
00073f60  43 72 65 61 74 65 42 75  66 66 65 72 0a 44 65 6c  |CreateBuffer.Del|
00073f70  65 74 65 42 75 66 66 65  72 0a 53 65 74 50 6f 73  |eteBuffer.SetPos|
00073f80  0a 47 65 74 50 6f 73 0a  47 65 74 4c 69 6e 65 0a  |.GetPos.GetLine.|
00073f90  41 70 70 65 6e 64 4c 69  6e 65 0a 44 65 6c 65 74  |AppendLine.Delet|
00073fa0  65 4c 69 6e 65 0a 23 45  6e 64 54 61 62 6c 65 0a  |eLine.#EndTable.|
00073fb0  44 49 52 24 2c 00 00 00  2c 00 00 00 dc 3f 07 00  |DIR$,...,....?..|
00073fc0  46 fd ff ff ba 33 21 a5  6b 00 00 00 13 00 00 00  |F....3!.k.......|
00073fd0  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00073fe0  6b 00 00 00 43 6f 6d 70  72 65 73 73 4a 50 45 47  |k...CompressJPEG|
00073ff0  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
00074000  50 72 65 66 69 78 20 43  6f 6d 70 72 65 73 73 4a  |Prefix CompressJ|
00074010  50 45 47 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |PEG_.#Table Colu|
00074020  6d 6e 73 20 32 0a 53 74  61 72 74 0a 57 72 69 74  |mns 2.Start.Writ|
00074030  65 4c 69 6e 65 0a 46 69  6e 69 73 68 0a 23 45 6e  |eLine.Finish.#En|
00074040  64 54 61 62 6c 65 0a 00  44 49 52 24 44 00 00 00  |dTable..DIR$D...|
00074050  44 00 00 00 8c 40 07 00  46 fd ff ff b4 02 61 f5  |D....@..F.....a.|
00074060  6a 04 00 00 13 00 00 00  00 00 00 00 31 31 00 00  |j...........11..|
00074070  f8 44 07 00 46 fd ff ff  e0 5e 61 f5 75 01 00 00  |.D..F....^a.u...|
00074080  13 00 00 00 00 00 00 00  31 30 00 00 44 41 54 41  |........10..DATA|
00074090  6a 04 00 00 4b 65 79 20  74 72 61 6e 73 69 74 69  |j...Key transiti|
000740a0  6f 6e 20 65 76 65 6e 74  20 28 31 31 29 0a 3d 3e  |on event (11).=>|
000740b0  09 52 30 20 3d 20 31 31  0a 09 52 31 20 3d 20 74  |.R0 = 11..R1 = t|
000740c0  72 61 6e 73 69 74 69 6f  6e 20 76 61 6c 75 65 0a  |ransition value.|
000740d0  09 52 32 20 3d 20 3c 6b  65 79 20 6e 75 6d 62 65  |.R2 = <key numbe|
000740e0  72 3d 3e 2e 6b 65 79 6e  75 6d 62 65 72 3e 0a 0a  |r=>.keynumber>..|
000740f0  54 68 69 73 20 65 76 65  6e 74 20 69 73 20 70 6f  |This event is po|
00074100  6c 6c 65 64 20 77 68 65  6e 20 61 6e 79 20 6b 65  |lled when any ke|
00074110  79 20 69 73 20 70 72 65  73 73 65 64 20 6f 72 20  |y is pressed or |
00074120  72 65 6c 65 61 73 65 64  2e 20 54 72 61 6e 73 69  |released. Transi|
00074130  74 69 6f 6e 20 76 61 6c  75 65 20 69 73 20 30 20  |tion value is 0 |
00074140  77 68 65 6e 20 72 65 6c  65 61 73 65 64 20 61 6e  |when released an|
00074150  64 20 31 20 77 68 65 6e  20 70 72 65 73 73 65 64  |d 1 when pressed|
00074160  2e 0a 23 53 75 62 70 61  67 65 20 6b 65 79 6e 75  |..#Subpage keynu|
00074170  6d 62 65 72 0a 4b 65 79  20 6e 75 6d 62 65 72 73  |mber.Key numbers|
00074180  20 66 6f 72 20 74 72 61  6e 73 69 74 69 6f 6e 73  | for transitions|
00074190  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
000741a0  34 0a 30 20 20 20 45 73  63 61 70 65 0a 31 20 20  |4.0   Escape.1  |
000741b0  20 46 31 0a 32 20 20 20  46 32 0a 33 20 20 20 46  | F1.2   F2.3   F|
000741c0  33 0a 34 20 20 20 46 34  0a 35 20 20 20 46 35 0a  |3.4   F4.5   F5.|
000741d0  36 20 20 20 46 36 0a 37  20 20 20 46 37 0a 38 20  |6   F6.7   F7.8 |
000741e0  20 20 46 38 0a 39 20 20  20 46 39 0a 31 30 20 20  |  F8.9   F9.10  |
000741f0  46 31 30 0a 31 31 20 20  46 31 31 0a 31 32 20 20  |F10.11  F11.12  |
00074200  46 31 32 0a 31 33 20 20  50 72 69 6e 74 0a 31 34  |F12.13  Print.14|
00074210  20 20 53 63 72 6f 6c 6c  20 4c 6f 63 6b 0a 31 35  |  Scroll Lock.15|
00074220  20 20 42 72 65 61 6b 0a  31 36 20 20 7e 0a 31 37  |  Break.16  ~.17|
00074230  20 20 31 0a 31 38 20 20  32 0a 31 39 20 20 33 0a  |  1.18  2.19  3.|
00074240  32 30 20 20 34 0a 32 31  20 20 35 0a 32 32 20 20  |20  4.21  5.22  |
00074250  36 0a 32 33 20 20 37 0a  32 34 20 20 38 0a 32 35  |6.23  7.24  8.25|
00074260  20 20 39 0a 32 36 20 20  30 0a 32 37 20 20 2d 0a  |  9.26  0.27  -.|
00074270  32 38 20 20 3d 0a 32 39  20 20 a3 0a 33 30 20 20  |28  =.29  ..30  |
00074280  5c 3c 2d 7c 0a 33 31 20  20 49 6e 73 65 72 74 0a  |\<-|.31  Insert.|
00074290  33 32 20 20 48 6f 6d 65  0a 33 33 20 20 50 61 67  |32  Home.33  Pag|
000742a0  65 20 55 70 0a 33 34 20  20 4e 75 6d 20 4c 6f 63  |e Up.34  Num Loc|
000742b0  6b 0a 33 35 20 20 4b 20  2f 0a 33 36 20 20 4b 20  |k.35  K /.36  K |
000742c0  2a 0a 33 37 20 20 4b 20  23 0a 33 38 20 20 54 61  |*.37  K #.38  Ta|
000742d0  62 0a 33 39 20 20 51 0a  34 30 20 20 57 0a 34 31  |b.39  Q.40  W.41|
000742e0  20 20 45 0a 34 32 20 20  52 0a 34 33 20 20 54 0a  |  E.42  R.43  T.|
000742f0  34 34 20 20 59 0a 34 35  20 20 55 0a 34 36 20 20  |44  Y.45  U.46  |
00074300  49 0a 34 37 20 20 4f 0a  34 38 20 20 50 0a 34 39  |I.47  O.48  P.49|
00074310  20 20 5b 0a 35 30 20 20  5d 0a 35 31 20 20 5c 0a  |  [.50  ].51  \.|
00074320  35 32 20 20 44 65 6c 65  74 65 0a 35 33 20 20 43  |52  Delete.53  C|
00074330  6f 70 79 0a 35 34 20 20  50 61 67 65 20 64 6f 77  |opy.54  Page dow|
00074340  6e 0a 35 35 20 20 4b 20  37 0a 35 36 20 20 4b 20  |n.55  K 7.56  K |
00074350  38 0a 35 37 20 20 4b 20  39 0a 35 38 20 20 4b 20  |8.57  K 9.58  K |
00074360  2d 0a 35 39 20 20 4c 20  43 74 72 6c 0a 36 30 20  |-.59  L Ctrl.60 |
00074370  20 41 0a 36 31 20 20 53  0a 36 32 20 20 44 0a 36  | A.61  S.62  D.6|
00074380  33 20 20 46 0a 36 34 20  20 47 0a 36 35 20 20 48  |3  F.64  G.65  H|
00074390  0a 36 36 20 20 4a 0a 36  37 20 20 4b 0a 36 38 20  |.66  J.67  K.68 |
000743a0  20 4c 0a 36 39 20 20 3b  0a 37 30 20 20 27 0a 37  | L.69  ;.70  '.7|
000743b0  31 20 20 52 65 74 75 72  6e 0a 37 32 20 20 4b 20  |1  Return.72  K |
000743c0  34 0a 37 33 20 20 4b 20  35 0a 37 34 20 20 4b 20  |4.73  K 5.74  K |
000743d0  36 0a 37 35 20 20 4b 20  2b 0a 37 36 20 20 4c 20  |6.75  K +.76  L |
000743e0  53 68 69 66 74 0a 37 37  20 20 28 55 6e 61 73 73  |Shift.77  (Unass|
000743f0  69 67 6e 65 64 20 3f 29  0a 37 38 20 20 5a 0a 37  |igned ?).78  Z.7|
00074400  39 20 20 58 0a 38 30 20  20 43 0a 38 31 20 20 56  |9  X.80  C.81  V|
00074410  0a 38 32 20 20 42 0a 38  33 20 20 4e 0a 38 34 20  |.82  B.83  N.84 |
00074420  20 4d 0a 38 35 20 20 2c  0a 38 36 20 20 2e 0a 38  | M.85  ,.86  ..8|
00074430  37 20 20 2f 0a 38 38 20  20 52 20 53 68 69 66 74  |7  /.88  R Shift|
00074440  0a 38 39 20 20 55 70 0a  39 30 20 20 4b 20 31 0a  |.89  Up.90  K 1.|
00074450  39 31 20 20 4b 20 32 0a  39 32 20 20 4b 20 33 0a  |91  K 2.92  K 3.|
00074460  39 33 20 20 43 61 70 73  20 4c 6f 63 6b 0a 39 34  |93  Caps Lock.94|
00074470  20 20 4c 20 41 6c 74 0a  39 35 20 20 53 70 61 63  |  L Alt.95  Spac|
00074480  65 0a 39 36 20 20 52 20  41 6c 74 0a 39 37 20 20  |e.96  R Alt.97  |
00074490  52 20 43 74 72 6c 0a 39  38 20 20 4c 65 66 74 0a  |R Ctrl.98  Left.|
000744a0  39 39 20 20 44 6f 77 6e  0a 31 30 30 20 52 69 67  |99  Down.100 Rig|
000744b0  68 74 0a 31 30 31 20 4b  20 30 0a 31 30 32 20 4b  |ht.101 K 0.102 K|
000744c0  20 2e 0a 31 30 33 20 45  6e 74 65 72 0a 31 31 32  | ..103 Enter.112|
000744d0  20 53 65 6c 65 63 74 0a  31 31 33 20 4d 65 6e 75  | Select.113 Menu|
000744e0  0a 31 31 34 20 41 64 6a  75 73 74 0a 23 45 6e 64  |.114 Adjust.#End|
000744f0  54 61 62 6c 65 0a 00 00  44 41 54 41 75 01 00 00  |Table...DATAu...|
00074500  4d 6f 75 73 65 20 62 75  74 74 6f 6e 20 65 76 65  |Mouse button eve|
00074510  6e 74 0a 3d 3e 09 52 30  20 3d 09 31 30 20 28 65  |nt.=>.R0 =.10 (e|
00074520  76 65 6e 74 20 6e 75 6d  62 65 72 29 0a 09 52 31  |vent number)..R1|
00074530  20 3d 09 6d 6f 75 73 65  27 73 20 58 2d 63 6f 6f  | =.mouse's X-coo|
00074540  72 64 69 6e 61 74 65 0a  09 52 32 20 3d 09 6d 6f  |rdinate..R2 =.mo|
00074550  75 73 65 27 73 20 59 2d  63 6f 6f 72 64 69 6e 61  |use's Y-coordina|
00074560  74 65 0a 09 52 33 20 3d  09 3c 62 75 74 74 6f 6e  |te..R3 =.<button|
00074570  20 73 74 61 74 65 3d 3e  2e 73 74 61 74 65 3e 0a  | state=>.state>.|
00074580  09 52 34 20 3d 09 34 20  62 79 74 65 73 20 6f 66  |.R4 =.4 bytes of|
00074590  20 6d 6f 6e 6f 74 6f 6e  69 63 20 63 65 6e 74 69  | monotonic centi|
000745a0  2d 73 65 63 6f 6e 64 20  76 61 6c 75 65 0a 0a 54  |-second value..T|
000745b0  68 69 73 20 65 76 65 6e  74 20 69 73 20 67 65 6e  |his event is gen|
000745c0  65 72 61 74 65 64 20 77  68 65 6e 20 61 20 6d 6f  |erated when a mo|
000745d0  75 73 65 20 62 75 74 74  6f 6e 20 69 73 20 70 72  |use button is pr|
000745e0  65 73 73 65 64 20 6f 72  20 72 65 6c 65 61 73 65  |essed or release|
000745f0  64 2e 0a 23 53 75 62 70  61 67 65 20 73 74 61 74  |d..#Subpage stat|
00074600  65 0a 4d 6f 75 73 65 20  62 75 74 74 6f 6e 20 73  |e.Mouse button s|
00074610  74 61 74 65 73 0a 42 69  74 09 4d 65 61 6e 69 6e  |tates.Bit.Meanin|
00074620  67 0a 23 4c 69 6e 65 0a  30 09 52 69 67 68 74 20  |g.#Line.0.Right |
00074630  62 75 74 74 6f 6e 20 28  41 64 6a 75 73 74 29 0a  |button (Adjust).|
00074640  31 09 4d 69 64 64 6c 65  20 62 75 74 74 6f 6e 20  |1.Middle button |
00074650  28 4d 65 6e 75 29 0a 32  09 4c 65 66 74 20 62 75  |(Menu).2.Left bu|
00074660  74 74 6f 6e 20 28 53 65  6c 65 63 74 29 00 00 00  |tton (Select)...|
00074670  44 49 52 24 30 01 00 00  30 01 00 00 a0 47 07 00  |DIR$0...0....G..|
00074680  46 fd ff ff 61 a1 1e fa  90 00 00 00 13 00 00 00  |F...a...........|
00074690  00 00 00 00 21 52 6f 6f  74 00 00 00 30 48 07 00  |....!Root...0H..|
000746a0  46 ff ff ff cd 99 1a fa  e6 01 00 00 13 00 00 00  |F...............|
000746b0  00 00 00 00 4f 70 65 6e  00 00 00 00 18 4a 07 00  |....Open.....J..|
000746c0  46 ff ff ff b5 70 20 fa  cf 00 00 00 13 00 00 00  |F....p .........|
000746d0  00 00 00 00 53 74 6f 72  65 00 00 00 e8 4a 07 00  |....Store....J..|
000746e0  46 ff ff ff f8 14 1c fa  05 01 00 00 13 00 00 00  |F...............|
000746f0  00 00 00 00 46 65 74 63  68 00 00 00 f0 4b 07 00  |....Fetch....K..|
00074700  46 ff ff ff 0b 5c 1c fa  bf 00 00 00 13 00 00 00  |F....\..........|
00074710  00 00 00 00 45 78 69 73  74 73 00 00 b0 4c 07 00  |....Exists...L..|
00074720  46 ff ff ff 77 98 1c fa  dc 00 00 00 13 00 00 00  |F...w...........|
00074730  00 00 00 00 46 69 72 73  74 4b 65 79 00 00 00 00  |....FirstKey....|
00074740  8c 4d 07 00 46 ff ff ff  26 92 1d fa be 01 00 00  |.M..F...&.......|
00074750  13 00 00 00 00 00 00 00  4e 65 78 74 4b 65 79 00  |........NextKey.|
00074760  4c 4f 07 00 46 ff ff ff  b2 ae 1d fa 5f 00 00 00  |LO..F......._...|
00074770  13 00 00 00 00 00 00 00  43 6c 6f 73 65 00 00 00  |........Close...|
00074780  ac 4f 07 00 46 ff ff ff  c3 c4 1d fa 99 00 00 00  |.O..F...........|
00074790  13 00 00 00 00 00 00 00  44 65 6c 65 74 65 00 00  |........Delete..|
000747a0  44 41 54 41 90 00 00 00  47 64 62 6d 0a 23 50 61  |DATA....Gdbm.#Pa|
000747b0  72 65 6e 74 20 21 52 6f  6f 74 0a 23 50 72 65 66  |rent !Root.#Pref|
000747c0  69 78 20 47 64 62 6d 5f  0a 23 54 61 62 6c 65 20  |ix Gdbm_.#Table |
000747d0  43 6f 6c 75 6d 6e 73 20  32 0a 3c 4f 70 65 6e 3e  |Columns 2.<Open>|
000747e0  0a 3c 53 74 6f 72 65 3e  0a 3c 46 65 74 63 68 3e  |.<Store>.<Fetch>|
000747f0  0a 3c 45 78 69 73 74 73  3e 0a 3c 46 69 72 73 74  |.<Exists>.<First|
00074800  4b 65 79 3e 0a 3c 4e 65  78 74 4b 65 79 3e 0a 3c  |Key>.<NextKey>.<|
00074810  43 6c 6f 73 65 3e 0a 3c  44 65 6c 65 74 65 3e 0a  |Close>.<Delete>.|
00074820  43 6c 65 61 72 0a 23 45  6e 64 54 61 62 6c 65 0a  |Clear.#EndTable.|
00074830  44 41 54 41 e6 01 00 00  47 64 62 6d 5f 4f 70 65  |DATA....Gdbm_Ope|
00074840  6e 0a 23 50 61 72 65 6e  74 20 47 64 62 6d 5f 0a  |n.#Parent Gdbm_.|
00074850  3d 3e 09 52 30 20 3d 09  50 6f 69 6e 74 65 72 20  |=>.R0 =.Pointer |
00074860  74 6f 20 66 69 6c 65 6e  61 6d 65 0a 09 52 31 20  |to filename..R1 |
00074870  3d 09 3c 6f 70 65 6e 20  74 79 70 65 3d 3e 2e 6f  |=.<open type=>.o|
00074880  70 65 6e 74 79 70 65 3e  0a 3c 3d 09 52 30 20 3d  |pentype>.<=.R0 =|
00074890  09 66 69 6c 65 20 68 61  6e 64 6c 65 0a 0a 4f 70  |.file handle..Op|
000748a0  65 6e 73 20 61 20 64 61  74 61 62 61 73 65 20 66  |ens a database f|
000748b0  69 6c 65 2c 20 72 65 74  75 72 6e 69 6e 67 20 74  |ile, returning t|
000748c0  68 65 20 68 61 6e 64 6c  65 20 6f 66 20 74 68 65  |he handle of the|
000748d0  20 66 69 6c 65 20 73 6f  20 74 68 61 74 20 69 74  | file so that it|
000748e0  20 63 61 6e 20 62 65 20  75 73 65 64 20 69 6e 20  | can be used in |
000748f0  6f 74 68 65 72 20 63 61  6c 6c 73 2e 0a 23 53 75  |other calls..#Su|
00074900  62 70 61 67 65 20 6f 70  65 6e 74 79 70 65 0a 47  |bpage opentype.G|
00074910  44 42 4d 20 6f 70 65 6e  20 74 79 70 65 73 0a 56  |DBM open types.V|
00074920  61 6c 75 65 09 4e 61 6d  65 09 09 4d 65 61 6e 69  |alue.Name..Meani|
00074930  6e 67 0a 23 6c 69 6e 65  0a 30 09 47 44 42 4d 5f  |ng.#line.0.GDBM_|
00074940  52 65 61 64 65 72 09 52  65 61 64 20 6f 6e 6c 79  |Reader.Read only|
00074950  0a 31 09 47 44 42 4d 5f  57 72 69 74 65 72 09 52  |.1.GDBM_Writer.R|
00074960  65 61 64 2f 57 72 69 74  65 2c 20 62 75 74 20 64  |ead/Write, but d|
00074970  6f 6e 27 74 20 63 72 65  61 74 65 20 69 66 20 6e  |on't create if n|
00074980  6f 74 20 74 68 65 72 65  0a 32 09 47 44 42 4d 5f  |ot there.2.GDBM_|
00074990  57 52 43 72 65 61 74 09  52 65 61 64 2f 57 72 69  |WRCreat.Read/Wri|
000749a0  74 65 20 61 6e 64 20 63  72 65 61 74 65 20 69 66  |te and create if|
000749b0  20 6e 6f 74 20 74 68 65  72 65 0a 33 09 47 44 42  | not there.3.GDB|
000749c0  4d 5f 4e 65 77 44 42 09  41 6c 77 61 79 73 20 63  |M_NewDB.Always c|
000749d0  72 65 61 74 65 20 61 20  6e 65 77 20 64 61 74 61  |reate a new data|
000749e0  62 61 73 65 0a 0a 49 66  20 31 36 20 69 73 20 61  |base..If 16 is a|
000749f0  64 64 65 64 20 74 68 65  20 66 69 6c 65 20 77 69  |dded the file wi|
00074a00  6c 6c 20 62 65 20 66 61  73 74 20 61 63 63 65 73  |ll be fast acces|
00074a10  73 20 28 3f 29 2e 00 00  44 41 54 41 cf 00 00 00  |s (?)...DATA....|
00074a20  47 64 62 6d 5f 53 74 6f  72 65 0a 23 50 61 72 65  |Gdbm_Store.#Pare|
00074a30  6e 74 20 47 64 62 6d 5f  0a 3d 3e 09 52 30 20 3d  |nt Gdbm_.=>.R0 =|
00074a40  09 66 69 6c 65 20 68 61  6e 64 6c 65 20 66 72 6f  |.file handle fro|
00074a50  6d 20 3c 47 64 62 6d 5f  4f 70 65 6e 3e 0a 09 52  |m <Gdbm_Open>..R|
00074a60  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6b  |1 =.pointer to k|
00074a70  65 79 77 6f 72 64 0a 09  52 32 20 3d 09 6c 65 6e  |eyword..R2 =.len|
00074a80  67 74 68 20 6f 66 20 6b  65 79 77 6f 72 64 0a 09  |gth of keyword..|
00074a90  52 33 20 3d 09 62 75 66  66 65 72 20 66 6f 72 20  |R3 =.buffer for |
00074aa0  64 61 74 61 0a 09 52 34  20 3d 09 6c 65 6e 67 74  |data..R4 =.lengt|
00074ab0  68 20 6f 66 20 64 61 74  61 0a 0a 53 74 6f 72 65  |h of data..Store|
00074ac0  73 20 64 61 74 61 20 75  6e 64 65 72 20 61 20 6b  |s data under a k|
00074ad0  65 79 77 6f 72 64 20 69  6e 20 74 68 65 20 64 61  |eyword in the da|
00074ae0  74 61 62 61 73 65 2e 00  44 41 54 41 05 01 00 00  |tabase..DATA....|
00074af0  47 64 62 6d 5f 46 65 74  63 68 0a 23 50 61 72 65  |Gdbm_Fetch.#Pare|
00074b00  6e 74 20 47 64 62 6d 5f  0a 3d 3e 09 52 30 20 3d  |nt Gdbm_.=>.R0 =|
00074b10  09 66 69 6c 65 20 68 61  6e 64 6c 65 20 66 72 6f  |.file handle fro|
00074b20  6d 20 3c 47 64 62 6d 5f  4f 70 65 6e 3e 0a 09 52  |m <Gdbm_Open>..R|
00074b30  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6b  |1 =.pointer to k|
00074b40  65 79 77 6f 72 64 0a 09  52 32 20 3d 09 6c 65 6e  |eyword..R2 =.len|
00074b50  67 74 68 20 6f 66 20 6b  65 79 77 6f 72 64 0a 09  |gth of keyword..|
00074b60  52 33 20 3d 09 62 75 66  66 65 72 20 66 6f 72 20  |R3 =.buffer for |
00074b70  64 61 74 61 0a 09 52 34  20 3d 09 6c 65 6e 67 74  |data..R4 =.lengt|
00074b80  68 20 6f 66 20 62 75 66  66 65 72 0a 3c 3d 09 52  |h of buffer.<=.R|
00074b90  30 20 3d 09 6c 65 6e 67  74 68 20 6f 66 20 64 61  |0 =.length of da|
00074ba0  74 61 20 72 65 61 64 2c  20 6f 72 20 3c 30 20 69  |ta read, or <0 i|
00074bb0  66 20 6b 65 79 20 6e 6f  74 20 66 6f 75 6e 64 0a  |f key not found.|
00074bc0  0a 53 74 6f 72 65 73 20  64 61 74 61 20 75 6e 64  |.Stores data und|
00074bd0  65 72 20 61 20 6b 65 79  77 6f 72 64 20 69 6e 20  |er a keyword in |
00074be0  74 68 65 20 64 61 74 61  62 61 73 65 2e 00 00 00  |the database....|
00074bf0  44 41 54 41 bf 00 00 00  47 64 62 6d 5f 45 78 69  |DATA....Gdbm_Exi|
00074c00  73 74 73 0a 23 50 61 72  65 6e 74 20 47 64 62 6d  |sts.#Parent Gdbm|
00074c10  5f 0a 3d 3e 09 52 30 20  3d 09 66 69 6c 65 20 68  |_.=>.R0 =.file h|
00074c20  61 6e 64 6c 65 20 66 72  6f 6d 20 3c 47 64 62 6d  |andle from <Gdbm|
00074c30  5f 4f 70 65 6e 3e 0a 09  52 31 20 3d 09 70 6f 69  |_Open>..R1 =.poi|
00074c40  6e 74 65 72 20 74 6f 20  6b 65 79 77 6f 72 64 0a  |nter to keyword.|
00074c50  09 52 32 20 3d 09 6c 65  6e 67 74 68 20 6f 66 20  |.R2 =.length of |
00074c60  6b 65 79 77 6f 72 64 0a  3c 3d 09 52 30 20 3d 09  |keyword.<=.R0 =.|
00074c70  31 20 69 66 20 6b 65 79  20 65 78 69 73 74 73 2c  |1 if key exists,|
00074c80  20 30 20 6f 74 68 65 72  77 69 73 65 0a 0a 43 68  | 0 otherwise..Ch|
00074c90  65 63 6b 73 20 77 68 65  74 68 65 72 20 61 20 6b  |ecks whether a k|
00074ca0  65 79 77 6f 72 64 20 65  78 69 73 74 73 2e 0a 00  |eyword exists...|
00074cb0  44 41 54 41 dc 00 00 00  47 64 62 6d 5f 46 69 72  |DATA....Gdbm_Fir|
00074cc0  73 74 4b 65 79 0a 23 50  61 72 65 6e 74 20 47 64  |stKey.#Parent Gd|
00074cd0  62 6d 5f 0a 3d 3e 09 52  30 20 3d 09 66 69 6c 65  |bm_.=>.R0 =.file|
00074ce0  20 68 61 6e 64 6c 65 20  66 72 6f 6d 20 3c 47 64  | handle from <Gd|
00074cf0  62 6d 5f 4f 70 65 6e 3e  0a 09 52 31 20 3d 09 70  |bm_Open>..R1 =.p|
00074d00  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
00074d10  0a 09 52 32 20 3d 09 6c  65 6e 67 74 68 20 6f 66  |..R2 =.length of|
00074d20  20 62 75 66 66 65 72 0a  3c 3d 09 52 30 20 3d 09  | buffer.<=.R0 =.|
00074d30  6c 65 6e 67 74 68 20 6f  66 20 6b 65 79 77 6f 72  |length of keywor|
00074d40  64 2c 20 6f 72 20 2d 31  20 69 66 20 6e 6f 20 6b  |d, or -1 if no k|
00074d50  65 79 77 6f 72 64 73 20  65 78 69 73 74 0a 0a 52  |eywords exist..R|
00074d60  65 74 75 72 6e 73 20 74  68 65 20 66 69 72 73 74  |eturns the first|
00074d70  20 6b 65 79 77 6f 72 64  20 66 72 6f 6d 20 74 68  | keyword from th|
00074d80  65 20 64 61 74 61 62 61  73 65 2e 0a 44 41 54 41  |e database..DATA|
00074d90  be 01 00 00 47 64 62 6d  5f 4e 65 78 74 4b 65 79  |....Gdbm_NextKey|
00074da0  0a 23 50 61 72 65 6e 74  20 47 64 62 6d 5f 0a 3d  |.#Parent Gdbm_.=|
00074db0  3e 09 52 30 20 3d 09 66  69 6c 65 20 68 61 6e 64  |>.R0 =.file hand|
00074dc0  6c 65 20 66 72 6f 6d 20  3c 47 64 62 6d 5f 4f 70  |le from <Gdbm_Op|
00074dd0  65 6e 3e 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |en>..R1 =.pointe|
00074de0  72 20 74 6f 20 6c 61 73  74 20 6b 65 79 77 6f 72  |r to last keywor|
00074df0  64 0a 09 52 32 20 3d 09  6c 65 6e 67 74 68 20 6f  |d..R2 =.length o|
00074e00  66 20 6b 65 79 77 6f 72  64 0a 09 52 33 20 3d 09  |f keyword..R3 =.|
00074e10  70 6f 69 6e 74 65 72 20  74 6f 20 62 75 66 66 65  |pointer to buffe|
00074e20  72 0a 09 52 34 20 3d 09  6c 65 6e 67 74 68 20 6f  |r..R4 =.length o|
00074e30  66 20 62 75 66 66 65 72  0a 3c 3d 09 52 30 20 3d  |f buffer.<=.R0 =|
00074e40  09 6c 65 6e 67 74 68 20  6f 66 20 6b 65 79 77 6f  |.length of keywo|
00074e50  72 64 2c 20 6f 72 20 2d  31 20 69 66 20 6e 6f 20  |rd, or -1 if no |
00074e60  6b 65 79 77 6f 72 64 73  20 65 78 69 73 74 0a 0a  |keywords exist..|
00074e70  52 65 74 75 72 6e 73 20  74 68 65 20 6e 65 78 74  |Returns the next|
00074e80  20 6b 65 79 77 6f 72 64  20 66 72 6f 6d 20 74 68  | keyword from th|
00074e90  65 20 64 61 74 61 62 61  73 65 2e 0a 0a 4e 4f 54  |e database...NOT|
00074ea0  45 3a 20 4b 65 79 77 6f  72 64 73 20 61 72 65 20  |E: Keywords are |
00074eb0  6f 72 64 65 72 65 64 20  69 6e 20 61 20 68 61 73  |ordered in a has|
00074ec0  68 20 74 61 62 6c 65 20  6f 72 64 65 72 2e 20 54  |h table order. T|
00074ed0  68 69 73 20 69 73 20 6e  6f 74 20 6e 65 63 65 73  |his is not neces|
00074ee0  73 61 72 69 6c 79 20 61  6c 70 68 61 62 65 74 69  |sarily alphabeti|
00074ef0  63 2c 20 61 6e 64 20 73  68 6f 75 6c 64 20 6e 6f  |c, and should no|
00074f00  74 20 62 65 20 72 65 6c  69 65 64 20 6f 6e 20 69  |t be relied on i|
00074f10  66 20 3c 47 64 62 6d 5f  44 65 6c 65 74 65 3e 20  |f <Gdbm_Delete> |
00074f20  69 73 20 63 61 6c 6c 65  64 20 69 6e 20 74 68 65  |is called in the|
00074f30  20 6d 69 64 73 74 20 6f  66 20 61 20 4e 65 78 74  | midst of a Next|
00074f40  4b 65 79 20 6c 6f 6f 70  2e 0a 00 00 44 41 54 41  |Key loop....DATA|
00074f50  5f 00 00 00 47 64 62 6d  5f 43 6c 6f 73 65 0a 23  |_...Gdbm_Close.#|
00074f60  50 61 72 65 6e 74 20 47  64 62 6d 5f 0a 3d 3e 09  |Parent Gdbm_.=>.|
00074f70  52 30 20 3d 09 66 69 6c  65 20 68 61 6e 64 6c 65  |R0 =.file handle|
00074f80  20 66 72 6f 6d 20 3c 47  64 62 6d 5f 4f 70 65 6e  | from <Gdbm_Open|
00074f90  3e 0a 0a 43 6c 6f 73 65  73 20 61 20 64 61 74 61  |>..Closes a data|
00074fa0  62 61 73 65 20 66 69 6c  65 2e 0a 00 44 41 54 41  |base file...DATA|
00074fb0  99 00 00 00 47 64 62 6d  5f 44 65 6c 65 74 65 0a  |....Gdbm_Delete.|
00074fc0  23 50 61 72 65 6e 74 20  47 64 62 6d 5f 0a 3d 3e  |#Parent Gdbm_.=>|
00074fd0  09 52 30 20 3d 09 66 69  6c 65 20 68 61 6e 64 6c  |.R0 =.file handl|
00074fe0  65 20 66 72 6f 6d 20 3c  47 64 62 6d 5f 4f 70 65  |e from <Gdbm_Ope|
00074ff0  6e 3e 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |n>..R1 =.pointer|
00075000  20 74 6f 20 6c 61 73 74  20 6b 65 79 77 6f 72 64  | to last keyword|
00075010  0a 09 52 32 20 3d 09 6c  65 6e 67 74 68 20 6f 66  |..R2 =.length of|
00075020  20 6b 65 79 77 6f 72 64  0a 0a 44 65 6c 65 74 65  | keyword..Delete|
00075030  73 20 74 68 65 20 73 70  65 63 69 66 69 65 64 20  |s the specified |
00075040  6b 65 79 2e 0a 00 00 00                           |key.....|
00075048